根据文档,我在Keras中建立了加权的mse损失函数。但是,权重“ Pz”是模型的附加输入,与其他输入完全无关。我不知道怎么把它传递给fit命令
def weighted_mse(weight):
def loss(y_true, y_pred):
tmp = K.square(y_true-y_pred)
return K.sum(tmp*weight) / K.sum(weight)
return loss
model = Sequential()
model.add(LSTM(nbin*2, return_sequences=True, input_shape=(None, nbin)))
model.add(Dense(nbin*2))
model.add(Activation('relu'))
model.add(Dense(nbin))
model.add(Activation('sigmoid'))
Pz = Input(shape=(nbin,))
model.compile(loss=weighted_mse(Pz), optimizer='adam')
model.fit([p_evd, Pz], p_opt, batch_size=nfram)
此代码在编译过程中出现以下错误:
ValueError:检查模型输入时出错:Numpy数组的列表 您传递给模型的信息不是模型期望的大小。 预计将看到1个数组,但得到以下2个列表 数组:[array([[[[3.299e-01,1.782e-01,4.603e-02,...,1.454e-02, 6.400e-03、2.321e-03], [5.506e-01,2.307e-01,1.520e-02,...,1.874e-03,5.343e-03,4.138e-03], [8.565e-03,1.696e-01,2.259e ...