2016-03-26 5 views
1

私は、TensorFlowバックエンドを搭載したKerasで次のネットワークを稼動しようとしています。私は以下の記事をチェックアウトしてきたが、これを解決することができていないKerasの例を顧客データに適合させることが難しい

ValueError: Cannot feed value of shape (32, 128, 256) for Tensor u'Placeholder_89:0', which has shape '(?, 1, 128, 256)' 

:これはエラーを生成します

import os 
import sys 
import json 
import model_control 
from numpy import loadtxt, asarray 
from pandas import read_csv 
from scipy.ndimage import imread 
from keras.models import Sequential 
from keras.layers import Dense, Dropout, Activation, Flatten 
from keras.layers import Convolution2D, MaxPooling2D 
from keras.optimizers import SGD 

Y_train = loadtxt(model_control.y_train_file, delimiter=',', dtype = int) 

train_files = os.listdir(model_control.train_img_path) 
train_files = ['%s/%s' % (model_control.train_img_path, x) for x in train_files if 'jpg' in x] 
X_train = asarray([imread(x) for x in train_files]) 

X_train.shape #..(8144, 128, 256) (a numpy array of 8144 128x256 greyscale, i.e. single-channel, images) 
Y_train.shape #..(8144,) (A 1-d numpy array of integer class labels) 

model = Sequential() 

model.add(Convolution2D(32, 5, 5, border_mode='valid', input_shape=(1, 128, 256))) 
model.add(Activation('relu')) 
model.add(Convolution2D(32, 5, 5)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Convolution2D(64, 5, 5, border_mode='valid')) 
model.add(Activation('relu')) 
model.add(Convolution2D(64, 5, 5)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Flatten()) 
model.add(Dense(256)) 
model.add(Activation('relu')) 
model.add(Dropout(0.5)) 

model.add(Dense(10)) 
model.add(Activation('softmax')) 

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) 
model.compile(loss='categorical_crossentropy', optimizer=sgd) 

model.fit(X_train, Y_train, batch_size=32, nb_epoch=1, verbose=1) 

:それはhttp://keras.io/examples/から「VGG様」convnetの適応です1つはまだ。どのような問題が起こっているかの説明とともに、どんな助けもありがとうと思います。

    https://groups.google.com/forum/#!topic/keras-users/Vb7MhSqne0Y http://stackoverflow.com/questions/33974231/tensorflow-error-using-my-own-data

UPDATE

Keras発行ボード(https://github.com/fchollet/keras/issues/2092)にこの質問を投稿。問題を再現できるようになるGistsample dataのリンクがあります。

答えて

0

解決しました。このスクリプトでは、次の行を入力配列「再構築」するために必要とされる:本当に

X_train = X_train.reshape(X_train.shape[0], 1, 128, 256)

を、私たちがここでやっているすべてではなく、配列(8144, 1, 128, 256)の形状を作るために、やや冗長なチャネル次元を追加して(8144, 128, 256)です。 RGBアレイを使用している場合は、(8144, 3, 128, 256)なので、これはまったく重複しません。ボトムライン:私の入力配列にチャンネルの寸法がありませんでした。グレースケールを省略して取り除くことができたと思いました。あなたはまだ明示的に形を定義する必要があることが分かります。

素晴らしいパッケージ。一旦修正されると、コードはそのまま実行されるべきです。

関連する問題