tensorflow传略

网友分享于:2015-09-23 16:51 发表在 行业应用
tensorflow杂记
本文记录使用tensorflow API过程中的遇到的一些坑

1、调试
print大法好:
tf.Print 可以在计算一个变量的同时,指定打印一组变量,参见:https://www.tensorflow.org/versions/master/api_docs/python/control_flow_ops.html#Print

2、条件语句
由于dropout, batchnorm等函数在训练、预测时的依赖不同,需要使用
tf.case 选择不同的执行路径,
tf.cond 相当于if
tf.case 相当于switch

示例及存在的问题参见:https://github.com/tensorflow/tensorflow/issues/4432

3、稀疏矩阵和tf.nn.embedding_lookup_sparse


这两个概念请单独理解,抛开tensorflow,如果你要表示一个稀疏矩阵要怎么表示?
是不是每个非零值有一个坐标和一个值,比如  (0,0):1.0
那么(0,0)就对应index中的一项, 1.0就对应value中的一项,
此外,这个矩阵还要有个大小,就对应shape项

再来说tf.nn.embedding_lookup_sparse,这个时候,矩阵的第一维已经是batch中样本的下标了,而第二维则是该特征对应的下标,,也就是(样本下标,特征下标)

需要注意的是,tensorflow中不允许样本没有也就是说batch_size为2的话,矩阵中至少要有两项:(0,x):1,  (1,x):0 (实在没有就自己填个0吧)

注意:tf.nn.embedding_lookup_sparse的结果并不是某一项,而是需要通过combiner对每个样本的所有特征进行聚合,比如样本0有两个非零特征:
(0,0):1, (0,3):2, combiner='sum',则对应的结果为 1+2=3
但是,当前的combiner只支持"mean", "sqrtn" and "sum", 如果需要max,min,可以考虑通过tf.nn.embedding_lookup + tf.segment_max的方式实现(未验证)
tf.segment_max:https://www.tensorflow.org/versions/master/api_docs/python/math_ops.html#segment_max
推荐分类: 企业开发 企业信息化 行业应用 GIS SAP Tivoli Lotus Exchange SharePoint Dynamics CRM K2 BPM 报表
推荐标签: php websocket input navicat finereport
相关文章
最新发表
热门推荐