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 Django框架实现自定义表单提交
Mar 25 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
基于Python的关键字监控及告警
Jul 06 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
pandas ix &iloc &loc的区别
Jan 10 Python
python交易记录整合交易类详解
Jul 03 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
Python画图高斯分布的示例
Jul 10 Python
Django如何继承AbstractUser扩展字段
Nov 27 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
用Python提取PDF表格的方法
Apr 11 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实现维护文件代码
2007/06/14 PHP
PHP 命名空间实例说明
2011/01/27 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python的时间模块datetime详解
2017/04/17 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python redis 删除key脚本的实例
2019/02/19 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
如何选择使用结构还是类
2014/05/30 面试题
《陈涉世家》教学反思
2014/04/12 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
师德师风自我评价范文
2014/09/11 职场文书
中学教师个人总结
2015/02/10 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
总结Python连接CS2000的详细步骤
2021/06/23 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏