1

私はクラシファイアを訓練しました。Tensorflow Image Shape Error

私はバックエンドとしてTensorflowでkerasライブラリを使用しています。私はエラーを取得しています

私は

img_path = '/path/to/my/image.jpg' 

import numpy as np 
from keras.preprocessing import image 
x = image.load_img(img_path, target_size=(250, 250)) 

x = image.img_to_array(x) 
x = np.expand_dims(x, axis=0) 

preds = model.predict(x) 

は、私が最初の次元としてNoneを持っている私のデータを再構築する必要がありますか過去のように見えることはできませんか?私はなぜTensorflowが最初の次元としてNoneを期待するのだろうと混乱していますか?

Error when checking : expected convolution2d_input_1 to have shape (None, 250, 250, 3) but got array with shape (1, 3, 250, 250) 

私の訓練されたモデルのアーキテクチャに問題があったのでしょうか?

編集:私は編集

enter image description here

...としてmodel.summary()所与のconvolution2d_input_1を呼び出す場合:私は以下の提案で遊んでいたが、TFの代わりに移調するためにnumpyのを使用 - まだ当たっているように見えます同じ問題!

enter image description here

答えて

2

Noneは、任意の数と一致します。通常、モデルにいくつかのデータを渡すと、次元のテンソルを渡すことが期待されます:None x data_size、つまり、最初の次元は任意の次元であり、バッチサイズを意味します。あなたの場合、問題は250 x 250 x 3を渡すことであり、それは3 x 250 x 250と予想されます。試してみてください:[OK]を

x = image.load_img(img_path, target_size=(250, 250)) 
x_trans = tf.transpose(x, perm=[2, 0, 1]) 
x_expanded = np.expand_dims(x_trans, axis=0) 
preds = model.predict(x_expanded) 
+0

おかげで@sygi 、 私はこれを渦巻きにしましたが、新しいエラーが発生しました... ValueError:引数は密なテンソルでなければなりません: - 形状[250,250,3]が必要ですが[] [] - あなたがバッチサイズを与えることができなかったので、私は仮定しました(ちょっとした愚かな仮定)。私はまた、tfではなくデータを再形成するためにnumpyを使用する価値があるかどうか疑問に思っています。 – YesIndeedy

+0

'ValueError:引数は密なテンソルでなければなりません: - 形状[250,250,3]がありますが、[] 'が必要です – YesIndeedy

0

enter image description here

ので、エラーは実際に私は、[1、250として、私の次元で合格するために必要な私に言った、私は半分はそれを解決したと思う

をフィードバックROM Sygiを使用して、250、3]そう簡単に修正しました。 TFが正しい順序でディメンションを期待している理由が分からないと言う必要があります。先に移動

は、私はおそらくだ、転置iは寸法が適切に転置doesntの仕事を意味同じ順序でないかもしれない異なる入力画像を使用しているかのように移動するための方法であることを確認しないイム

代わりの転置私はTS

ためのヒントSygiに感謝を整形して、ディメンションの順序を知るものに応じトンコールx_reshape = img.reshape((1、250、250、3))にしよう:)

関連する問題