"PackageA v1.2.0"
中的tf.layers.dense
和tf.nn.xw_plus_b
有什么区别?
当将“激活”参数作为TF
传递时,tf.layers.dense
中使用的默认激活是什么?
答案 0 :(得分:5)
tf.nn.xw_plus_b
是仅计算x*W+b
且需要现有变量的低级操作。
tf.layers.dense
是一个高级“层”,它创建变量,应用激活可以设置约束并应用正则化。
根据documentation的默认激活是线性的(无激活)。
激活:激活功能(可调用)。设置为None即可维护 线性激活。
更新
在Tensorflow 1.12 Dense
层中继承keras.layers.Dense
(code):
@tf_export('layers.Dense')
class Dense(keras_layers.Dense, base.Layer):
此层的Keras实现执行以下操作(code):
def call(self, inputs):
inputs = ops.convert_to_tensor(inputs, dtype=self.dtype)
rank = common_shapes.rank(inputs)
if rank > 2:
# Broadcasting is required for the inputs.
outputs = standard_ops.tensordot(inputs, self.kernel, [[rank - 1], [0]])
# Reshape the output back to the original ndim of the input.
if not context.executing_eagerly():
shape = inputs.get_shape().as_list()
output_shape = shape[:-1] + [self.units]
outputs.set_shape(output_shape)
else:
outputs = gen_math_ops.mat_mul(inputs, self.kernel)
if self.use_bias:
outputs = nn.bias_add(outputs, self.bias)
if self.activation is not None:
return self.activation(outputs) # pylint: disable=not-callable
return outputs
因此,它不是使用tf.nn.xw_plus_b
实现的,而是使用了两个单独的操作。
要回答您的问题:没有激活的Dense
层,约束和正则化应与tf.nn.xw_plus_b
相同。