tensorflow中Dense函数的具体使用

作者:一穷二白到年薪百万 时间:2021-04-26 17:01:49 

1 作用

注意此处Tensorflow版本是2.0+。
由于本人是Pytorch用户,对Tensorflow不是很熟悉,在读到用tf写的代码时就很是麻烦。如图所示,遇到了如下代码:

h = Dense(units=adj_dim, activation=None)(dec_in)

Dense层就是全连接层,对于层方式的初始化的时候,layers.Dense(units,activation)函数一般只需要指定输出节点数Units和激活函数类型即可。输入节点数将根据第一次运算时输入的shape确定,同时输入、输出节点自动创建并初始化权值w和偏置向量b。

下面是Dense的接口

Dense(units,
 activation=None, 
 use_bias=True, 
 kernel_initializer='glorot_uniform', 
 bias_initializer='zeros', 
 kernel_regularizer=None, 
 bias_regularizer=None, 
 activity_regularizer=None, 
 kernel_constraint=None, bias_constraint=None)

units, 代表该层的输出维度
activation=None, 激活函数.但是默认 liner
use_bias=True, 是否使用b 直线 y=ax+b 中的 b

此处没有写 iuput 的情况, 通常会有两种写法:

1 : Dense(units,input_shape())

2 : Dense(units)(x) #这里的 x 是以张量.

Dense( n )( x ) : = ReLU ( W x + b )

W 是权重函数, Dense() 会随机给 W 一个初始值。所以这里跟Pytorch的nn.linear()一样。

2 例子

# 使用第一种方法进行初始化
# 作为 Sequential 模型的第一层,需要指定输入维度。可以为 input_shape=(16,) 或者 input_dim=16,这两者是等价的。
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
# 现在模型就会以尺寸为 (*, 16) 的数组作为输入,
# 其输出数组的尺寸为 (*, 32)

# 在第一层之后,就不再需要指定输入的尺寸了:
model.add(Dense(32))

3 与torch.nn.Linear的区别


# Pytorch实现
trd = torch.nn.Linear(in_features = 3, out_features = 30)
y = trd(torch.ones(5, 3))
print(y.size())
# torch.Size([5, 30])

# Tensorflow实现
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(30, input_shape=(5,), activation=None))
————————————————————————————————————
tfd = tf.keras.layers.Dense(30, input_shape=(3,), activation=None)
x = tfd(tf.ones(shape=(5, 3)))
print(x.shape)
# (5, 30)

上面Tensorflow的实现方式相同,但是我存在疑惑

4 参考文献

[1]dense层、激活函数、输出层设计
[2]Dense(units, activation=None,)初步
[3]深入理解 keras 中 Dense 层参数
[4]tensorflow - Tensorflow 的 tf.keras.layers.Dense 和 PyTorch 的 torch.nn.Linear 的区别?

来源:https://blog.csdn.net/zfhsfdhdfajhsr/article/details/128950106

标签:tensorflow,Dense
0
投稿

猜你喜欢

  • php之二维数组排序问题

    2023-07-15 06:44:42
  • python脚本第一行如何写

    2021-03-24 22:56:32
  • 瞬间的快感之细节提升用户满意度

    2010-11-17 19:19:00
  • 微信小程序request请求后台接口php的实例详解

    2023-11-11 14:24:04
  • Python教程之类型转换详解

    2021-03-23 02:48:17
  • 如何利用python写GUI及生成.exe可执行文件

    2023-06-26 00:42:57
  • PHP结构型模式之外观模式

    2023-05-25 11:43:14
  • asp+XMLHTTP的国际域名查询系统(whois)源代码

    2008-02-16 09:23:00
  • 通过实例学习Python Excel操作

    2021-01-21 21:55:12
  • 菜鸟课堂:MySQL权限的详细解答

    2009-09-03 11:43:00
  • Python3之外部文件调用Django程序操作model等文件实现方式

    2023-07-19 01:17:29
  • Qt Quick QML-500行代码实现合成大西瓜游戏

    2023-09-22 22:13:07
  • 比较SQL Server约束和DML触发器

    2008-12-24 15:54:00
  • 对Django 转发和重定向的实例详解

    2023-06-19 04:17:53
  • 巧用JDBC实现对MySQL的“增删改查”

    2008-12-31 15:12:00
  • Python的Flask框架中@app.route的用法教程

    2022-05-14 07:25:19
  • ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页

    2011-04-06 10:50:00
  • PHP中PDO事务处理操作示例

    2023-11-21 14:54:12
  • 在CentOS 6 中安装WordPress(一) 安装Apache,Mysql, PHP环境

    2023-11-06 17:41:24
  • Python与数据库的交互问题小结

    2021-11-14 11:46:47
  • asp之家 网络编程 m.aspxhome.com