bazı deneyler yapmak keras kullanıyorum ve sadece basit bir MLP modeli için ağırlık güncelleştirme izlenen: İlk yoğun katman için`layer.get_weights()` ne döndürür?
# 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
, ben sıfır bir matris var. Eğitimin bu ağırlığı değiştirmediğini düşündüm. Bununla birlikte, diğer katmanlardaki ağırlıklar değişmiştir. Yani kafam karıştı, neden ilk katman değişmedi?
model.layers[0].get_weights()[1] # get_weight() returns a list of weights
Bu sefer ağırlıkları değişiklik yaptı: ben kaynak kodunu kontrol ama hala hiçbir cevap var, o zaman izleme çalıştı. Öyleyse hangi kiloların eğitim sırasında çalışan "gerçek" ağırlık olduğunu merak ediyorum? Ağırlık listesinde neden iki öğe var? mlp()
ait
Tanımı: layer.get_weights()
ait soru için
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
Bize mlp() işlevini verebilir misiniz? Bu gerçekten garip davranış –
@ MarcinMożejko güncelledim. Layer.weights 'listesindeki ikinci ağırlıkta kafam karıştı. –
Modelinizi derlediniz mi? –