我正在尝试在喀拉拉邦建立一个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"])