簡體   English   中英

tensorflow2.0 是否還有參數“可訓練”?

[英]Does tensorflow2.0 still have parameter 'trainable'?

在張量板中,我找不到可以像 tensorflow1.X 一樣更新我的參數的梯度操作。

並且不要在 keras api 中找到參數“可訓練”。

如果 tf2.0 仍然可以在張量板中顯示漸變操作,我該如何將其添加到我的張量板中。

ps.我的 tensorflow 版本是 2.0-rc0。

這是我向張量板文件添加內容的代碼。

logdir = "testlogs"
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=logdir)
.....
model.fit(x=train_x, y=train_y,
      batch_size=256,
      epochs=6,
      shuffle=True,
      callbacks=[tensorboard_callback])

tensorflow2.0 是否還有參數“可訓練”?。

在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM