conv1 = Conv2D(num_filters, filter_sizes[0], activation='relu')(reshape)
#conv1 = Conv2D(filters=100, filter_sizes[0], activation='relu')(reshape)
conv2 = Conv2D(num_filters, filter_sizes[1], activation='relu')(reshape)
conv3 = Conv2D(num_filters, filter_sizes[2], activation='relu')(reshape)
pool1 = MaxPooling2D(pool_size=(max_length - filter_sizes[0] + 1, 1), strides=(1,1), border_mode='valid', dim_ordering='tf')(conv1)
pool2 = MaxPooling2D(pool_size=(max_length - filter_sizes[1] + 1, 1), strides=(1,1), border_mode='valid', dim_ordering='tf')(conv2)
pool3 = MaxPooling2D(pool_size=(max_length - filter_sizes[2] + 1, 1), strides=(1,1), border_mode='valid', dim_ordering='tf')(conv3)
merged = merge([pool1, pool2, pool3], mode='concat', concat_axis=1)
flatten = Flatten()(merged)
dropout = Dropout(0.5)(flatten)
dense1 = Dense(10, activation='relu')(dropout)
outputs = Dense(1, activation='sigmoid')(dense1)
model = Model(inputs=inputs, outputs=outputs)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
return model
The filter_size i am using is 3,4,5. Max_length is the maximum length of the document.
In the Max pooling layer, since we subtract the max_length from different filter sizes, the shape will change. Can you please guide on how to rectify it?