2017-02-27 11 views
2

モデルの目的は、ビデオ入力をそれらと連結された単語でカテゴリ別に分類することです。各入力は、45フレーム、1グレーのカラーチャンネル、100ピクセルの行、および150ピクセルの列(45,1,100,150)の次元を有し、各対応する出力は、3つの可能な単語(例えば、 yes "=> [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] 

、あなたが得ているエラーの意味 - Dimensions must be equal, but are 1 and 3 -

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][3,3,3,32]in_channels値は、なぜあなたがエラーを取得している3.ザッツであることを意味するのに対し、in_channels値が1であることを意味します。

フィルタの形状を[3, 3, 1, 32]に変更することができます。

関連する問題