tensorflow2.0是否仍然具有参数'trainable'?

时间:2019-08-26 14:44:45

标签: python tensorflow tensorboard tensorflow2.0

在tensorboard中我找不到像tensorflow1.X一样用于更新参数的渐变操作。

并且在keras api中找不到参数“ trainable”。

如果tf2.0仍然可以在张量板上显示渐变操作,如何将其添加到我的张量板上。

ps.my张量流版本为2.0-rc0。

这是我的代码来向tensorboard文件添加一些东西。

subprocess.call("ls -l", shell=False)
# raises OSError
subprocess.call("ls -l", shell=True)
# returns the directories and files in long format

1 个答案:

答案 0 :(得分:1)

  

tensorflow2.0仍然具有参数'trainable'吗?

在keras中,确定哪些变量是可训练的是构成model的层的责任。开箱即用的图层有无数个,但是这里是一个简单的密集层实现,目的是说明一些可训练变量的使用


class MyLayer(tf.keras.layers.Layer):
  def __init__(self, units=8, input_dim=8):
    super(MyLayer,self).__init__()
    self.w = tf.Variable(initial_value=tf.random_normal_initializer()(shape=(input_dim, units)),
                              trainable=True)
    self.b = tf.Variable(initial_value=tf.zeros_initializer()(shape=(units,)),
                           trainable=True)

  def call(self, inputs):
    return tf.matmul(inputs, self.w) + self.b


例如,您可以在像这样的keras模型中使用它:

my_layer = MyLayer(units=8,input_dim=2)
my_model = tf.keras.models.Sequential([
    my_layer
])
my_model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.binary_crossentropy)

当然最好在实践中使用开箱即用的tf.keras.layers.Dense,这只是为了说明可训练的变量my_layer.wmy_layer.b