【发布时间】:2018-05-11 15:34:25
【问题描述】:
您好,我一直在尝试在 keras 中实现损失函数。但是我无法想出一种方法来传递除 loss(y_true, y_predict) 之外的超过 2 个参数,所以我想使用 lambda 层作为最后一层并在 lambda 层 itslef 中进行计算并简单地返回 y_predict 的值在这样的损失函数中
def loss_function(x):
loss = some calculations
return loss
def dummy_loss(y_true, y_pred):
return y_pred
def primary_network():
global prim_binary_tensor
x = VGG16(weights='imagenet', include_top=True, input_shape=image_shape)
last_layer = Dense(k_bit, activation='tanh', name='Dense11')(x.layers[-1].output)
last_layer, x = basic_model()
lambda_layer = Lambda(loss_function)([last_layer, prim_binary_tensor])
model = Model(inputs=[x.input, prim_binary_tensor], outputs=[lambda_layer])
model.compile(optimizer="adam", loss=dummy_loss,metrics=['accuracy'])
return model
所以我的问题是:
1) 我计算损失的方法是否正确?是否保证每张图片(input_data)都会调用lambda层函数?
2) 有人可以建议我如何将多个参数传递给损失函数吗?
3) 损失函数的最终结果可以是标量还是必须是向量或矩阵?
【问题讨论】:
标签: python tensorflow keras