簡體   English   中英

Keras:多路輸出,一個output作為同一網絡的輸入

[英]Keras: Multiple outputs, one output as input in the same network

我有一個有兩個輸出的神經網絡,第二個 output 有第一個 output 作為輸入。

我猜在訓練期間,第一個輸出的權重將被訓練兩次。 那樣行嗎?
有沒有什么辦法可以防止 output 一個會從 output 兩個訓練出來?

這里有一個例子,output 一個是一個動作,第二個 output 是一個依賴於輸入和第一個動作的子動作。

input_tensor = Input(shape=(2, ))

# Create the first output
output_1_action = Dense(10)(input_tensor)

# Create the second output(use the first output as input here)
x = Concatenate([input_tensor, output_1_action])
output_2_subaction = Dense(10)(x)

# Create a model with 2 outputs
model = Model(input_tensor, [output_1_action, output_2_subaction])

對於這個簡單的例子,我可以使用兩個網絡,但我的 model 使用 lstm 層,我想保留一個 state 和一個神經網絡。

我不能完全理解您要做什么,但是通過自定義訓練循環,您可以實現所有可能的事情,並且 Tensorflow 會自動為您繪制梯度圖。 如果您想要更精確的解決方案,請詳細說明您的 model。

def train_step():
  with tf.GradientTape() as tape:
      out1, out2 = model(data)

      out3, out4 = model(out1)

      loss = tf.keras.losses.mse(...)

  gradients = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(gradients, model.trainable_variables))

暫無
暫無

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

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