2017-02-20 6 views
0

훈련 된 모델의 결과가 numpy 출력 파일의 Flatten 레이어로 끝납니다. 나는 그들을로드하고 Dense 레이어의 입력으로 사용하려고합니다.순차적 Keras 모델의 Dense 레이어에 1 차원 데이터로드

train_data = np.load(open('bottleneck_flat_features_train.npy')) 
train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
top_m = Sequential() 
top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='sigmoid', name='top_dense1')) 
top_m.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) 
# 
top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

그러나 나는 다음과 같은 오류 메시지가 :

ValueError: Error when checking model target: expected top_dense1 to have 
shape (None, 2) but got array with shape (13, 1) 

내 입력 치수는 (16,1536) -이 제한 트레일 런 1536 개 기능에 대한 16 개 이미지.

>>> train_data.shape 
(16, 1536) 

조밀 한 레이어에는 1 차원 1536 long 배열이 있어야합니다.

>>> train_data.shape[1] 
1536 

어떻게해야합니까? 많은 감사!

+0

train_data.shape이란 무엇입니까? –

+0

좋은 지적으로, 나는 그 정보를 내 질문에 추가했다. – user2182857

답변

1

나는 내 문제를 발견했다. 나는 정확하게 lables를 정의하지 않았다. 모델 컴파일을 스파 스 카테고리 크로스 트로피 모드로 전환했습니다.

내 현재 코드는 작동하고 수렴 이제

def train_top_model(): 
    train_data = np.load(open('bottleneck_flat_features_train.npy')) 
    train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
    validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
    validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
    top_m = Sequential() 
    top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='softmax', name='top_dense1')) 
    top_m.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
# 
    top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

입니다.

1

모델 대신 top_m을 컴파일하고 맞추고 싶지 않으십니까?

+0

고마워, 편집 된 나의 잘못된 질문. – user2182857

+0

그래서 오류가 남아 있습니다! –

+0

오류가 으로 변경되었습니다. ValueError : 모델 대상을 검사 할 때 오류가 발생했습니다. 예상되는 top_dense1의 모양이 (없음, 2) 있지만 모양이 (13, 1) 인 배열 수정 된 질문에 설명 된 것과 같습니다. – user2182857

관련 문제