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中的ctime()方法使用教程
May 22 Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python单例模式实例解析
Aug 28 Python
Python 元组操作总结
Sep 18 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
Python多线程正确用法实例解析
May 30 Python
详解python中的异常捕获
Dec 15 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
selenium如何定位span元素的实现
Jan 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PHP 快速排序算法详解
2014/11/10 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python中分支语句与循环语句实例详解
2018/09/13 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python爬虫中多线程的使用详解
2019/09/23 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
flask项目集成swagger的方法
2020/12/09 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
python源文件的字符编码知识点详解
2021/03/04 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
《彩色世界》教学反思
2014/04/12 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
关爱残疾人标语
2014/06/25 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
义诊活动总结
2015/02/04 职场文书