2017-09-05 1 views
2

저는 Keras Sequential 모델을 사용하고 있습니다. 입력과 레이블은 각 실행마다 정확히 동일합니다. Keras는 Tensorflow 백엔드를 사용하고 있습니다.Keras 교육을 결정적으로 수행 할 수 있습니까?

교육 도중 레이어 활성화를 '0'으로 설정하고 배치 셔플을 사용하지 않도록 설정했습니다. 나는 또한 NumPy와의 random() 방법을 심는 시도했습니다

model = Sequential() 
model.add(Dense(128, 
       activation='relu', 
       kernel_initializer='zeros', 
       bias_initializer='zeros')) 
... 

model.compile(optimizer='rmsprop', loss='binary_crossentropy') 

model.fit(x_train, y_train, 
      batch_size = 128, verbose = 1, epochs = 200, 
      validation_data=(x_validation, y_validation), 
      shuffle=False) 

: 장소에 위의와

np.random.seed(7) # fix random seed for reproducibility 

나는 여전히 훈련 후 다른 정확성과 손실 값을받을 수 있습니다.

내가 누락되었거나 교육 간의 차이를 완전히 제거 할 수있는 방법이 없습니까?

+1

[아마 관련을 ] (https://github.com/fchollet/keras/issues/2280) – sascha

+0

고맙습니다. 예, 이것은 알려진 문제입니다. – RobertJoseph

답변

1

이 전 주석 등의 real issue 것으로 보인다 때문에, 어쩌면 당신은 수동으로 가중치를 초기화 (대신 레이어 생성자에 전달 된 '제로'매개 변수 신뢰)에 갈 수 :

#where you see layers[0], it's possible that the correct layer is layers[1] - I can't test at this moment. 

weights = model.layers[0].get_weights() 
ws = np.zeros(weights[0].shape) 
bs = np.zeros(weights[1].shape) 
model.layers[0].set_weights([ws,bs]) 
+1

아이디어는 전달 된 매개 변수를 정확하게 피하기위한 것입니다. 우리가 신뢰하는 numpy에서는 링크에있는 이슈를 고려하여 keras 초기화 프로그램을 신뢰합니까? –

관련 문제