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实现从订阅源下载图片的方法
Mar 11 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
python Tensor和Array对比分析
Jan 08 Python
python的help函数如何使用
Jun 11 Python
基于python实现计算两组数据P值
Jul 10 Python
Python urllib3软件包的使用说明
Nov 18 Python
基于Python实现天天酷跑功能
Jan 06 Python
python中HTMLParser模块知识点总结
Jan 25 Python
python实现的人脸识别打卡系统
May 08 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批量生成缩略图的代码
2008/07/19 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
canvas绘制七巧板
2017/02/03 Javascript
require.js中的define函数详解
2017/07/10 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
详解python tkinter模块安装过程
2020/01/06 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
pygame实现飞机大战
2020/03/11 Python
什么是python的函数体
2020/06/19 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
客户代表自我评价范例
2013/09/24 职场文书
广告学毕业生求职信
2014/01/30 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
出国导师推荐信
2015/03/25 职场文书
计划生育工作总结2015
2015/04/03 职场文书
简爱电影观后感
2015/06/10 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers
python中filter,map,reduce的作用
2022/06/10 Python