我有一个时间序列数据集,我用它作为LSTM-RNN的输入,用于行动预期.时间序列包括30fps(即150个数据点)的5秒时间,并且数据表示面部特征的位置/移动.
我从我的数据集中采样较小长度的其他子序列,以便在数据集中添加冗余并减少过度拟合.在这种情况下,我知道子序列的开始和结束帧.
为了批量训练模型,所有时间序列需要具有相同的长度,并且根据文献中的许多论文填充不应该影响网络的性能.
例:
原始序列:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
子序列:
4 5 6 7
8 9 10
2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
考虑到我的网络正在试图预测一个动作(意味着一旦P(动作)>阈值从t = 0变为T = tmax,它将预测该动作)填充的位置是否重要?
选项1:零替换原始值
0 0 0 4 5 6 7 0 0 0
0 0 0 0 0 0 0 8 9 10
0 2 3 4 5 6 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
选项2:最后全部为零
4 5 6 7 0 0 0 0 0 0
8 …
Run Code Online (Sandbox Code Playgroud) machine-learning padding deep-learning lstm recurrent-neural-network
编译模型然后保存。然后在加载模型时出错。
def triplet_loss(y_true, y_pred, alpha = 0.3):
anchor, positive, negative = y_pred[0], y_pred[1], y_pred[2]
pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), axis=-1)
neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), axis=-1)
basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha)
loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0))
return loss
FRmodel.compile(optimizer = 'adam', loss = triplet_loss, metrics =
['accuracy'])
FRmodel.save('model.h5')
`FRmodel = load_model('model.h5')`
ValueError: Unknown loss function:triplet_loss
Run Code Online (Sandbox Code Playgroud)