喀拉拉邦的占位符?

时间:2019-08-11 21:36:01

标签: keras

cost=keras.losses.mean_squared_error(fin_out[:,:1000,:],epoch_y[:,:1000,:])

所以我要这样定义fin_out:

fin_out=keras.activations.sigmoid(rnn_out)

model = Model(inputs=main_input, outputs=rnn_out)

rnn_out=keras.layers.Dense(513,
    kernel_initializer='glorot_uniform',activation='sigmoid')(output)

rnn_out是我最后一层的输出。

epoch_y是在我的纪元和训练循环内生成的基本事实数组。

所以当我写:model.compile(optimizer=optimizer,loss=cost)

epoch_y迭代生成的循环之外。它说epoch_y没有定义,当然必须说。

那么如何解决这个问题?

我们可以定义一个与epoch_y相同维度的占位符,并将其放入成本中,然后将epoch_y分配给该占位符。

那么我们如何在keras中做那个占位符呢?

或其他任何建议?

感谢与问候

1 个答案:

答案 0 :(得分:0)

model.compile(optimizer=optimizer, loss=cost)中,cost应该是callable,基本上是一个以y_truey_pred作为参数的函数,请参见here

所以您需要给cost=keras.lossses.mean_squared_error

如果要提供自定义损失函数,则应这样做:

def custom_squared_error(y_true, y_pred):
    return keras.losses.mean_squared_error(y_true[:, :1000, :], y_pred[:, :1000, :])

# use custom function for loss 
model.compile(optimizer=optimizer, loss=custom_squared_error)