Tensorflow:指定形状与找到的形状不匹配

时间:2019-08-01 11:11:43

标签: python tensorflow

如果具有以下小型CNN(属于GAN的一部分)

def discriminator_v2(input, is_train, reuse=False):
    c2, c4 = 16,32  
    with tf.variable_scope('dis') as scope:
        if reuse:
            scope.reuse_variables()

        #Layer1
        conv1 = tf.layers.conv2d(input, c2, kernel_size=[5, 5], strides=[2, 2], padding="SAME",
                             kernel_initializer=tf.truncated_normal_initializer(stddev=0.02),
                             name='conv1')
        bn1 = tf.contrib.layers.batch_norm(conv1, is_training = is_train, epsilon=1e-5, decay = 0.9,  updates_collections=None, scope = 'bn1')
        act1 = lrelu(conv1, n='act1')

        #Layer2 
        conv2 = tf.layers.conv2d(act1, c4, kernel_size=[5, 5], strides=[2, 2], padding="SAME",
                             kernel_initializer=tf.truncated_normal_initializer(stddev=0.02),
                             name='conv2')
        bn2 = tf.contrib.layers.batch_norm(conv2, is_training=is_train, epsilon=1e-5, decay = 0.9,  updates_collections=None, scope='bn2')
        act2 = lrelu(bn2, n='act2')


        dim = int(np.prod(act2.get_shape()[1:]))
        fc1 = tf.reshape(act2, shape=[-1, dim], name='fc1')
        w2 = tf.get_variable('w2', shape=[fc1.shape[-1], 1], dtype=tf.float32,
                         initializer=tf.truncated_normal_initializer(stddev=0.02))
        b2 = tf.get_variable('b2', shape=[1], dtype=tf.float32,
                         initializer=tf.constant_initializer(0.0))

        logits = tf.add(tf.matmul(fc1, w2), b2, name='logits')

        return logits

如果我使用以下代码运行代码:

 discriminator_v2(image, is_train, reuse=True)

我收到以下错误

 ValueError: Trying to share variable dis/conv1/kernel, but specified shape (5, 5, 8, 8) and found shape (5, 5, 3, 8).

输入图像的形状为(?,8,8,8)

0 个答案:

没有答案