假如说,你再处理文本的时候,写tfrecord的时候用的变长的类型,

example = tf.train.Example(features=tf.train.Features(feature={
'feats': _int64_feature(query_feats)
}))

那么读的时候会用到

features = tf.parse_single_example(
serialized_example,
features={
'feats': tf.VarLenFeature(tf.int64)
})
feats=features['feats']
return feats

这个东西返回值会是一个sparse_tensor,那么在embding_lookup的时候需要用到sparse的函数:

tf.nn.embedding_lookup_sparse(emb,feats, None, combiner="sum")

这在你用tfrecord的时候不会有什么问题,因为tensorflow会自动给你转换成sparse_tensor从而进行embding_lookup_sparse。

但是当你需要feed_dict进行测试的时候,非常不方便:

加入图是这么定义的:

sp_t=tf.sparse_placeholder(tf.int64)

res =tf.nn.embedding_lookup_sparse(emb,sp_t, None, combiner="sum")

举个简单的例子,比如我的矩阵是[1,2]

那么你feed_dict的时候需要:

sess.run(res,feed_dict={sp_t:tf.SparseTensorValue([[0,1], [0,2]], [1, 2], [1, 3]) })

你看多麻烦,你是需要把你的稀疏矩阵的格式转化成SparseTensorValue的格式,

所以呢,我看了一部分人是这么搞的,

1,在生成tfrecord的进行padding,所有处理都当成dense来处理。这样的缺点是tfrecord占用空间比较大

2,在读取到sparse tensor之后使用sparse_to_dense函数转成dense,build graph的时候用dense的来build,这样feed的时候也用可以直接输入的dense的矩阵。注意(sparse_to_dense可以指定padding的长度,sparse_tensor_to_dense会padding到自身最大的长度,如果是每个batch sequence长度不一样的话,用sparse_tensor_to_dense)

参考:

http://stackoverflow.com/questions/41105751/feeding-tensorflow-sparse-matrix-for-sparse-dense-multiplication-getting-the-fo

sparse_tensor feed_dict的时候十分不方便。的更多相关文章

  1. TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值—Jason niu

    #TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值 import tensorflow as tf input1 = tf.placeholder ...

  2. sess.run() 中的fetches和feed_dict

    sess.run()由fetches和feed_dict组成 sess.run(fetches,feed_dict) sess.run是让fetches节点动起来,告诉tensorflow,想要此节点 ...

  3. TensorFlow学习笔记(三)-- feed_dict 使用

    个人理解:就是TF的一种输入语法. 跟C语言的scanf(),C++的 cin>> 意思差不多,只是长相奇怪了点而已. 做完下面几个例子,基本也就适应了. 首先占位符申请空间:使用的时候, ...

  4. 记录:tensoflow改错TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float into a Te

    错误描述: TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float into a Tensor. 改错 ...

  5. TensorFlow学习笔记3——Placeholders and feed_dict

    1. Placeholders placeholders,顾名思义,就是占位的意思,举个例子:我们定义了一个关于x,y的函数 f(x,y)=2x+y,但是我们并不知道x,y的值,那么x,y就是等待确定 ...

  6. Tensorflow学习笔记——占位符和feed_dict(二)

    创建了各种形式的常量和变量后,但TensorFlow 同样还支持占位符.占位符并没有初始值,它只会分配必要的内存.在会话中,占位符可以使用 feed_dict 馈送数据. feed_dict是一个字典 ...

  7. tensorflow feed_dict()

    import tensorflow as tf a=tf.Variable(100) b=tf.Variable(200) c=tf.Variable(300) update1=tf.assign(c ...

  8. Tensorflow二分类处理dense或者sparse(文本分类)的输入数据

    这里做了一些小的修改,感谢谷歌rd的帮助,使得能够统一处理dense的数据,或者类似文本分类这样sparse的输入数据.后续会做进一步学习优化,比如如何多线程处理. 具体如何处理sparse 主要是使 ...

  9. 卷积神经网络提取特征并用于SVM

    模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...

随机推荐

  1. Centos7.1环境下搭建SVN

    环境准备: 系统 配置 IP Centos7.1 1核2G+60GB硬盘 10.10.28.204 1.安装 sudo yum install subversion 查看版本 svnserve –-v ...

  2. opencart3如何安装模板

    opencart 3模板采用twig模式,安装模板也有点不大一样,随ytkah一起来看看opencart3如何安装模板吧1.下载模板文件,用ftp上传到对应的位置,一般有几个文件夹,比如:admin. ...

  3. python框架之Flask(4)-上下文管理

    知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...

  4. 【LeetCode每天一题】Maximum Subarray(最大子数组)

    Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...

  5. [JavaScript] Frequently used method or solutions for issues

    Get the file name from the file path Solution: var fileName = fullPath.replace(/^.*[\\\/]/, ''); // ...

  6. Filte过滤器

    过滤器 , 其实就是对客户端发出来的请求进行过滤. 浏览器发出, 然后服务器派servlet处理.  在中间就可以过滤, 其实过滤器起到的是拦截的作用.生活中的过滤器例如:门禁,你有门卡才能过去,没有 ...

  7. sublime-text3打造markdown编辑器

    编辑插件 sublime自带的markdown语法高亮并不是很友好,推荐安装Markdown Editing,github主页然后在视图->语法里选择MarkdownEditing启用,支持三种 ...

  8. Rdlc 参数问题

    需要sql中的参数自动在生成报表的时候生成的方法: 例如有这样的sql需要自动生成:BeginTime 和 EndTime 两个参数: DECLARE @BeginTime DATETIME='201 ...

  9. yum downloadonly模式,保存所需软件及其依赖包

    command: sudo yum install --downloadonly --downloaddir='yourderictory'

  10. 【Bilinear interpolation】双线性插值详解(转)

           最近在做视频拼接的项目,里面用到了图像的单应性矩阵变换,在最后的图像重映射,由于目标图像的坐标是非整数的,所以需要用到插值的方法,用的就是双线性插值,下面的博文主要是查看了前辈的博客对双 ...