在keras中添加加权的mse损失函数

时间:2019-08-26 15:59:48

标签: tensorflow

根据文档,我在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 ...

0 个答案:

没有答案