You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tf.matmul(A, B, a_is_sparse=True) fails on a = ops.convert_to_tensor(a, name="a") with cryptic error.
Example code:
import tensorflow as tf
import numpy as np
x = tf.sparse_placeholder(tf.float32)
y = tf.Variable(tf.random_uniform([9, 9], minval=0.0, maxval=1.0, dtype=tf.float32))
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
indices = np.array([[3, 2], [4, 5]], dtype=np.int64)
values = np.array([1.0, 2.0], dtype=np.float32)
shape = np.array([9, 9], dtype=np.int64)
_ = sess.run(tf.matmul(x, y), feed_dict={
x: tf.SparseTensorValue(indices, values, shape)})
Error:
line 12, in
_ = sess.run(tf.matmul(x, y, a_is_sparse=True), feed_dict={
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/math_ops.py", line 1189, in matmul
a = ops.convert_to_tensor(a, name="a")
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 620, in convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 179, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 162, in constant
tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 421, in make_tensor_proto
tensor_proto.string_val.extend([compat.as_bytes(x) for x in proto_values])
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/util/compat.py", line 44, in as_bytes
raise TypeError('Expected binary or unicode string, got %r' % bytes_or_text)
TypeError: Expected binary or unicode string, got <tensorflow.python.framework.ops.SparseTensor object at 0x11d952d90>
Is fixed by explicitly converting from sparse to dense tensor before multiplication:
import tensorflow as tf
import numpy as np
x = tf.sparse_placeholder(tf.float32)
z = tf.sparse_tensor_to_dense(x)
y = tf.Variable(tf.random_uniform([9, 9], minval=0.0, maxval=1.0, dtype=tf.float32))
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
indices = np.array([[3, 2], [4, 5]], dtype=np.int64)
values = np.array([1.0, 2.0], dtype=np.float32)
shape = np.array([9, 9], dtype=np.int64)
_ = sess.run(tf.matmul(z, y), feed_dict={
x: tf.SparseTensorValue(indices, values, shape)})
The text was updated successfully, but these errors were encountered:
Flags a_is_sparse and b_is_sparse do not indicate the operands being SparseTensors. Instead, they are algorithmic hints to invoke a more efficient algorithm on the two dense Tensor operands.
To matmul a SparseTensor and a dense Tensor, you could use tf.sparse_tensor_dense_matmul() instead.
Flags a_is_sparse and b_is_sparse do not indicate the operands being SparseTensors. Instead, they are algorithmic hints to invoke a more efficient algorithm on the two dense Tensor operands.
This should be part of the documentation of matmut. It is very unclear what the flag a_is_sparse does.
tf.matmul(A, B, a_is_sparse=True) fails on a = ops.convert_to_tensor(a, name="a") with cryptic error.
Example code:
Error:
line 12, in
_ = sess.run(tf.matmul(x, y, a_is_sparse=True), feed_dict={
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/math_ops.py", line 1189, in matmul
a = ops.convert_to_tensor(a, name="a")
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 620, in convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 179, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 162, in constant
tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 421, in make_tensor_proto
tensor_proto.string_val.extend([compat.as_bytes(x) for x in proto_values])
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/util/compat.py", line 44, in as_bytes
raise TypeError('Expected binary or unicode string, got %r' % bytes_or_text)
TypeError: Expected binary or unicode string, got <tensorflow.python.framework.ops.SparseTensor object at 0x11d952d90>
Is fixed by explicitly converting from sparse to dense tensor before multiplication:
The text was updated successfully, but these errors were encountered: