将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之引用和类属性的初步理解
May 15 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python项目跨域问题解决方案
Jun 22 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 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数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js实现五星评价功能
2017/03/08 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
生产制造追溯系统之在线打印功能
2019/06/03 Javascript
深入理解Python中变量赋值的问题
2017/01/12 Python
python实现Floyd算法
2018/01/03 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
车间调度岗位职责
2013/11/30 职场文书
向领导表决心的话
2014/03/11 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
气象学专业个人求职信
2014/04/22 职场文书
高中生操行评语大全
2014/04/25 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
交通事故责任认定书
2015/08/06 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
浅谈MySQL中的六种日志
2022/03/23 MySQL