Yoğun bir tabakayı bir kıvrımlı katmana dönüştürmek için ağırlıkların doğru eşlemesini bulmakta sorun yaşıyorum. Python, yoğun bir tabakayı bir konvolüsyon katmanına dönüştürmeyi öğretiyor
Bu
üzerinde çalışıyorum bir ConvNet bir alıntı: MaxPooling sonramodel.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(4096, activation='relu'))
, girdi şekli (512,7,7) taşımaktadır. Ben doğru bir şekilde düzleştirilmiş ağırlıkları eşleştirmek için ağırlıklarını yeniden şekillendirmek gerekiyor bilmiyorum Ancak
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(4096, 7, 7, activation='relu'))
: Ben bu gibi görünmesi için kıvrımlı bir tabaka haline yoğun tabaka dönüşüm istiyoruz (4096,512,7,7) kıvrım tabakası için gerekli olan yapı? Şu anda, yoğun tabakanın ağırlıkları boyuttadır (25088,4096). Nöronlara ağırlıkların doğru haritalanmasını korurken, bu 25088 elementini bir şekilde (512,7,7) bir boyuta eşleştirmem gerekiyor. Şimdiye kadar, yeniden şekillendirmenin ve aktarmanın birçok yolunu denedim, ancak doğru haritalamayı bulamadım.
Bunun olacağını çalışıyorlar ne bir örnek:
weights[0] = np.transpose(np.reshape(weights[0],(512,7,7,4096)),(3,0,1,2))
ama doğru ağırlıkları eşleşmiyor. Her iki modelin çıktılarını karşılaştırarak eşlemenin doğru olup olmadığını doğruladım. Doğru yapıldığında, çıktının aynı olması beklenir.