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 数据加密代码
Dec 24 Python
python通过函数属性实现全局变量的方法
May 16 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
django 修改server端口号的方法
May 14 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
python flask搭建web应用教程
Nov 19 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
python三引号如何输入
Jul 06 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python实现视频自动打码的示例代码
Apr 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
创意活动策划书
2014/01/15 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
捐资助学倡议书
2014/04/15 职场文书
小学教师评语大全
2014/04/23 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
学校会议通知范文
2015/04/15 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python