- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一段时间才能生成SparseTensor
# dense is an n x m matrix
sparse = coo_matrix(dense) # almost instantaneous
# for legibility
sparse_indicies = list(zip(
sparse.row.astype(np.int64).tolist(),
sparse.col.astype(np.int64).tolist()
)) # almost instantaneous
type_casted = (sparse.data).astype(np.float32) # almost instantaneous
# takes ages
input_tensor = tf.SparseTensor(
indices = sparse_indicies,
values = type_casted,
dense_shape = sparse.shape
)
# save to file so I can load it to memory locally if it exists.
如何单独保存它?我尝试过pickle和npy但没有成功。
import pickle, numpy as np
filename = os.path.expanduser('~/tmp/test.tmp')
with open(fn, 'wb') as f:
pickle.dump(tf_sparse, f)
# throws "TypeError: can't pickle _thread.RLock objects"
np.save(fn, tf_sparse)
# throws "TypeError: can't pickle _thread.RLock objects"
import os, tensorflow as tf, numpy as np
def write_tf_sparse(sparse, filename:str=None):
'''
Arguments:
sparse (scipy.sparse coo_matrix)
filename (str): full path to save the file. Default "~/Desktop/tf_sparse.pb"
Returns:
None
'''
filename = os.path.join(os.path.expanduser('~/Desktop'), 'tf_sparse.pb')
with tf.Graph().as_default():
row_indices = sparse.row.astype(np.int64).tolist()
col_indices = sparse.col.astype(np.int64).tolist()
sparse_indicies = list(zip(row_indices, col_indices))
val_cast = (sparse.data).astype(np.float32)
# Make TensorFlow constants
indices = tf.constant(sparse_indicies, name='Indices')
values = tf.constant(val_cast, name='Values')
shape = tf.constant(sparse.shape, dtype=tf.int64, name='Shape')
# Serialize graph
graph_def = tf.get_default_graph().as_graph_def()
with open(filename, 'wb') as f:
f.write(graph_def.SerializeToString())
def load_tf_sparse(filename:str=None):
filename = os.path.join(os.path.expanduser('~/Desktop'), 'tf_sparse.pb') if filename is None else filename
# Read graph
graph_def = tf.GraphDef()
with open(filename, 'rb') as f:
graph_def.MergeFromString(f.read())
# Import tensors
indices, values, shape = tf.import_graph_def(
graph_def, return_elements=['Indices', 'Values', 'Shape'], name='SparseTensorImport')
del graph_def
# print(indices, values, shape)
# Create sparse tensor
input_tensor = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)
return input_tensor
那么让我们尝试一下:
[1]: write_tf_sparse(sparse) # takes a while as expected
[2]: tf_sparse = load_tf_sparse()
TypeError Traceback (most recent call last)
<ipython-input-9-f0dee854ed2c> in <module>
----> 1 tf_sparse = load_tf_sparse()
<ipython-input-7-ffbf8b1df08d> in load_tf_sparse(filename)
39 # print(indices, values, shape)
40 # Create sparse tensor
---> 41 input_tensor = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)
42 return input_tensor
/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/sparse_tensor.py in __init__(self, indices, values, dense_shape)
119 [indices, values, dense_shape]):
120 indices = ops.convert_to_tensor(
--> 121 indices, name="indices", dtype=dtypes.int64)
122 # Always pass as_ref=True because we want to be able to update
123 # values later if it is a VariableOp.
/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in convert_to_tensor(value, dtype, name, preferred_dtype)
996 name=name,
997 preferred_dtype=preferred_dtype,
--> 998 as_ref=False)
999
1000
/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in internal_convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, ctx)
1092
1093 if ret is None:
-> 1094 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
1095
1096 if ret is NotImplemented:
/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in _operation_conversion_error(op, dtype, name, as_ref)
5913 raise TypeError(("Can't convert Operation '%s' to Tensor "
5914 "(target dtype=%r, name=%r, as_ref=%r)") % (op.name, dtype,
-> 5915 name, as_ref))
5916
5917
TypeError: Can't convert Operation 'SparseTensorImport/Indices' to Tensor (target dtype=tf.int64, name='indices', as_ref=False)
最佳答案
您可以尝试创建 TensorFlow 常量并将其存储在 GraphDef
文件中,然后在需要时加载该文件并将其导入到您的图表中。不过,我无法判断这是否会比您当前的方法更快。
要将常量导出到文件,您可以执行以下操作:
import tensorflow as tf
# In an independent graph to make sure only the data we want is stored
with tf.Graph().as_default():
sparse = coo_matrix(dense)
sparse_indicies = list(zip(
sparse.row.astype(np.int64).tolist(),
sparse.col.astype(np.int64).tolist()
))
type_casted = (sparse.data).astype(np.float32)
# Make TensorFlow constants
indices = tf.constant(sparse_indicies, name='Indices', dtype=tf.int64)
values = tf.constant(type_casted, name='Values')
shape = tf.constant(sparse.shape, dtype=tf.int64, name='Shape')
# Serialize graph
graph_def = tf.get_default_graph().as_graph_def()
with open('sparse_tensor_data.pb', 'wb') as f:
f.write(graph_def.SerializeToString())
您可以从其他地方导入它,如下所示:
import tensorflow as tf
# Read graph
graph_def = tf.GraphDef()
with open('sparse_tensor_data.pb', 'rb') as f:
graph_def.MergeFromString(f.read())
# Import tensors
indices, values, shape = tf.import_graph_def(
graph_def, return_elements=['Indices:0', 'Values:0', 'Shape:0'], name='SparseTensorImport')
del graph_def
# Create sparse tensor
input_tensor = tf.SparseTensor(indices=indices, values=values, dense_shape=shape)
关于python - TensorFlow 自己保存一个 SparseTensor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55099935/
在我的机器学习研究之后,我现在在神经网络中,我有一个任务 - 文本分类 - 使用神经网络。 在下面,我展示了我到目前为止所拥有的 过程数据 计数器向量化器 现在我正在尝试编译 NN 但是我收到以下信息
我需要一段时间才能生成SparseTensor # dense is an n x m matrix sparse = coo_matrix(dense) # almost instantaneous
我正在尝试使用 稀疏张量 表示全连接层中的权重变量。 但是,TensorFlow 0.8 似乎不允许使用 SparseTensor 作为 tf.Variable。 有什么办法可以解决这个问题吗? 我试
我正在开发一个 TensorFlow 项目,其中“目标”定义为: 目标 = tf.sparse_placeholder(tf.int32, name='targets') 现在使用 saver.sav
是否可以优雅地做到这一点? 现在我唯一能想到的就是将 SparseTensor 的索引 (tf.int64)、值 (tf.float32) 和形状 (tf.int64) 保存在 3 个单独的功能中(前
我正在尝试将张量(其中一些是稀疏的)从 RAM 提供给模型。我创建了一个 PaddingFIFOQueue,假设稀疏值无法通过其他方法从 RAM 中批量处理(如果情况并非如此,请告诉我),我将稀疏张量
SparseTensor 和 SparseTensorValue 有什么区别?如果我想基于联邦索引和值构建稀疏张量,我应该记住什么?我只能找到一些玩具示例。 最佳答案 这取决于您定义稀疏张量的位置。
为什么这不起作用: pl_input = tf.sparse_placeholder('float32',shape=[None,30]) W = tf.Variable(tf.random_norm
比如说,如果我有两个 SparseTensor,如下所示: [[1, 0, 0, 0], [2, 0, 0, 0], [1, 2, 0, 0]] 和 [[1.0, 0, 0, 0], [1.0,
为了快速调试,我尝试打印出刚刚初始化的 SparseTensor。 内置的 print 函数只是说它是一个 SparseTensor 对象,而 tf.Print() 给出了一个错误。错误语句确实打印了
我以前问过这个问题Create boolean mask on TensorFlow关于如何仅将某些索引设置为 1 并将其余索引设置为 0 来获取张量。 我认为@MZHm 给出的答案可以完全解决我的问
我使用 tensorflow 对象检测 API 中的代码生成了一个 pascal voc 2007 tfrecords 文件。我用 tf.contrib.data.Dataset API从 tfrec
这个问题已经有答案了: Sparse Tensor (matrix) from a dense Tensor Tensorflow (5 个回答) 已关闭 5 年前。 有没有办法将稠密张量转换为稀疏张
所以,我想屏蔽 SparseTensor 的整行。使用 tf.boolean_mask 很容易做到这一点,但没有与 SparseTensor 等效的方法。目前,我可以只遍历 SparseTensor.
我想计算 tf.SparseTensor 的 axis=0 的平均值。我想要类似 tf.sparse_reduce_sum 的东西。 TensorFlow 没有提供类似的均值计算函数。有什么方法可以计
我正在为 imdb 情感分析数据集构建文本分类模型。我下载了数据集并按照此处给出的教程进行操作 - https://developers.google.com/machine-learning/gui
我有一个由 SVM-Light 格式的稀疏 TF-IDF 特征矩阵创建的 Scipy 稀疏 CSR 矩阵。特征的数量很大而且很稀疏,所以我必须使用 SparseTensor 否则它太慢了。 例如,特征
我正在尝试使用 tensorflow tf.sparse_tensor_dense_matmul(X, W1)。X 定义为 tf.placeholder: X = tf.placeholder("fl
您好,我正在尝试用 2D Tensor 进行 3D SparseTensor 矩阵乘法。这是一个玩具示例: 3D 张量矩阵与 2D 张量相乘 import tensorflow as tf impor
我是一名优秀的程序员,十分优秀!