tensorflow:ValueError:Shape必须为2级,但是'MatMul_1'的等级为4

时间:2017-08-18 03:13:42

标签: python tensorflow sparse-matrix

当我尝试将密集矩阵与稀疏矩阵相乘时,我遇到了以下代码中的错误。

import tensorflow as tf
import numpy as np

A = tf.sparse_placeholder(tf.float32)
B = tf.sparse_placeholder(tf.float32)

IsFoc = tf.placeholder(tf.float32, [None, 1])
IsFoc_Diag = tf.diag(IsFoc)

IsUnFoc = tf.placeholder(tf.float32, [None, 1])
IsUnFoc_Diag = tf.diag(IsUnFoc)

b = tf.matmul(IsFoc_Diag,IsUnFoc_Diag)
a = tf.matmul(IsFoc_Diag,tf.sparse_tensor_to_dense(A),a_is_sparse=False,b_is_sparse=True)

错误说:

Traceback (most recent call last):
  File "a.py", line 14, in <module>
    a = tf.matmul(IsFoc_Diag,tf.sparse_tensor_to_dense(A),a_is_sparse=False,b_is_sparse=True)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/math_ops.py", line 1813, in matmul
    name=name)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/ops/gen_math_ops.py", line 2245, in _sparse_mat_mul
    b_is_sparse=b_is_sparse, name=name)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op
    op_def=op_def)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2508, in create_op
    set_shapes_for_outputs(ret)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1873, in set_shapes_for_outputs
    shapes = shape_func(op)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1823, in call_with_requiring
    return call_cpp_shape_fn(op, require_shape_fn=True)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py", line 610, in call_cpp_shape_fn
    debug_python_shape_fn, require_shape_fn)
  File "/home/mypath.pfc/anaconda2/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py", line 676, in _call_cpp_shape_fn_impl
    raise ValueError(err.message)
ValueError: Shape must be rank 2 but is rank 4 for 'MatMul_1' (op: 'SparseMatMul') with input shapes: [?,1,?,1], ?.

我知道有类似的问题讨论类似的错误,但是,我无法得到这种错误的关键原因。

错误只发生在a = tf.matmul(IsFoc_Diag,tf.sparse_tensor_to_dense(A),a_is_sparse=False,b_is_sparse=True)行。我希望有人能够回答我的问题。

非常感谢!

0 个答案:

没有答案