我有一个具有多个输出的模型。我想为每个损失函数和度量分配不同的标签。代码如下所示:
input_img = Input(shape=(n_states,n_features))
x = Conv1D(32, kernel_size=5, activation='relu', padding='same')(input_img)
x = Conv1D(32, kernel_size=5, activation='relu', padding='same')(x)
x = Conv1D(32, kernel_size=5, activation='relu', padding='same')(x)
decoded = Conv1D(n_outputs, kernel_size=3, activation='linear', padding='same')(x)
model = Model(inputs=input_img, outputs=[decoded,decoded])
model.compile(loss={'regression': 'mean_squared_error',
'diffusion': 'mean_absolute_error'},
loss_weights={'regression': 1.0,
'diffusion': 0.5},
optimizer='adam',
metrics={'regression': coeff_determination,
'diffusion': coeff_determination})
model.summary()
history_callback = model.fit(x_train,
{'regression': y_train, 'diffusion': y_train},
batch_size=batch_size,
epochs=epochs,
validation_data= (x_valid, {'regression': y_valid, 'diffusion': y_valid}),
verbose=1)
如果我运行上面的模型,我会在丢失字典中得到一个未知条目的错误。具体来说,错误是Unknown entries in loss dictionary: ['diffusion', 'regression']. Only expected following keys: ['conv1d_4', 'conv1d_4']
如何为每个损失函数指定不同的名称?多谢各位
您需要将输出的名称与丢失字典键匹配。在这里,您没有命名输出,因此它们在名称空间中默认为
conv1d_4
。尝试:我把你的产量增加了一倍,因为我认为你不能对同一产量施加两种不同的损失
下面是一个匹配输出/丢失字典键的最小示例:
请注意,丢失字典键与输出键匹配。度量、损失权重、验证数据等也应如此
相关问题 更多 >
编程相关推荐