Tensorflow 实现修改张量特定元素的值方法


Posted in Python onJuly 30, 2018

最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些小实验,这里总结一下遇到的一些问题。

Tensorflow用起来不是很顺手,很大原因在于tensor这个玩意儿,并不像数组或者列表那么的直观,直接print的话只能看到 Tensor(…) 这样的提示。比如下面这个问题,我们想要修改张量特定位置上的某个数值,操作起来就相对麻烦一些。和array一样,张量也是可以分段读取的,比如 tensor[1:10], tensor[:3]这种操作都是支持的,但是,张量是不能直接修改数值的。

比如,如果是array的话,一句赋值语句就可以将某个元素的值进行修改,但是,如果用同样的方法处理tensor的话,就会报错:

import tensorflow as tf
tensor_1 = tf.constant([x for x in range(1,10)])
# tensor_1 是一个数值为1到9的张量,希望把中间第五个数值改为0 
tensor_1[4] = 0

这时就会报错,错误类型是:

TypeError: 'Tensor' object does not support item assignment

所以说tensor是可以分段读取,但是不能直接修改的,有点像“只读”的模式。怎么解决呢?从其他博客中我总结了一个方法,后来自己又想了一个:

# 方法一 : 运用concat函数
tensor_1 = tf.constant([x for x in range(1,10)])
# 将原来的张量拆分为3部分,修改位置前的部分,要修改的部分和修改位置之后的部分
i = 4
part1 = tensor_1[:i]
part2 = tensor_1[i+1:]
val = tf.constant([0])
new_tensor = tf.concat([part1,val,part2], axis=0)

这时候再去打印,就可以看到第五个数已经变成了0。

# 方法二:使用one_hot来进行加减运算
tensor_1 = tf.constant([x for x in range(1,10)])
i = 4
# 生成一个one_hot张量,长度与tensor_1相同,修改位置为1
shape = tensor_1.get_shape().as_list()
one_hot = tf.one_hot(i,shape[0],dtype=tf.int32)
# 做一个减法运算,将one_hot为一的变为原张量该位置的值进行相减
new_tensor = tensor_1 - tensor_1[i] * one_hot

当然,tensor有一个assign的函数,但是他每次更新不能针对于相对位置,而是相当于对整个变量的重新赋值,在某些特定场合下,这个自带函数似乎并不是太好用。

以上这篇Tensorflow 实现修改张量特定元素的值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
编程语言Python的发展史
Sep 26 Python
Python实现从百度API获取天气的方法
Mar 11 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python环境变量设置方法
Aug 28 Python
python opencv之SURF算法示例
Feb 24 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python配置grpc环境
Jan 01 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
利用python 读写csv文件
Sep 10 Python
总结Python使用过程中的bug
Jun 18 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 #Python
对TensorFlow的assign赋值用法详解
Jul 30 #Python
Python双向循环链表实现方法分析
Jul 30 #Python
tensorflow更改变量的值实例
Jul 30 #Python
Python使用分布式锁的代码演示示例
Jul 30 #Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 #Python
利用Python如何批量更新服务器文件
Jul 29 #Python
You might like
PHP 批量更新网页内容实现代码
2010/01/05 PHP
php中对2个数组相加的函数
2011/06/24 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
结婚喜宴家长答谢词
2014/01/15 职场文书
家长给学校的建议书
2014/05/15 职场文书
六一儿童节标语
2014/10/08 职场文书
党员查摆剖析材料
2014/10/10 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书