博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tensorflow笔记1:基础函数、embedding_lookup
阅读量:6440 次
发布时间:2019-06-23

本文共 2301 字,大约阅读时间需要 7 分钟。

函数一:tf.nn.embedding_lookup()

ERROR:

I get this error: TypeError: Tensors in list passed to 'values' of 'ConcatV2' Op have types [float32, float64] that don't all match. is it because deprecated function in Tensorflow 1.0, or this is a problem with the script or a problem of deprecation can someone help

解决办法:

#之前的:tf.nn.embedding_lookup(embeddings, encoder_inputs)#修改后的:#will cast you're embeddings to tf.float64, which was what was caussing the concat between float32 and float64 error. I solved it by replacing above withtf.nn.embedding_lookup(embeddings, encoder_inputs)tf.cast(encoder_inputs_embedded,tf.float32)#and also casting the embeddings variable to float32 (assuming its a numpy array).

tf.nn.embedding_lookup函数的用法主要是选取一个张量里面索引对应的元素。tf.nn.embedding_lookup(tensor, id):tensor就是输入张量,id就是张量对应的索引,其他的参数不介绍。

例如:

import tensorflow as tf;  import numpy as np;    c = np.random.random([10,1])  b = tf.nn.embedding_lookup(c, [1, 3])    with tf.Session() as sess:      sess.run(tf.initialize_all_variables())      print sess.run(b)      print c

输出:

[[ 0.77505197]

 [ 0.20635818]]
[[ 0.23976515]
 [ 0.77505197]
 [ 0.08798201]
 [ 0.20635818]
 [ 0.37183035]
 [ 0.24753178]
 [ 0.17718483]
 [ 0.38533808]
 [ 0.93345168]
 [ 0.02634772]]

分析:输出为张量的第一和第三个元素。

样例2:

  • 原型:tf.nn.embedding_lookup(params, ids, partition_strategy='mod', name=None, validate_indices=True, max_norm=None)
  • 在网上搜会发现基本都是假设ids只有一行,但是假如ids有若干行,会怎样?
  • 直接上代码:
# -*- coding= utf-8 -*-import tensorflow as tfimport numpy as npa = [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3], [4.1, 4.2, 4.3]]a = np.asarray(a)idx1 = tf.Variable([0, 2, 3, 1], tf.int32)idx2 = tf.Variable([[0, 2, 3, 1], [4, 0, 2, 2]], tf.int32)out1 = tf.nn.embedding_lookup(a, idx1)out2 = tf.nn.embedding_lookup(a, idx2)init = tf.global_variables_initializer()with tf.Session() as sess:    sess.run(init)    print sess.run(out1)    print out1    print '=================='    print sess.run(out2)    print out2

 

输出:

[[ 0.1  0.2  0.3] [ 2.1  2.2  2.3] [ 3.1  3.2  3.3] [ 1.1  1.2  1.3]]Tensor("embedding_lookup:0", shape=(4, 3), dtype=float64)==================[[[ 0.1  0.2  0.3]  [ 2.1  2.2  2.3]  [ 3.1  3.2  3.3]  [ 1.1  1.2  1.3]] [[ 4.1  4.2  4.3]  [ 0.1  0.2  0.3]  [ 2.1  2.2  2.3]  [ 2.1  2.2  2.3]]]Tensor("embedding_lookup_1:0", shape=(2, 4, 3), dtype=float64)

 

 

转载地址:http://itdwo.baihongyu.com/

你可能感兴趣的文章
newLISP你也行 --- 字符串
查看>>
【译】Swift 2.0 下面向协议的MVVM架构实践
查看>>
html5拖拽
查看>>
Android工具HierarchyViewer 代码导读(2) -- 建立Eclipse调试环境
查看>>
GC配置对性能的帮助
查看>>
java list按时间倒序、首字母排序
查看>>
hls之m3u8、ts流格式详解
查看>>
中国有望成为全球最大3D打印市场
查看>>
ecshop在其他的页面调用首页的flash主广告的方法
查看>>
lamp安装
查看>>
BDDynamicGridViewController
查看>>
【笔记】《活法》(稻盛和夫)
查看>>
C语言的一些误用和知识总结
查看>>
几何画板如何绘制动态正切函数图像
查看>>
实操演练!MathType几个绝妙小技巧!
查看>>
ChemDraw常用到的几种技巧
查看>>
通过查询java API中的String类完成任务
查看>>
linux下SNMP方式监控 (三)
查看>>
awk使用案例总结
查看>>
电脑结构和CPU、内存、硬盘三者之间的关系
查看>>