나는 몇 가지 실험을 할 Keras를 사용하고 난 그냥 간단한 MLP 모델의 무게 업데이트를 모니터링 : 첫 번째 조밀 계층`layer.get_weights()`는 무엇을 반환합니까?
# model contains one input layer in the format of dense,
# one hidden layer and one output layer.
model=mlp()
weight_origin=model.layers[0].get_weights()[0]
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(.....) # with adam optimizer
weight_updated=model.layers[0].get_weights()[0]
print weight_origin-weight_updated
, 나는 제로의 행렬을 얻었다. 나는이 훈련이이 체중을 변화시키지 않는다고 생각했다. 그러나 다른 레이어의 가중치가 변경됩니다. 그래서 혼란 스럽습니다. 왜 첫 번째 레이어가 변경되지 않았습니까?
model.layers[0].get_weights()[1] # get_weight() returns a list of weights
이 시간, 무게는 변화했다 : 나는 소스 코드를 확인하지만 여전히 아무 대답이 없어, 그때 모니터링을 시도했다. 그래서 나는 어떤 체중이 훈련 중에 작동하는 "진정한"체중인지 궁금합니다. 왜 체중 목록에 두 가지 요소가 있습니까? mlp()
의
정의 : layer.get_weights()
의 질문에 대한
def mlp():
model=Sequential()
model.add(Dense(500, input_dim=784))
model.add(Dense(503,init='normal',activation='relu'))
model.add(Dense(503,init='normal',activation='relu'))
model.add(Dense(10, activation='softmax'))
return model
mlp() 함수를 제공해 주시겠습니까? 이것은 정말 이상한 행동입니다 –
@ MarcinMożejko 나는 그것을 업데이트했습니다. 'layer.weights'리스트의 두 번째 가중치에 혼란 스럽습니다. –
모델을 편집 했습니까? –