2017-03-22 29 views
3

私は問題があり、同時に質問があります。 Theanoをバックエンドとシーケンシャルモデルとして使用して、Kerasでイメージ分類を行いたいと思っています。ケラス入力形状ValueError

>>> keras.__version__ 
'2.0.1' 
>>> theano.__version__ 
'0.9.0' 

私の入力形状:INPUT_SHAPE = (3, 28, 28) #depth, size, size

のは、私の問題に来てみましょう。私はWindows 7の32ビットで私のスクリプトを実行した場合、それは私のうち、以下のエラーを与える:

ValueError: ('The specified size contains a dimension with value <= 0', (-1024, 512)) 

入力形状とそれを実行した場合:

ValueError: Error when checking model input: expected conv2d_1_input to have shape (None, 48, 48, 3) but got array with shape (1000, 3, 48, 48) 
INPUT_SHAPE = (28, 28, 3) #size, size, depth
それは下にこのエラーが私を与えます

基本OS 64ビットでコードを実行すると、問題なく実行されます(INPUT_SHAPE = (3, 28, 28))。

Windows用のマイkeras.jsonファイルがある:だから

{ 
    "backend": "theano", 
    "epsilon": 1e-07, 
    "floatx": "float32", 
    "image_dim_ordering": "tf" 
} 

、私の質問がされていますされていますが別のオペレーティングシステムとの間のこのような大きな違いはどこか私のミスですか?思い出させるために、私は両方のシステムで全く同じコードを使用しました。

答えて

11

あなたの問題はまだ解決されていない場合は使用してみてください:あなたはtheanoバックエンドを使用し、画像寸法発注のためのチャネルに第1の構成を使用する必要がしたい場合 は from keras import backend as K K.set_image_dim_ordering('th') これは良い働くだろう。あなたがにある設定ファイルを変更することができ、別のバックエンドへの切り替えについては

3

予想されるディメンションの順序に関係している問題があります。

  • Tensorflow順序(TF):形状は(size_lines、size_columns、チャネル)であることが期待される
  • Theanoは(TH)を発注:形状は(チャネル、size_lines、size_columns)であることが予想される

keras.jsonファイルの注文行を"image_dim_ordering": "th"に変更した場合、正常に動作するはずです。 (私はあなたのElementary OS keras.jsonにあるものだと思います)。

+1

ご回答いただきありがとうございました。あなたはまだ正しいですが、私の.kerasファイルは何も変わらないことを認識しました。私はenvsと一度だけアーケードなしでケラをインストールしました。私のコードで 'channels_first'にimage_data_formatを設定すると、問題なく動作します。それはまったく私のせいだった。 :Dしかし、あなたの時間をありがとう。 – Dragonblf

0

  • のLinux:$HOME/.keras/keras.json
  • のWindows:

    %USER_PROFILE%/.keras/keras.json

これはtheanoバックエンドのためにkeras.jsonファイルです

{ 
    "floatx": "float32", 
    "epsilon": 1e-07, 
    "backend": "theano", 
    "image_data_format": "channels_first" 
} 

これはtensorflowバックエンドのためkeras.jsonファイルです:

image_data_formatstring"channels_last"または"channels_first"のいずれか。これは、ドキュメントhttps://keras.io/backend/image_data_formatプロパティについて言うことです

{ 
    "floatx": "float32", 
    "epsilon": 1e-07, 
    "backend": "tensorflow", 
    "image_data_format": "channels_last" 
} 

。 Kerasがどのデータ形式に従うかを指定します。 (keras.backend.image_data_format()戻り、それを。)2Dデータ(例えば 画像)について

"channels_last"(rows, cols, channels) ながら "channels_first" 前提(channels, rows, cols)となります。 "channels_first"(channels, conv_dim1, conv_dim2, conv_dim3)を想定しながら、3Dデータについて

"channels_last"(conv_dim1, conv_dim2, conv_dim3, channels) を想定しています。

関連する問題