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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 Python
Python程序员开发中常犯的10个错误
Jul 07 Python
零基础写python爬虫之HTTP异常处理
Nov 05 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Python 实现自动导入缺失的库
Oct 29 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
利用python绘制正态分布曲线
Jan 04 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
Python机器学习之底层实现KNN
Jun 20 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
destoon之一键登录设置
2014/06/21 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python中static相关知识小结
2018/01/02 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
送餐员岗位职责范本
2014/02/21 职场文书
领导干部保密承诺书
2014/08/30 职场文书
完整版商业计划书
2014/09/15 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
离职感谢信怎么写
2015/01/22 职场文书
社会实践活动报告
2015/02/05 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书