我正在尝试使用Tensorflow和python(3.6)创建我的第一个卷积神经网络。这是我的代码的相关部分:
def init_weights(shape):
init_random_dist = tf.truncated_normal(shape , stddev = 0.1)
return tf.Variable(init_random_dist)
def init_bias(shape):
init_bias_vals = tf.constant(0.1 , shape = shape)
return tf.Variable(init_bias_vals)
def conv2d(x,W):
return tf.nn.conv2d(x , W, strides = [1,1,1,1] , padding = 'SAME')
def max_pool_2by2(x):
tf.nn.max_pool(x , ksize = [1,2,2,1] , strides = [ 1,2,2,1 ] , padding ='SAME')
def convolutional_layer(input_x,shape):
W = init_weights(shape)
b = init_bias([shape[3]])
return tf.nn.relu(conv2d(input_x,W)+b)
x = tf.placeholder(tf.float32 , shape = [ None , 784 ])
y_true = tf.placeholder(tf.float32 , shape = [ None , 10 ])
x_image = tf.reshape(x , [-1 , 28 , 28 , 1])
convo_1 = convolutional_layer(x_image , shape = [5,5,1,32])#height-width-inputchannels-no.ofkernels
convo_1_pooling = max_pool_2by2(convo_1)
convo_2 = convolutional_layer(convo_1_pooling,shape = [5,5,32,64])
convo_2_pooling = max_pool_2by2(convo_2)
我正在使用此网络的MNIST数据集,因此是784和28x28。这是我得到的错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
509 as_ref=input_arg.is_ref,
--> 510 preferred_dtype=default_dtype)
511 except TypeError as err:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx)
1035 if ret is None:
-> 1036 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
1037
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in _constant_tensor_conversion_function(v, dtype, name, as_ref)
234 _ = as_ref
--> 235 return constant(v, dtype=dtype, name=name)
236
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in constant(value, dtype, shape, name, verify_shape)
213 tensor_util.make_tensor_proto(
--> 214 value, dtype=dtype, shape=shape, verify_shape=verify_shape))
215 dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape)
420 if values is None:
--> 421 raise ValueError("None values not supported.")
422 # if dtype is provided, forces numpy array to be the type
ValueError: None values not supported.
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
523 observed = ops.internal_convert_to_tensor(
--> 524 values, as_ref=input_arg.is_ref).dtype.name
525 except ValueError as err:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx)
1035 if ret is None:
-> 1036 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
1037
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in _constant_tensor_conversion_function(v, dtype, name, as_ref)
234 _ = as_ref
--> 235 return constant(v, dtype=dtype, name=name)
236
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in constant(value, dtype, shape, name, verify_shape)
213 tensor_util.make_tensor_proto(
--> 214 value, dtype=dtype, shape=shape, verify_shape=verify_shape))
215 dtype_value = attr_value_pb2.AttrValue(type=tensor_value.tensor.dtype)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_util.py in make_tensor_proto(values, dtype, shape, verify_shape)
420 if values is None:
--> 421 raise ValueError("None values not supported.")
422 # if dtype is provided, forces numpy array to be the type
ValueError: None values not supported.
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-17-d2abcb4a99e1> in <module>()
3 convo_1_pooling = max_pool_2by2(convo_1)
4
----> 5 convo_2 = convolutional_layer(convo_1_pooling,shape = [5,5,32,64])
6 convo_2_pooling = max_pool_2by2(convo_2)
<ipython-input-14-aed4eef361c3> in convolutional_layer(input_x, shape)
2 W = init_weights(shape)
3 b = init_bias([shape[3]])
----> 4 return tf.nn.relu(conv2d(input_x,W)+b)
<ipython-input-6-52ed03971cc3> in conv2d(x, W)
1 def conv2d(x,W):
----> 2 return tf.nn.conv2d(x , W, strides = [1,1,1,1] , padding = 'SAME')
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_nn_ops.py in conv2d(input, filter, strides, padding, use_cudnn_on_gpu, data_format, dilations, name)
629 "Conv2D", input=input, filter=filter, strides=strides,
630 padding=padding, use_cudnn_on_gpu=use_cudnn_on_gpu,
--> 631 data_format=data_format, dilations=dilations, name=name)
632 _result = _op.outputs[:]
633 _inputs_flat = _op.inputs
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords)
526 raise ValueError(
527 "Tried to convert '%s' to a tensor and failed. Error: %s" %
--> 528 (input_name, err))
529 prefix = ("Input '%s' of '%s' Op has type %s that does not match" %
530 (input_name, op_type_name, observed))
ValueError: Tried to convert 'input' to a tensor and failed. Error: None values not supported.
请询问可能需要的更多详细信息。我是TensorFlow的新手。
答案 0 :(得分:0)
函数max_pool_2by2
不返回任何值,因此convo_1_pooling
为None
。