数据包括10个视频,每个视频分为86帧,每帧有28*28像素。
以下图片显示了从命令行中出现的错误: https://imgur.com/a/yAPQO 显示 "list index out of range".
我认为这个错误与TimeDistributed()中的输入形状有关,该函数从上一层(InputLayer())获取输入,但我不知道如何修复此错误。 我已经尝试过删除InputLayer()并使用其他方法,但问题仍未得到解决。
作为第一层,但是同样出现了错误...
如果有人知道这个错误的原因,请分享您的想法,我将非常感激。此外,我仍然不太清楚batch_input_shape和input_shape之间的区别,有人使用过这两个吗?谢谢。
video_num = 10
frame_num = 86
pixel_num = 28*28
我希望使用Conv2D+LSDM构建模型,在每个time_steps(=frame_num=86)中将像素数据(=INPUT_SIZE=28*28)发送到模型中。以下是有关模型的代码:
BATCH_SIZE = 2 (just try)
TIME_STEPS=frame_num (=86)
INPUT_SIZE=pixel_num (=28*28)
model = Sequential()
model.add(InputLayer(batch_input_shape=(BATCH_SIZE, TIME_STEPS,
INPUT_SIZE)))
print (model.output_shape)
model.add(TimeDistributed(Conv2D(64,(1,3),strides=(1,1), padding='same',
data_format='channels_last'))) ##always the error here
print (model.output_shape)
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2),padding='same')))
print (model.output_shape)
model.add(TimeDistributed(Conv2D(64,(1,3),strides=(1,1),
data_format='channels_last', padding='same')))
print (model.output_shape)
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2),padding='same')))
print (model.output_shape)
model.add(TimeDistributed(Flatten()))
print (model.output_shape)
model.add(TimeDistributed(Dense(4096, activation='relu')))
print (model.output_shape)
model.add(LSTM(100, stateful=True, return_sequences=True))
print (model.output_shape)
model.add(Dense(1, activation='sigmoid'))
print (model.output_shape)
以下图片显示了从命令行中出现的错误: https://imgur.com/a/yAPQO 显示 "list index out of range".
我认为这个错误与TimeDistributed()中的输入形状有关,该函数从上一层(InputLayer())获取输入,但我不知道如何修复此错误。 我已经尝试过删除InputLayer()并使用其他方法,但问题仍未得到解决。
TimeDistributed(Conv2D(...), input_shape=(TIME_STEPS, INPUT_SIZE))
作为第一层,但是同样出现了错误...
如果有人知道这个错误的原因,请分享您的想法,我将非常感激。此外,我仍然不太清楚batch_input_shape和input_shape之间的区别,有人使用过这两个吗?谢谢。
(10,86,28,28)
的数组x_train
。那么:x_train=x_train.reshape((10,86,28,28,1))
。 - Daniel Möller