开发者

tensorflow中Dense函数的具体使用

目录
  • 1 作用
  • 2 例子
  • 3 与torch.nn.Linear的区别
  • 4 参考文献

1 作用

注意此处Tensorflow版本是2.0+。

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

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.Denhttp://www.devze.comse(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 的区别?

到此这篇关于tensorflow中Dense函数的具体使用的文章就介绍到这了,更多相关tensorflow De开发者_JAV培训nse函数内编程客栈容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜