小编Edw*_*ang的帖子

使用keras(TensorFlow)构建Conv2D + LSTM模型

数据为10个视频,每个视频分为86帧,每帧有28*28像素,

video_num = 10
frame_num = 86
pixel_num = 28*28
Run Code Online (Sandbox Code Playgroud)

我想使用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)
Run Code Online (Sandbox Code Playgroud)

下图显示了命令行中的错误

https://imgur.com/a/yAPQO 说"列表索引超出范围"

我认为该错误是关于TimeDistributed()中的输入形状,它从上层(InputLayer())获取输入,但我不知道如何修复错误.我试图删除InputLayer(),并使用

TimeDistributed(Conv2D(...), input_shape=(TIME_STEPS, INPUT_SIZE))
Run Code Online (Sandbox Code Playgroud)

作为第一层,但也得到同样的错误...... …

python lstm keras

5
推荐指数
1
解决办法
7070
查看次数

标签 统计

keras ×1

lstm ×1

python ×1