代码之家  ›  专栏  ›  技术社区  ›  MenorcanOrange

将图像和标签一起传送到lstm

  •  0
  • MenorcanOrange  · 技术社区  · 7 年前

    我试图在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"])
    
    0 回复  |  直到 7 年前