Tensorflow 管路辅助装置。与Sparset传感器配合

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

我正在尝试使用稀疏传感器创建一个带有稀疏二进制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(
  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