Tensorflow 管路辅助装置。与Sparset传感器配合
我正在尝试使用稀疏传感器创建一个带有稀疏二进制numpy coo矩阵(报告)的LinearClassifier。这是使用TensorFlow 0.9.0的 我的做法如下:Tensorflow 管路辅助装置。与Sparset传感器配合,tensorflow,Tensorflow,我正在尝试使用稀疏传感器创建一个带有稀疏二进制numpy coo矩阵(报告)的LinearClassifier。这是使用TensorFlow 0.9.0的 我的做法如下: reports_indices = list() rows,cols = reports.nonzero() for row,col in zip(rows,cols): reports_indices.append([row,col]) x_sparsetensor = tf.SparseTensor( indi
reports_indices = list()
rows,cols = reports.nonzero()
for row,col in zip(rows,cols):
reports_indices.append([row,col])
x_sparsetensor = tf.SparseTensor(
indices=reports_indices,
values=[1] * len(reports_indices),
shape=[reports.shape[0],reports.shape[1]])
m = tf.contrib.learn.LinearClassifier()
m.fit(x=x_sparsetensor,y=response_vector.todense(),input_fn=None)
报告的尺寸为10K乘1.5K
然后,我设置LinearClassifier,如下所示:
reports_indices = list()
rows,cols = reports.nonzero()
for row,col in zip(rows,cols):
reports_indices.append([row,col])
x_sparsetensor = tf.SparseTensor(
indices=reports_indices,
values=[1] * len(reports_indices),
shape=[reports.shape[0],reports.shape[1]])
m = tf.contrib.learn.LinearClassifier()
m.fit(x=x_sparsetensor,y=response_vector.todense(),input_fn=None)
响应向量是二进制的,长度为10K。这将导致以下错误:
Traceback (most recent call last):
File "ddi_prr.py", line 38, in <module>
m.fit(x=x_sparsetensor,y=response_vector.todense(),input_fn=None)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 173, in fit
input_fn, feed_fn = _get_input_fn(x, y, batch_size)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 67, in _get_input_fn
x, y, n_classes=None, batch_size=batch_size)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 117, in setup_train_data_feeder
X, y, n_classes, batch_size, shuffle=shuffle, epochs=epochs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 240, in __init__
batch_size)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py", line 44, in _get_in_out_shape
x_shape = list(x_shape[1:]) if len(x_shape) > 1 else [1]
TypeError: object of type 'Tensor' has no len()
回溯(最近一次呼叫最后一次):
文件“ddi_prr.py”,第38行,在
m、 拟合(x=x\u sparsetensor,y=response\u vector.todense(),input\u fn=None)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第173行
输入\u fn,馈送\u fn=\u获取\u输入\u fn(x,y,批次大小)
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py”,第67行,输入
x、 y,n_类=无,批次大小=批次大小)
文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/learn/python/learn/io/data\u feeder.py”,第117行,在setup\u train\u data\u feeder中
十、 y,n_类,批量大小,洗牌=洗牌,历代=历代)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/contrib/learn/python/learn/io/data_feeder.py”,第240行,在u_init中__
批次(单位尺寸)
文件“/usr/local/lib/python2.7/dist packages/tensorflow/contrib/learn/python/learn/io/data\u feeder.py”,第44行,in\u get\u in\u out\u形状
x_形状=列表(x_形状[1:]),如果len(x_形状)>1 else[1]
TypeError:“Tensor”类型的对象没有len()
由于某种原因,我的构造是错误的吗?似乎LinearClassifier.fit不能用x的SparSetSensor实例化,是这样吗?提前感谢您的帮助。据我所知,将
SparseTensors
作为x
或y
参数传递给。fit
是:
x:形状的矩阵或张量[n_样本,n_特征…]。可以是
返回特征数组的迭代器。训练输入样本
用于拟合模型。如果设置,则输入\ fn必须为无
另外,SparseTensor
是Tensor
的稀疏等价物——表示要执行的符号计算的对象。我相信您希望用作x
的是。
您可以尝试使用其他方式将数据传递给估计器:input\u fn
函数:
def get_input_fn(sparse_x, y):
def input_fn():
return sparse_x, y
m.fit(input_fn=get_input_fn(x, y))
如果它不起作用,您可以尝试在input\fn
函数内产生SparseTensor
s