मैं अजगर (keras) के साथ एक द्विआधारी वर्गीकरण समस्या के साथ काम कर रहा हूँ।

मेरा सीएनएन नेटवर्क आर्किटेक्चर नीचे दिया गया है:

    def CNN():
      model = Sequential()
      model.add(Conv2D(64, kernel_size=(1, 3), activation='elu', padding='valid', input_size=(20,10, 1)))
      model.add(Conv2D(32, kernel_size=(1, 3), activation='elu', padding='valid'))
      model.add(Conv2D(16, kernel_size=(1, 3), activation='elu', padding='valid'))

      model.add(Flatten())
      model.add(Dense(512, activation='elu'))
      model.add(Dense(512, activation='sigmoid'))

अब मैं एक टेबल में अपने सीएनएन आर्किटेक्चर का वर्णन करने की कोशिश कर रहा हूं: मेरे पास 200 कॉलम 200k पंक्तियों के साथ एक आयामी डेटासेट है।

बैच का आकार = 64

सीएनएन १ - चैनल ६४ सीएनएन २ - चैनल ३२ सीएनएन ३ - चैनल १६

FC1 - 500 इकाइयाँ FC2 - 1 इकाई

यहाँ मैं एक तालिका में वास्तुकला का वर्णन करने की कोशिश कर रहा हूँ (इस खंड में समस्या)

- CNN1 - CNN2 - CNN3 - FC1 - FC2

इनपुट_शेप-- 64* 64 * 200 * 1 - 32* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16*64*200*1*500 - 16*64*200*1*500

Output_Shape - 32* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16*64*200*1*500 - 1

मुझे अपने नेटवर्क के सही इनपुट आउटपुट आकार को परिभाषित करने में परेशानी हो रही है, कुछ मदद मांग रहा हूं। धन्यवाद।

2
user7657378 6 मई 2019, 15:06

1 उत्तर

सबसे बढ़िया उत्तर

केरस में छवि वर्गीकरण के लिए एक मानक सीएनएन के लिए इनपुट आकार इस प्रकार है:

input_shape = ( batch_size , height , width , num_channels )

पहली Conv2D परत का इनपुट आकार होगा:

img_height = 20
img_width = 10
num_channels = 1

model.add(Conv2D(64, kernel_size=(1, 3), activation='elu', padding='valid', 
input_size=(img_height,img_width, num_channels)))

चूंकि आप बाइनरी वर्गीकरण कर रहे हैं, इसलिए अंतिम Dense परत इस प्रकार होगी:

model.add(Dense(1, activation='sigmoid'))

साथ ही, एक बोनस के रूप में, मॉडल संकलन इस प्रकार होगा:

model.compile( loss='binary_crossentropy' , optimizer='adam' , metrics=['accuracy'] )
5
Shubham Panchal 6 मई 2019, 13:02