没有LSTM的Keras时间分布层

时间:2018-10-07 06:55:19

标签: tensorflow keras

我是新来的喀拉拉邦人。这是我想要达到的目标。我有一个keras模型,它以输入图像来产生512向量。我将其创建为:

enter image description here

input_img = keras.layers.Input( shape=(240, 320, 3 ) )
cnn = make_vgg( input_img )
out = NetVLADLayer(num_clusters = 16)( cnn )
model = keras.models.Model( inputs=input_img, outputs=out )

现在,为了进行培训,我的每个样本实际上都是13张图像。假设我有2500个样本,那么我的数据尺寸为2500x13x240x320x3。 我希望将模型独立应用于13张图像。我在喀拉拉邦遇到了TimeDistributed层,想知道如何使用它来实现我的目标。

t_input = Input( shape=(13,240,320,3) )
# How to use TimeDistributed with model? 
t_out = TimeDistributed( out )
t_model = Model( inputs=t_input, outputs=t_out )

我期望尺寸为t_out:无,13,512。但是,以上代码将引发ValueError。谁能帮助我理解?

1 个答案:

答案 0 :(得分:2)

此行中发生错误:

t_out = TimeDistributed(out)

之所以会这样,是因为out是张量,但是TimeDistributed需要一个层作为参数。该层将应用于输入的每个时间切片(索引一的维)。您可以改为执行以下操作:

t_input = Input(shape=(13, 240, 320, 3))
t_out = TimeDistributed(model)(t_input)
t_model = Model(inputs=t_input, outputs=t_out)
相关问题