You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to flatten the output of the crffnn_layer, because I have a binary classification task, instead of a segmentation (i know... ). I am getting the error of the a dimension mistatch:
`
ValueError: Dimensions must be equal, but are 250000 and 94864 for 'dense_1/MatMul' (op: 'MatMul') with input shapes: [1,250000], [94864,512].
`
The input are 64x64x3 images (channels last), which are convoluted and then fed to the model. Currently I am using the network architecture that is provided with the examples, adapted:
`
channels, height, weight = 3, 500, 500
# Input
input_shape = (height, weight, 3)
img_input = Input(shape=self.input_shape)
#img_input = Cropping2D((3,3))(img_input)
# Add plenty of zero padding
x = ZeroPadding2D(padding=(218, 218))(img_input)
# VGG-16 convolution block 1
x = Conv2D(64, (3, 3), activation='relu', padding='valid', name='conv1_1')(x)
x = Conv2D(64, (3, 3), activation='relu', padding='same', name='conv1_2')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool1')(x)
# VGG-16 convolution block 2
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='conv2_1')(x)
x = Conv2D(128, (3, 3), activation='relu', padding='same', name='conv2_2')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool2', padding='same')(x)
# VGG-16 convolution block output3
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='conv3_1')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='conv3_2')(x)
x = Conv2D(256, (3, 3), activation='relu', padding='same', name='conv3_3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool3', padding='same')(x)
pool3 = x
# VGG-16 convolution block 4
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv4_1')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv4_2')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv4_3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool4', padding='same')(x)
pool4 = x
# VGG-16 convolution block 5
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv5_1')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv5_2')(x)
x = Conv2D(512, (3, 3), activation='relu', padding='same', name='conv5_3')(x)
x = MaxPooling2D((2, 2), strides=(2, 2), name='pool5', padding='same')(x)
# Fully-connected layers converted to convolution layers
x = Conv2D(4096, (7, 7), activation='relu', padding='valid', name='fc6')(x)
x = Dropout(0.5)(x)
x = Conv2D(4096, (1, 1), activation='relu', padding='valid', name='fc7')(x)
x = Dropout(0.5)(x)
x = Conv2D(21, (1, 1), padding='valid', name='score-fr')(x)
# Deconvolution
score2 = Conv2DTranspose(1, (4, 4), strides=2, name='score2')(x)
# Skip connections from pool4
score_pool4 = Conv2D(1, (1, 1), name='score-pool4')(pool4)
score_pool4c = Cropping2D((5, 5))(score_pool4)
score_fused = Add()([score2, score_pool4c])
score4 = Conv2DTranspose(1, (4, 4), strides=2, name='score4', use_bias=False)(score_fused)
# Skip connections from pool3
score_pool3 = Conv2D(1, (1, 1), name='score-pool3')(pool3)
score_pool3c = Cropping2D((9, 9))(score_pool3)
score_pool3c = ZeroPadding2D(padding=((1,0), (1,0)))(score_pool3c)
# Fuse things together
score_final = Add()([score4, score_pool3c])
# Final up-sampling and cropping
upsample = Conv2DTranspose(1, (16, 16), strides=8, name='upsample', use_bias=False)(score_final)
upscore = Cropping2D(((31, 37), (31, 37)))(upsample)
output = CrfRnnLayer(image_dims=(height, weight),
num_classes=1,
theta_alpha=160.,
theta_beta=3.,
theta_gamma=3.,
num_iterations=10,
name='crfrnn')([upscore, img_input])
k = Flatten()(output)
k = Dense(512, activation='relu')(k)
k = Dropout(.5)(k)
k = Dense(512, activation='relu')(k)
predictions = Dense(1, activation='sigmoid')(k)
# Build the model
model = Model(img_input, predictions, name='crfrnn_net')
return model
`
I am stuck, as my intuition would say that it is fine to flatten the probability map and then feed it to a NN.
Any tips?
The text was updated successfully, but these errors were encountered:
Hey,
I am trying to flatten the output of the crffnn_layer, because I have a binary classification task, instead of a segmentation (i know... ). I am getting the error of the a dimension mistatch:
`
ValueError: Dimensions must be equal, but are 250000 and 94864 for 'dense_1/MatMul' (op: 'MatMul') with input shapes: [1,250000], [94864,512].
`
The input are 64x64x3 images (channels last), which are convoluted and then fed to the model. Currently I am using the network architecture that is provided with the examples, adapted:
`
`
I am stuck, as my intuition would say that it is fine to flatten the probability map and then feed it to a NN.
Any tips?
The text was updated successfully, but these errors were encountered: