python - Dimensional Error in CNN -
i'm trying create cnn distinguishing between cats , dog data have taken kaggle m facing error after flattening layer.
model parameters follows:
img_size=55 filter_size = 5; no_of_filters1 = 16; no_of_filters2 = 32; no_of_filters3 = 64; classes=2 x=tf.placeholder(tf.float32,[none,img_size,img_size,1]) y=tf.placeholder(tf.float32,[none,classes]) w1= weights([filter_size,filter_size,1,no_of_filters1]) w2= weights([filter_size,filter_size,no_of_filters1,no_of_filters2]) w3= weights([filter_size,filter_size,no_of_filters2,no_of_filters3]) wfc=weights([no_of_filters3,625])-error w_0=weights([625,classes])
my cnn model:
def model(x,w1,w2,w3,w4,w_o): #layer1 layer1= tf.nn.conv2d(x,w1,strides=[1,1,1,1],padding='same') layer1= tf.nn.relu(layer1) layer1=tf.nn.max_pool(layer1,ksize=[1,2,2,1],strides=[1,2,2,1],padding='same') # layer2 layer2 = tf.nn.conv2d(layer1,w2, strides=[1, 1, 1, 1], padding='same') layer2 = tf.nn.relu(layer2) layer2 = tf.nn.max_pool(layer2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1],padding='same') layer3 = tf.nn.conv2d(layer2,w3, strides=[1, 1, 1, 1], padding='same') layer3 = tf.nn.relu(layer3) layer3 = tf.nn.max_pool(layer3, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1],padding='same') layer_shape= layer3.get_shape() num_features = layer_shape[1:4].num_elements() fc_layer=tf.reshape(layer3,[-1,num_features]) fc_layer=tf.nn.relu(fc_layer) ouput_layer= tf.nn.relu(tf.matmul(fc_layer,w4)) logits= tf.matmul(ouput_layer,w_o) return logits
error being raised :
valueerror: dimensions must equal, 1024 , 64 'matmul' (op: 'matmul') input shapes: [?,1024], [64,625].
kindly guide me.
for fc layer need have match weights
first dimension input last dimension, in case, 1024
no_filters_in = 1024 wfc=weights([no_filters_in, no_of_filters3])
Comments
Post a Comment