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实现对一个完整url进行分割的方法
Apr 29 Python
Python标准库之Sys模块使用详解
May 23 Python
Python栈算法的实现与简单应用示例
Nov 01 Python
Python变量赋值的秘密分享
Apr 03 Python
利用python如何处理nc数据详解
May 23 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
python机器学习实现决策树
Nov 11 Python
python字符串的拼接方法总结
Nov 18 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
Python实现生成bmp图像的方法
Jun 13 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
支持oicq头像的留言簿(一)
2006/10/09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
求职简历自荐信
2013/10/20 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
小学综合实践活动总结
2014/07/07 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
党员公开承诺书2016
2016/03/24 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电