--如果我理解得很好-- RNN允许考虑序列中的最后一个值来预测下一个值。假设我想预测函数cos(x)的下一个值,并且我有一个数据集,其结果为x在范围内(0,1000)。首先用cos(0)来预测cos(1),然后由cos(1)预测cos(2)等。在每一步中,对权重进行调优,并且模型保留最后一个值的记忆,以进行下一次预测。
,在我的例子中,,我想要训练一个模型来预测视频的质量。为此,我有一个带有视频注释的数据集。对于每一个视频,对于每一个帧,我计算了一组不相关的36个特征。因此输入的形状是(nb_videos,nb_frames,36)。对于每一个视频,我都有一个表示全局视频质量和标签形状的分数(nb_videos,1)。
我不知道我能用哪种神经网络。n_frames x 36太大了,我认为对于一个简单的多层感知器来说太大了.特征在时间轴上可能有意义,但在特征轴上没有意义,所以除非我用一维卷积训练36个模型,否则CNN是无用的。最后,特征在序列中出现,但RNN的问题是,它需要对序列中的每个元素进行评分,而模型只用于预测该序列中的下一个值。
,我的想法,是有一个RNN模型,这是为任何视频训练。我以良好的顺序向RNN的n_frames次数提供36个特征,并且只有在这些n_frames迭代之后,模型才能给出一个预测。然后利用这个预测来调整权重。然后我们这样做,在数据集中随机选取视频的年代数。
说得通吗?
有类似的东西存在吗?
发布于 2018-07-04 00:07:23
我不认为你在非常规地使用RNN/LSTM,你的想法是有意义的。如果我正确地理解了它,那么您的想法将涉及使用多到一个RNN:
来源:http://karpathy.github.io/2015/05/21/rnn-effectiveness/
其中,在每个时间步骤上的输入对应于一个具有36个特征的帧,并且在最后一个时间步的输出传递关于整个视频的信息。在Keras中,这可以类似于:
from keras.models import Sequential
from keras.layers import LSTM, Dense
nb_frames = 10
model = Sequential()
model.add(LSTM(20, input_shape=(nb_frames, 36)))
model.add(Dense(1, activation='relu'))
model.compile('rmsprop', 'mse')
model.summary()
许多到一个RNN是非常常见的,而且您不会对它们进行非常规的使用。
https://stackoverflow.com/questions/51166051
复制