Python Tensorflow-无法将浮点变量添加到稀疏占位符矩阵
我试图在tensorflow中的矩阵上实现一个简单的函数。矩阵是通过占位符输入的,是稀疏张量。我想用一个可学习的浮点变量(比如alpha)乘以矩阵的每个元素,并在其中添加一个可学习的偏差项(比如beta)。我添加了一个激活函数,比如relu/tanhPython Tensorflow-无法将浮点变量添加到稀疏占位符矩阵,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我试图在tensorflow中的矩阵上实现一个简单的函数。矩阵是通过占位符输入的,是稀疏张量。我想用一个可学习的浮点变量(比如alpha)乘以矩阵的每个元素,并在其中添加一个可学习的偏差项(比如beta)。我添加了一个激活函数,比如relu/tanh m_2 = relu(alpha*m + beta) 我正试图实现以下目标: alpha = tf.get_variable("alpha", shape=[1,], dtype=tf.float32, initialize
m_2 = relu(alpha*m + beta)
我正试图实现以下目标:
alpha = tf.get_variable("alpha", shape=[1,], dtype=tf.float32, initializer =
tf.contrib.layers.xavier_initializer())
beta = tf.get_variable("beta", shape=[1, ], dtype=tf.float32,
initializer = tf.contrib.layers.xavier_initializer())
m_2 = tf.nn.relu(alpha * m + beta)
但我得到了以下错误:
TypeError: Expected float32, got <tensorflow.python.framework.sparse_tensor.SparseTensor object at 0x0000026A771AE358> of type 'SparseTensor' instead.
TypeError:应为float32,而应为'SparseTensor'类型。
有趣的是,当我删除beta的添加,即当我将M'更改为以下值时,错误会发生变化:
m_2 = tf.nn.relu(alpha * m)
TypeError: Failed to convert object of type <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'> to Tensor. Contents: SparseTensor(indices=Tensor("Placeholder_2:0", shape=(?, ?), dtype=int64), values=Tensor("mul_1:0", shape=(?,), dtype=float32), dense_shape=Tensor("Placeholder:0", shape=(?,), dtype=int64)). Consider casting elements to a supported type.
m_2=tf.nn.relu(alpha*m)
TypeError:无法将类型的对象转换为Tensor。内容:SparseTensor(索引=张量(“占位符_2:0”,形状=(?,?),数据类型=int64),值=张量(“mul_1:0”,形状=(?,),数据类型=float32),密集_形状=张量(“占位符:0”,形状=(?,),数据类型=int64))。将铸造元素考虑为支持类型。
最后,如果我不应用tf.nn.relu,m2=alpha*m
我的代码工作正常
有人能帮助我了解正在发生的事情,以及我如何使它工作吗