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 05 Python
Python中的类与对象之描述符详解
Mar 27 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
Python实现的自定义多线程多进程类示例
Mar 23 Python
python3处理含有中文的url方法
May 10 Python
python去除文件中重复的行实例
Jun 29 Python
python字典的值可以修改吗
Jun 29 Python
Python 如何调试程序崩溃错误
Aug 03 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python 视频画质增强
Apr 28 Python
python+opencv实现目标跟踪过程
Jun 21 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配置文件中最常用四个ini函数
2007/03/19 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Windows下安装Scrapy
2018/10/17 Python
Python2与Python3的区别实例分析
2019/04/11 Python
python 随机森林算法及其优化详解
2019/07/11 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
曼城官方网上商店:Manchester City
2019/09/10 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
C语言基础笔试题
2013/04/27 面试题
工业自动化专业自荐信范文
2014/04/10 职场文书
房屋转让协议书
2014/10/18 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
爱的教育观后感
2015/06/17 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
企业年会祝酒词
2015/08/11 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang