2017-03-22 3 views
3

나는 문제가 있으며 동시에 질문이 있습니다. Theano를 Backend와 Sequential 모델로 사용하여 Keras로 이미지 분류자를 만들고 싶습니다.Keras 입력 모양 ValueError

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

내 입력 모양 : INPUT_SHAPE = (3, 28, 28) #depth, size, size

이의 내 문제에 와서 보자. 하여 입력 모양을 실행하면

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
그것은 아래이 오류가 날 수 있습니다 내가 윈도우에서 7 32 비트를 내 스크립트를 실행하는 경우, 그것은 나에게 밖으로 아래의 오류를 제공

초등 OS 64 비트에서 코드를 실행하면 문제없이 실행됩니다 (INPUT_SHAPE = (3, 28, 28)).

창에 대한 나의 keras.json 파일은 다음과 같습니다 그래서

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

, 내 질문은 : 거기 다른 운영 체계 사이에 그렇게 큰 차이는 어디서 내 실수? 생각 나게하기 위해, 나는 두 시스템 모두에 똑같은 코드를 사용했습니다.

답변

11

문제가 아직 해결되지 않으면 사용해보십시오 : 당신이 theano 백엔드를 사용하고 이미지 크기 순서에 대한 채널을 먼저 구성을 사용해야 할 경우 이 from keras import backend as K K.set_image_dim_ordering('th') 이 잘 작동합니다.

당신에있는 구성 파일을 변경할 수있는 다른 백엔드로 전환하는
3

예상되는 치수 순서와 관련된 문제가 있습니다.

  • Tensorflow 순서 (TF)는 : 모양이 (size_lines, size_columns, 채널)
  • Theano 주문시 (일) 것으로 예상된다 : 모양은 (채널, size_lines, size_columns)
  • 것으로 예상

당신이 "image_dim_ordering"에 keras.json 파일의 순서 라인을 변경하는 경우 : "일"을 그것을 작동합니다. (나는 그것이 당신의 초등 OS keras.json에있는 것이라고 생각합니다).

+1

답장을 보내 주셔서 감사 드리며 늦어서 죄송합니다. 여전히 맞습니다.하지만 .keras 파일이 아무 것도 바뀌지 않는다는 것을 알고 있습니다. 나는 어떤 envs도없이 케라를 설치했고, 한 시간 동안 아나콘다를 설치했다. 내 코드에서 image_data_format을 'channels_first'로 설정하면 문제없이 작동합니다. 그래서 그것은 완전히 내 잘못이었습니다. D :하지만 시간 내 주셔서 감사합니다. – Dragonblf

0

:

  • 리눅스 : $HOME/.keras/keras.json
  • 윈도우 : %USER_PROFILE%/.keras/keras.json

theano 백엔드에 대한 keras.json 파일입니다

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

tensorflow 백엔드에 대한 keras.json 파일은 다음과 같습니다

이 문서 https://keras.io/backend/image_data_format 부동산에 관한 말씀입니다
{ 
    "floatx": "float32", 
    "epsilon": 1e-07, 
    "backend": "tensorflow", 
    "image_data_format": "channels_last" 
} 

:

image_data_format : string, 하나 "channels_last" 또는 "channels_first". 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) 을 가정합니다.