人工智障与深度学渣之问题集锦:ValueError: Shape must be rank 4 but is rank 1 for 'Conv2D' with input shapes。。。

醉最近在写网络的时候,总会遇到一些坑,虽然大部分都能百度到,但还是有一些坑让我郁闷。比较好久没写网络了,以前的填坑经验也都忘了。比如这里的报错:

ValueError: Shape must be rank 4 but is rank 1 for 'Conv2D' (op: 'Conv2D') with input shapes: [1,32,280,1], [4].

在CSDN上好像也没找找有效的解决办法(可能自己太水,找不到>_<)。所以这里也就记录一下。源代码看下面:

import tensorflow as tf
input = tf.Variable(tf.ones([1, 32, 280, 1]))
conv = tf.nn.conv2d(input, [3,3,1,64], strides=[1, 1, 1, 1], padding='SAME',data_format='NHWC')
ret = tf.identity(tf.nn.bias_add(conv, [64], data_format='NHWC'))
print(ret)

原因分析:主要还是因为卷积网络的权重和偏执没有初始化导致。将其修改为:

input = tf.Variable(tf.ones([1, 32, 280, 1]))
w = tf.get_variable("weight", [3, 3, 1,64],initializer=tf.truncated_normal_initializer(stddev=0.1))
b = tf.get_variable("biase", [64], initializer=tf.truncated_normal_initializer(0.0))
conv = tf.nn.conv2d(input, w, strides=[1, 1, 1, 1], padding='SAME', data_format='NHWC')
ret = tf.identity(tf.nn.bias_add(conv,b, data_format='NHWC'))
print(ret)

注意看啊,添加了权重和偏执项。这个时候就可以输出结果了:

人工智障与深度学渣之问题集锦:ValueError: Shape must be rank 4 but is rank 1 for 'Conv2D' with input shapes。。。_第1张图片

你可能感兴趣的:(人工智障之深度学渣,问题集锦)