Python tf.layers.dense和tf.nn.xw_plus_b之间的差异
Python tf.layers.dense和tf.nn.xw_plus_b之间的差异,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,tf.layers.density和tf.nn.xw_plus_b中的tf.nn.xw_plus_b之间有什么区别? 当“activation”参数作为None传递时,tf.layers.dense中使用的默认激活是什么 tf.nn.xw_plus_b是一种低级操作,只计算x*W+b,需要现有变量 tf.layers.dense是一个创建变量的高级“层”,应用激活可以设置约束并应用正则化 根据默认情况,激活是线性的(无激活) 激活:激活功能(可调用)。将其设置为“无”以进行维护 线性激活 更新
tf.layers.density
和tf.nn.xw_plus_b
中的tf.nn.xw_plus_b
之间有什么区别?
当“activation”参数作为
None
传递时,tf.layers.dense
中使用的默认激活是什么 tf.nn.xw_plus_b
是一种低级操作,只计算x*W+b
,需要现有变量
tf.layers.dense
是一个创建变量的高级“层”,应用激活可以设置约束并应用正则化
根据默认情况,激活是线性的(无激活)
激活:激活功能(可调用)。将其设置为“无”以进行维护
线性激活
更新
在Tensorflow 1.12Dense
中,层继承了keras.layers.Dense
():
@tf\u导出('layers.Dense'))
类密(keras_层密,基层):
此层的Keras实现执行以下操作():
def调用(自身,输入):
inputs=ops.convert_to_tensor(inputs,dtype=self.dtype)
秩=常用形状。秩(输入)
如果排名>2:
#输入需要广播。
输出=standard_ops.tensordot(输入,self.kernel,[[rank-1],[0]])
#将输出重塑为输入的原始ndim。
如果不是上下文。急切地执行_():
形状=输入。获取形状()。作为列表()
输出形状=形状[:-1]+[self.units]
输出。设置_形状(输出_形状)
其他:
输出=gen_math_ops.mat_mul(输入,self.kernel)
如果使用self.u偏差:
输出=nn.bias\u add(输出,自偏置)
如果self.activation不是None:
返回自激活(输出)#pylint:disable=不可调用
返回输出
因此,它不是使用tf.nn.xw_plus_b
实现的,而是使用两个单独的操作
为了回答您的问题:
densite
没有激活的层,约束和正则化应该与tf.nn.xw_plus_b
相同,我需要为我的问题替换一个更密集的层。没有激活的密集层,它会与xw_plus_b(功能方面)类似吗。用xw_plus_b替换稠密是否明智?我同意xw_plus_b需要外部变量,一旦将所有必要的变量传递给它,它的行为是否会类似于没有激活的稠密?