2017-02-07 11 views
2

Keras(theano backend)のいくつかの演習でCNNを理解しようとしています。私は以下のモデルに適合することができません(エラー:AttributeError: 'Convolution2D'オブジェクトに属性 'get_shape'がありません)。このデータセットは、最大5つの画像について一緒に連結されたMNISTデータからの画像(28×28)である。入力シェイプは1、28、140(グレースケール= 1、高さ= 28、幅= 28 * 5)にしてください。複数桁認識のKeras

目的は数字のシーケンスを予測することです。ありがとうございました!!

batch_size = 128 
nb_classes = 10 
nb_epoch = 2 

img_rows =28 
img_cols=140 
img_channels = 1 

model_input=(img_channels, img_rows, img_cols) 

x = Convolution2D(32, 3, 3, border_mode='same')(model_input) 
x = Activation('relu')(x) 
x = Convolution2D(32, 3, 3)(x) 
x = Activation('relu')(x) 
x = MaxPooling2D(pool_size=(2, 2))(x) 
x = Dropout(0.25)(x) 
conv_out = Flatten()(x) 

x1 = Dense(nb_classes, activation='softmax')(conv_out) 
x2 = Dense(nb_classes, activation='softmax')(conv_out) 
x3 = Dense(nb_classes, activation='softmax')(conv_out) 
x4 = Dense(nb_classes, activation='softmax')(conv_out) 
x5 = Dense(nb_classes, activation='softmax')(conv_out) 

lst = [x1, x2, x3, x4, x5] 

model = Sequential(input=model_input, output=lst) 

model.compile(loss='categorical_crossentropy', 
optimizer='adam', 
metrics=['accuracy']) 

model.fit(dataset, data_labels, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1) 

答えて

4

問題は入力レイヤーにあります。以下の変更を行います。

model_input=Input(shape=(img_channels, img_rows, img_cols)) 

は、あなたのimage_dim_orderingth提供されます。 Inputレイヤーをkeras.layersからインポートします。

また、出力が複数あることに気付きました。したがって、SequentialではなくFunctionモデルを使用する必要があります。 keras.modelsから

model = Model(input=model_input, output=lst) 

インポートModel:ちょうどに変更します。

+0

ご回答ありがとうございます。私はまだテンソルオブジェクトが反復可能ではないことを知っています。 –

+0

'model.fit()'のエラーです。もしそうなら、私の推測では 'data_labels'は長さが5のnumpy配列のリストでなければなりません。numpy配列のそれぞれは、' dataset.shape [0] x nb_classes'次元でなければなりません。 – indraforyou

+0

こんにちは、エラーは活性化層にあります。以下は完全なコードへのリンクです:https://gist.github.com/jdills26/ca69e59ef19d4993636f6b50a7cbe514何か助けてくれてありがとう!ここにデータソースがあります:http://yann.lecun.com/exdb/mnist/index.html –

関連する問題