我试图在keras中构建一个lstm模型,为图像序列提供信息,并为每个图像添加相应的标签。LSTM模型应该预测t时刻的图像标签。
每个序列有5个图像,大小为224 x 224,有3个通道
我从CNN模型中提取特征,并在每个时间点输入lstm、特征和标签。
问题-
如何添加标签,例如,对于第一个序列,标签是[0,1,1,2,3]。列表中的每个元素对应于序列中的每个图像。
输入每个序列的标签的最佳方式是什么?
seqs=5
channels=3
rows=224
columns=224
inp = Input(shape=(seqs,
rows,
columns, channels))
cnn_base = VGG16(input_shape=(rows,columns,channels),weights="imagenet",include_top=False)
cnn_out = GlobalAveragePooling2D()(cnn_base.output)
cnn = Model(inputs=cnn_base.input, outputs=cnn_out)
encoded_frames = TimeDistributed(cnn)(inp)
encoded_sequence = LSTM(256)(encoded_frames)
hidden_layer = Dense(output_dim=1024, activation="relu")(encoded_sequence)
outputs = Dense(output_dim=2, activation="softmax")(hidden_layer)
model = Model([inp], outputs)
optimizer = Nadam(lr=0.002,beta_1=0.9,beta_2=0.999,epsilon=1e-08,schedule_decay=0.004)
model.compile(loss="categorical_crossentropy",
optimizer=optimizer,
metrics=["categorical_accuracy"])