【发布时间】:2019-11-17 07:03:42
【问题描述】:
我想开发一个具有三个输入 pos、anc、neg 和三个输出 pos_out、anc_out、neg_out 的神经网络。在 keras 中计算自定义损失函数中的损失时,我想访问 y_pred 中的 pos_out、anc_out、neg_out。我可以整体访问 y_pred。但是如何访问单个部分 pos_out、anc_out 和 neg_out
我已将 max 函数应用于 y_pred。它正确计算最大值。如果我只将模型中的一个输出作为 Model(input=[pos,anc,neg], output=pos_out) 传递,那么它也会正确计算最大值。但是当在自定义函数中分别访问pos_out、anc_out和neg_out的最大值时,它就不起作用了。
def testmodel(input_shape):
pos = Input(shape=(14,300))
anc = Input(shape=(14,300))
neg = Input(shape=(14,300))
model = Sequential()
model.add(Flatten(batch_input_shape=(1,14,300)))
pos_out = model(pos)
anc_out = model(anc)
neg_out = model(neg)
model = Model(input=[pos,anc,neg], output=[pos_out,anc_out,neg_out])
return model
def customloss(y_true,y_pred):
print((K.int_shape(y_pred)[1]))
#loss = K.max((y_pred))
loss = K.max[pos_out]
return loss
【问题讨论】:
-
您的模型中没有任何可训练的层...