将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 相关文章推荐
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
对python 读取线的shp文件实例详解
Dec 22 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
Pytest allure 命令行参数的使用
Apr 18 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
利用Python实现Picgo图床工具
Nov 23 Python
Python使用Web框架Flask开发项目
Jun 01 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实现rc4加密算法代码
2012/04/25 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
学雷锋月活动总结
2014/04/25 职场文书
离婚协议书范本2014
2014/10/27 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
python多线程方法详解
2022/01/18 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫