小编Mic*_*tti的帖子

用于LSTM-RNN训练的填充时间序列子序列

我有一个时间序列数据集,我用它作为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

10
推荐指数
2
解决办法
3933
查看次数

使用自定义损失函数加载模型:ValueError:keras 中的“未知损失函数”

编译模型然后保存。然后在加载模型时出错。

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)

keras

3
推荐指数
1
解决办法
1866
查看次数