【发布时间】:2021-04-19 16:10:25
【问题描述】:
我有一个 simpleRNN / LSTM,我正在尝试使用 tensorflow 对顺序分类任务进行训练。有一个数据序列(300 个时间步长)可以预测 t=300 的标签。对于我的任务,我希望 RNN 在每个时间步(不仅仅是在最终时间点)评估错误并将其向后传播(如下图)。
在下面的一些回复之后,我似乎需要做一些事情:使用 return_sequences 标志;使用 TimeDistributed 层访问 LSTM/RNN 的输出;并且还定义了一个自定义的损失函数。
model = Sequential()
layer1 = LSTM(n_neurons, input_shape=(length, 1), return_sequences=True)
model.add(layer1)
layer2 = TimeDistributed(Dense(1))
model.add(layer2)
# Define custom loss
def custom_loss(layer1):
# Create a loss function
def loss(y_true,y_pred):
# access layer1 at every time point and compute mean error
# UNCLEAR HOW TO RUN AT EVERY TIME STEP
err = K.mean(layer1(X) - y_true, axis=-1)
return err
# Return a function
return loss
# Compile the model
model.compile(optimizer='adam', loss=custom_loss(layer), metrics=['accuracy'])
现在我对 custom_loss 函数有点困惑,因为我不清楚如何传入 layer1 并计算最里面的损失函数中的错误。
任何人有建议或可以指点我更详细的答案?
【问题讨论】:
标签: tensorflow recurrent-neural-network prediction backpropagation