2016-05-01 13 views
8

मुझे घने परत को एक संकल्पक परत में बदलने के लिए वजन की सही मैपिंग खोजने में समस्या है।पायथन कैरस एक घन परत को एक संकल्पक परत में बदलने के लिए कैसे करें

यह एक ConvNet का एक अंश है कि मैं पर काम कर रहा हूँ है:

model.add(Convolution2D(512, 3, 3, activation='relu')) 
model.add(MaxPooling2D((2,2), strides=(2,2))) 
model.add(Flatten()) 
model.add(Dense(4096, activation='relu')) 

MaxPooling के बाद, इनपुट आकार (512,7,7) की है। , मैं नहीं जानता कि मैं कैसे आदेश सही ढंग से करने के लिए चपटा वजन मैप करने के लिए में वजन नयी आकृति प्रदान करने की जरूरत है

model.add(Convolution2D(512, 3, 3, activation='relu')) 
model.add(MaxPooling2D((2,2), strides=(2,2))) 
model.add(Convolution2D(4096, 7, 7, activation='relu')) 

हालांकि: मैं एक convolutional परत में सघन परत को बदलने के लिए यह इस तरह दिखना करना चाहते हैं (4096,512,7,7) संरचना जो कि संकल्पक परत के लिए आवश्यक है? अभी, घने परत के वजन आयाम (25088,4096) हैं। न्यूरॉन्स को वजन के सही मैपिंग को संरक्षित करते समय मुझे इन 25088 तत्वों को एक आयाम (512,7,7) के मानचित्र पर मानचित्रित करने की आवश्यकता है। अब तक, मैंने दोबारा बदलने और फिर ट्रांसपोज़ करने के कई तरीकों का प्रयास किया है, लेकिन मैं सही मैपिंग नहीं ढूंढ पा रहा हूं।

मैं क्या यह होगा कोशिश कर रहे हैं का एक उदाहरण:

weights[0] = np.transpose(np.reshape(weights[0],(512,7,7,4096)),(3,0,1,2)) 

लेकिन यह वजन सही ढंग से नक्शा नहीं है। मैंने सत्यापित किया कि मैपिंग दोनों मॉडलों के आउटपुट की तुलना करके सही है या नहीं। अगर सही तरीके से किया जाता है, तो मुझे उम्मीद है कि आउटपुट एक जैसा होना चाहिए।

उत्तर

6

अभी भी समाधान की तलाश में है? संदेश यह है:

new_conv_weights = dense_weights.transpose(1,0).reshape(new_conv_shape)[:,:,::-1,::-1] 
अपने मामले में

:

weights[0] = weights[0].transpose(1,0).reshape((4096,512,7,7))[:,:,::-1,::-1] 

मुश्किल हिस्सा रूपा फिल्टर flipping है [:,:, :: - 1, :: - 1]। Theano संकल्प सहसंबंध नहीं है (उदाहरण के लिए कैफे के विपरीत)। मैट्रिक्स में

1 2 3 4 5 
6 7 8 9 0 
1 2 3 4 5 

परिणाम::

1 0 
0 0 

मैट्रिक्स के लिए लागू: इसलिए, Keras में तरह से फिल्टर

7 8 9 0 
2 3 4 5 

यह नहीं, के रूप में एक सह-संबंध के साथ उम्मीद करेंगे:

1 2 3 4 
6 7 8 9 

चीजों को काम करने के लिए उम्मीद है, आपको फ़िल्टर 180 डिग्री घुमाने की जरूरत है। बस इस समस्या को हल करने के लिए, उम्मीद है कि यह आपके लिए या दूसरों के लिए मददगार होगा। चीयर्स।

संबंधित मुद्दे