Python TensorFlow:卷积网络中的维数不相容误差

Python TensorFlow:卷积网络中的维数不相容误差,python,numpy,machine-learning,tensorflow,Python,Numpy,Machine Learning,Tensorflow,我假设权重变量weights['wc1']的形状不正确,但我不确定正确的形状是什么。问题是,您的输入图像(在\u X中)有3个通道(可能是红色、绿色和蓝色),而层conv1的卷积滤波器(在\u weights['wc1']中)需要1个输入通道 对于如何解决此问题,至少有两种可能性: 重新定义权重['wc1']以接受3个输入通道: I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library lib

我假设权重变量
weights['wc1']
的形状不正确,但我不确定正确的形状是什么。

问题是,您的输入图像(在
\u X
中)有3个通道(可能是红色、绿色和蓝色),而层
conv1
的卷积滤波器(在
\u weights['wc1']
中)需要1个输入通道

对于如何解决此问题,至少有两种可能性:

  • 重新定义权重['wc1']以接受3个输入通道:

    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
    Traceback (most recent call last):
      File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module>
        globals = debugger.run(setup['file'], None, None, is_module)
      File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 1802, in run
        launch(file, globals, locals)  # execute the script
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 104, in <module>
        pred = vgg_single_frame(x, weights, biases, keep_prob)
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 50, in vgg_single_frame
        conv1 = conv2d('conv1', _X, _weights['wc1'], _biases['bc1'],s=2)
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 38, in conv2d
        return tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(l_input, w, strides=[1, s, s, 1], padding='SAME'),b), name=name)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py", line 211, in conv2d
        use_cudnn_on_gpu=use_cudnn_on_gpu, name=name)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.py", line 655, in apply_op
        op_def=op_def)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2042, in create_op
        set_shapes_for_outputs(ret)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1528, in set_shapes_for_outputs
        shapes = shape_func(op)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/common_shapes.py", line 187, in conv2d_shape
        input_shape[3].assert_is_compatible_with(filter_shape[2])
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 94, in assert_is_compatible_with
        % (self, other))
    ValueError: Dimensions Dimension(3) and Dimension(1) are not compatible
    
  • 使用
    tf.image.rgb\u to_grayscale()
    op:

    weights = {
        'wc1': tf.Variable(tf.random_normal([7, 7, 3, 96])), # ...
        # ...
    }
    

  • 问题是您的输入图像(在
    \ux
    中)有3个通道(可能是红色、绿色和蓝色),而层
    conv1
    的卷积滤波器(在
    \u权重['wc1']
    中)需要1个输入通道

    对于如何解决此问题,至少有两种可能性:

  • 重新定义权重['wc1']以接受3个输入通道:

    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
    I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
    Traceback (most recent call last):
      File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module>
        globals = debugger.run(setup['file'], None, None, is_module)
      File "/home/anilil/projects/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 1802, in run
        launch(file, globals, locals)  # execute the script
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 104, in <module>
        pred = vgg_single_frame(x, weights, biases, keep_prob)
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 50, in vgg_single_frame
        conv1 = conv2d('conv1', _X, _weights['wc1'], _biases['bc1'],s=2)
      File "/media/anilil/Data/charm/Cnn/build_vgg_model.py", line 38, in conv2d
        return tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(l_input, w, strides=[1, s, s, 1], padding='SAME'),b), name=name)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py", line 211, in conv2d
        use_cudnn_on_gpu=use_cudnn_on_gpu, name=name)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/op_def_library.py", line 655, in apply_op
        op_def=op_def)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2042, in create_op
        set_shapes_for_outputs(ret)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1528, in set_shapes_for_outputs
        shapes = shape_func(op)
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/common_shapes.py", line 187, in conv2d_shape
        input_shape[3].assert_is_compatible_with(filter_shape[2])
      File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 94, in assert_is_compatible_with
        % (self, other))
    ValueError: Dimensions Dimension(3) and Dimension(1) are not compatible
    
  • 使用
    tf.image.rgb\u to_grayscale()
    op:

    weights = {
        'wc1': tf.Variable(tf.random_normal([7, 7, 3, 96])), # ...
        # ...
    }