将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例


Posted in Python onJanuary 04, 2020

在神经网络计算过程中,经常会遇到需要将矩阵中的某些元素取出并且单独进行计算的步骤(例如MLE,Attention等操作)。那么在 tensorflow 的 Variable 类型中如何做到这一点呢?

首先假设 Variable 是一个一维数组 A:

import numpy as np

import tensorflow as tf

a = np.array([1, 2, 3, 4, 5, 6, 7, 8])

A = tf.Variable(a)

我们把我们想取出的元素的索引存到 B 中,如果我们只想取出数组 A 中的某一个元素,则 B 的设定为:

b = np.array([3])

B = tf.placeholder(dtype=tf.int32, shape=[1])

由于我们的索引坐标只有一维,所以 shape=1。

取出元素然后组合成tensor C 的操作如下:

C = tf.gather_nd(A, B)

运行:

init = tf.global_variables_initializer()

with tf.Session() as sess:
  init.run()
  feed_dict = {B: b}
  result = sess.run([C], feed_dict=feed_dict)
  print result

得到:

[4]

如果我们想取出一维数组中的多个元素,则需要把每一个想取出的元素索引都单独放一行:

b = np.array([[3], [2], [5], [0]])

B = tf.placeholder(dtype=tf.int32, shape=[4, 1])

此时由于我们想要从一维数组中索引 4 个数,所以 shape=[4, 1]

再次运行得到:

[4 3 6 1]

////////////////////////////////////////////////////////////////////////////////////华丽丽的分割线

假设 Variable 是一个二维矩阵 A:

a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

A = tf.Variable(a)

首先我们先取出 A 中的一个元素,需要给定该元素的行列坐标,存到 B 中:

b = np.array([2,3])

B = tf.placeholder(dtype=tf.int32, shape=[2])

注意由于我们输入的索引坐标变成了二维,所以shape也变为2。

取出元素然后组合成tensor C:

C = tf.gather_nd(A, B)

运行:

init = tf.global_variables_initializer()

with tf.Session() as sess:
  init.run()
  feed_dict = {B: b}
  result = sess.run([C], feed_dict=feed_dict)
  print result

得到:

[12]

同样的,如果我们想取出二维矩阵中的多个元素,则需要把每一个想取出的元素的索引都单独放一行:

b = np.array([[2, 3], [1, 0], [2, 2], [0, 1]])

B = tf.placeholder(dtype=tf.int32, shape=[4, 2])

此时由于我们想要从二维矩阵中索引出 4 个数,所以 shape=[4, 2]

再次运行得到:

[12 5 11 2]

////////////////////////////////////////////////////////////////////////////////////华丽丽的分割线

推广到 n 维矩阵中:

假设 A 是 Variable 类型的 n 维矩阵,我们想取出矩阵中的 m 个元素,那么首先每个元素的索引坐标要表示成列表的形式:

index = [x1, x2, x3, ..., xn]

其中 xj 代表该元素在 n 维矩阵中第 j 维的位置。

其次每个坐标要单独占索引矩阵的一行:

index_matrix = [[x11, x12, x13, ..., x1n],

               [x21, x22, x23, ..., x2n],

               [x31, x32, x33, ..., x3n],

               .......................................,

               [xm1, xm2, xm3, ..., xmn]]

最后用 tf.gather_nd() 函数替换即可:

result = tf.gather_nd(A, index_matrix)

////////////////////////////////////////////////////////////////////////////////////华丽丽的分割线

[注] 问题出自:https://stackoverflow.com/questions/44793286/slicing-tensorflow-tensor-with-tensor

以上这篇将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 实现红包随机生成算法的简单实例
Jan 04 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python挖矿算力测试程序详解
Jul 03 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
Python修改DBF文件指定列
Dec 19 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 #Python
对tensorflow中的strides参数使用详解
Jan 04 #Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 #Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 #Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 #Python
Python调用钉钉自定义机器人的实现
Jan 03 #Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 #Python
You might like
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
python概率计算器实例分析
2015/03/25 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Django实现分页功能
2018/07/02 Python
Python中return self的用法详解
2018/07/27 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
浅谈python 类方法/静态方法
2020/09/18 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
大学校园活动策划书
2014/02/04 职场文书
八一建军节感言
2014/02/28 职场文书
四年级评语大全
2014/04/21 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers