2017-02-27 186 views
2

该模型的目标是将视频输入按照与它们关联的词进行分类分类。每个输入具有45个帧,1个灰色通道,100个像素行和150个像素列(45,1,100,150)的维度,而每个相应的输出是3个可能字中的一个的一个热编码表示(例如“是“=> [0,0,1])。Keras ValueError:尺寸必须相同

在模型的编译,出现以下错误:

ValueError: Dimensions must be equal, but are 1 and 3 for 'Conv2D_94' (op: 'Conv2D') with 
input shapes: [?,100,150,1], [3,3,3,32]. 

这是用来训练模型中的脚本:

video = Input(shape=(self.frames_per_sequence, 
        1, 
        self.rows, 
        self.columns)) 
cnn = InceptionV3(weights="imagenet", 
        include_top=False) 
cnn.trainable = False 
encoded_frames = TimeDistributed(cnn)(video) 
encoded_vid = LSTM(256)(encoded_frames) 
hidden_layer = Dense(output_dim=1024, activation="relu")(encoded_vid) 
outputs = Dense(output_dim=class_count, activation="softmax")(hidden_layer) 
osr = Model([video], outputs) 
optimizer = Nadam(lr=0.002, 
        beta_1=0.9, 
        beta_2=0.999, 
        epsilon=1e-08, 
        schedule_decay=0.004) 
osr.compile(loss="categorical_crossentropy", 
      optimizer=optimizer, 
      metrics=["categorical_accuracy"]) 
+0

@roganjosh请参阅最新的问题。谢谢。 –

+0

@roganjosh你说去掉追踪,所以我做到了。 –

+1

您误解了该评论。我的意思是“发布回溯格式正确,而不是图像”。我想不出有什么情况可以去除追踪包。它不应该是裁剪后的图像。对不起,如果不清楚。 – roganjosh

回答

2

根据Keras Convolution2D,下面应该是输入和过滤器的形状。

shape of input = [batch, in_height, in_width, in_channels] 
shape of filter = [filter_height, filter_width, in_channels, out_channels] 

所以,你所得到的错误的含义 -

ValueError: Dimensions must be equal, but are 1 and 3 for 'Conv2D_94' (op: 'Conv2D') with 
input shapes: [?,100,150,1], [3,3,3,32]. 

[?,100,150,1]意味着in_channels值是1,而[3,3,3,32]意味着in_channels值为3。这就是为什么你所得到的错误 - Dimensions must be equal, but are 1 and 3

因此,您可以将过滤器的形状更改为[3, 3, 1, 32]

相关问题