说明:本篇所有定义皆为个人理解,个人定义,如果有错误欢迎评论区讨论。
官方链接
原本计划是写tf.nn.embedding_lookup_sparse,和上一篇的tf.nn.embedding_lookup做比较,
但是由于tf.nn.embedding_lookup_sparse的输出需要是SparseTensor类,所以本篇先说一下
tf.SparseTensor这个api。
1. 先明确一下"稀疏"的定义
稀疏就是"少"的意思。什么少?数据少。
对应到矩阵来看,稀疏矩阵就是矩阵中大部分的值都是0,只有少部分值非零。反义词是稠密,稠
密矩阵与稀疏矩阵相反,不再赘述。
2. 那“稀疏张量”又是什么?
只用几个特性(参数)来描述一个稀疏矩阵的张量就叫做稀疏张量。tf.SparseTensor就用了三个维
度:indices,values,dense_shape来描述一个稀疏矩阵。
tf.SparseTensor的作用是构造一个稀疏矩阵类,便于为其他的API提供输入(稀疏矩阵的输入)。上
面的代码片段是这个类的构造器,一共需要传入3个变量,通过这三个变量构造一个稀疏矩阵。下
图是官方代码对这三个参数的解释,我认为解释地有失偏颇。