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 相关文章推荐
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
python处理按钮消息的实例详解
Jul 11 Python
python实现用户答题功能
Jan 17 Python
python使用suds调用webservice接口的方法
Jan 03 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
python 自定义装饰器实例详解
Jul 20 Python
python django model联合主键的例子
Aug 06 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
PyTorch的torch.cat用法
Jun 28 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初学入门
2006/11/19 PHP
php页面缓存方法小结
2015/01/10 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
解决Python二维数组赋值问题
2019/11/28 Python
python 实现矩阵填充0的例子
2019/11/29 Python
解决Python3下map函数的显示问题
2019/12/04 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
销售高级职员求职信
2013/10/29 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
机关出纳岗位职责
2014/04/03 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
详解Python类和对象内容
2021/06/22 Python
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS