[英]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.