Python 在Tensorflow函数中使用稀疏矩阵参数
我是Tensorflow的新手。我试图用python编写一个函数,使用Tensorflow对稀疏矩阵输入进行操作。通常我会定义一个tensorflow占位符,但显然稀疏矩阵没有占位符 定义对tensorflow中的稀疏数据进行操作并向其中传递值的函数的正确方法是什么 具体地说,我试图重写一个多层感知器的基本示例,在这里找到的,接受稀疏输入而不是密集输入 作为一个虚拟示例,您将如何编写一个类似这样的函数Python 在Tensorflow函数中使用稀疏矩阵参数,python,tensorflow,sparse-matrix,Python,Tensorflow,Sparse Matrix,我是Tensorflow的新手。我试图用python编写一个函数,使用Tensorflow对稀疏矩阵输入进行操作。通常我会定义一个tensorflow占位符,但显然稀疏矩阵没有占位符 定义对tensorflow中的稀疏数据进行操作并向其中传递值的函数的正确方法是什么 具体地说,我试图重写一个多层感知器的基本示例,在这里找到的,接受稀疏输入而不是密集输入 作为一个虚拟示例,您将如何编写一个类似这样的函数 import tensorflow as tf x = tf.placeholder("s
import tensorflow as tf
x = tf.placeholder("sparse")
y = tf.placeholder("float", [None, n_classes])
# Create model
def sparse_multiply(x, y):
outlayer = tf.sparse_tensor_dense_matmul(x, y)
return out_layer
pred = multiply(x, y)
# Launch the graph
with tf.Session() as sess:
result = sess.run(pred, feed_dict={x: x_input, y: y_input})
链接中的某个人建议,作为一种解决方法,传入构建稀疏矩阵所需的元素,然后在函数中动态创建稀疏矩阵。这似乎有点老套,当我试图以这种方式构建它时,我会出错
任何帮助,特别是代码的答案,将不胜感激 我想我知道了。我链接到的建议实际上起了作用,我只需要更正所有输入,使其具有一致的类型。下面是我在问题中列出的虚拟示例,代码正确:
import tensorflow as tf
import sklearn.feature_extraction
import numpy as np
def convert_csr_to_sparse_tensor_inputs(X):
coo = X.tocoo()
indices = np.mat([coo.row, coo.col]).transpose()
return indices, coo.data, coo.shape
X = ____ #Some sparse 2 x 8 csr matrix
y_input = np.asarray([1, 1, 1, 1, 1, 1, 1, 1])
y_input.shape = (8,1)
x_indices, x_values, x_shape = convert_csr_to_sparse_tensor_inputs(X)
# tf Graph input
y = tf.placeholder(tf.float64)
values = tf.placeholder(tf.float64)
indices = tf.placeholder(tf.int64)
shape = tf.placeholder(tf.int64)
# Create model
def multiply(values, indices, shape, y):
x_tensor = tf.SparseTensor(indices, values, shape)
out_layer = tf.sparse_tensor_dense_matmul(x_tensor, y)
return out_layer
pred = multiply(values, indices, shape, y)
# Launch the graph
with tf.Session() as sess:
result = sess.run(pred, feed_dict={values: x_values, indices: x_indices, shape: x_shape, y: y_input})