【发布时间】:2020-12-28 00:05:24
【问题描述】:
我有以下型号
def get_model():
epochs = 100
learning_rate = 0.1
decay_rate = learning_rate / epochs
inp = keras.Input(shape=(64, 101, 1), name="inputs")
x = layers.Conv2D(128, kernel_size=(3, 3), strides=(3, 3), padding="same")(inp)
x = layers.Conv2D(256, kernel_size=(3, 3), strides=(3, 3), padding="same")(x)
x = layers.Flatten()(x)
x = layers.Dense(150)(x)
x = layers.Dense(150)(x)
out1 = layers.Dense(40000, name="sf_vec")(x)
out2 = layers.Dense(128, name="ls_weights")(x)
model = keras.Model(inp, [out1, out2], name="2_out_model")
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=decay_rate), # in caso rimettere 0.001
loss="mean_squared_error")
keras.utils.plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)
model.summary()
return model
也就是说,我想根据第一个输出的损失和第二个输出的损失的“混合”来训练我的神经网络。 我以这种方式训练我的神经网络:
model.fit(x_train, [sf_train, ls_filters_train], epochs=10)
例如,在训练期间,如下所示: 纪元 10/10 -> 损失:0.0702 - sf_vec_loss:0.0666 - ls_weights_loss:0.0035
我想知道“损失”是否几乎是 sf_vec_loss 和 ls_weights_loss 之间的总和,或者 keras 是否真的以这种方式推理。 此外,网络是否仅针对“损失”进行训练? 提前谢谢你:)
【问题讨论】:
标签: python tensorflow keras neural-network conv-neural-network