将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输出当前目录下index.html文件路径的方法
Apr 28 Python
详解Python的Lambda函数与排序
Oct 25 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python Django的web开发实例(入门)
Jul 31 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
python pyg2plot的原理知识点总结
Feb 28 Python
python中pymysql包操作数据库方法
Apr 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中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PDO::query讲解
2019/01/29 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
js DOM模型操作
2009/12/28 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
Python中shutil模块的学习笔记教程
2017/04/04 Python
python使用mysql数据库示例代码
2017/05/21 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
会员活动策划方案
2014/08/19 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2016年父亲节寄语
2015/12/04 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
python小型的音频操作库mp3Play
2022/04/24 Python