tensorflow 中,修改张量tensor特定元素的值

Tensorflow小技巧整理:修改张量特定元素的值 Tensorflow小技巧整理:修改张量特定元素的值 最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些小实验,这里总结一下遇到的一些问题。 Tensorflow用起来不是很顺手,很大原因在于tensor这个玩意儿,并不像数组或者列表那么的直观,直接print的话只能看到 Tensor(…) 这样的... 阅读详情

tensorflow中:

                   constant tensor不能直接赋值,否则会报错:

               TypeError: 'Tensor' object does not support item assignment

       Variable tensor不能为某个特定元素赋值,只能为整个变量tensor全部赋值。

                                        赋值命令为:new_state = tf.assign(state,new_tensor)

 为了解决张量元素赋值问题,上网查看解决方法,主要是针对一维张量的,主要是用one_hot来实现,如文章:张量元素值修改,

本文参照其思想,实现2D张量元素替换,如果想实现更高维度的张量的元素赋值,可以在此基础上再进行修改。

脚本如下,亲测可行,如有纰漏,欢迎大家拍砖指教。

#-*-coding:utf-8-*-
import tensorflow as tf
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())

def tensor_expand(tensor_Input,Num):
    '''
    张量自我复制扩展,将Num个tensor_Input串联起来,生成新的张量,
    新的张量的shape=[tensor_Input.shape,Num]
    :param tensor_Input:
    :param Num:
    :return:
    '''
    tensor_Input = tf.expand_dims(tensor_Input,axis=0)
    tensor_Output = tensor_Input
    for i in range(Num-1):
        tensor_Output= tf.concat([tensor_Output,tensor_Input],axis=0)
    return tensor_Output

def get_one_hot_matrix(height,width,position):
    '''
    生成一个 one_hot矩阵,shape=【height*width】,在position处的元素为1,其余元素为0
    :param height:
    :param width:
    :param position: 格式为【h_Index,w_Index】,h_Index,w_Index为int格式
    :return:
    '''
    col_length = height
    row_length = width
    col_one_position = position[0]
    row_one_position = position[1]
    rows_num = height
    cols_num = width

    single_row_one_hot = tf.one_hot(row_one_position, row_length, dtype=tf.float32)
    single_col_one_hot = tf.one_hot(col_one_position, col_length, dtype=tf.float32)

    one_hot_rows = tensor_expand(single_row_one_hot, rows_num)
    one_hot_cols = tensor_expand(single_col_one_hot, cols_num)
    one_hot_cols = tf.transpose(one_hot_cols)

    one_hot_matrx = one_hot_rows * one_hot_cols
    return one_hot_matrx

def tensor_assign_2D(tensor_input,position,value):
    '''
    给 2D tensor的特定位置元素赋值
    :param tensor_input: 输入的2D tensor,目前只支持2D
    :param position: 被赋值的张量元素的坐标位置,=【h_index,w_index】
    :param value:
    :return:
    '''
    shape = tensor_input.get_shape().as_list()
    height = shape[0]
    width = shape[1]
    h_index = position[0]
    w_index = position[1]
    one_hot_matrix = get_one_hot_matrix(height, width, position)

    new_tensor = tensor_input - tensor_input[h_index,w_index]*one_hot_matrix +one_hot_matrix*value

    return new_tensor

if __name__=="__main__":
    ##test
    tensor_input = tf.constant([i for i in range(20)],tf.float32)
    tensor_input = tf.reshape(tensor_input,[4,5])
    new_tensor = tensor_assign_2D(tensor_input,[2,3],100)

    print(new_tensor.eval())

本文原创,如需转载,请注明出处:https://blog.youkuaiyun.com/Strive_For_Future/article/details/82426015

 

 

 

TensorFlow改变张量特定切片中元素的值 有时我们希望改变TensorFlow张量中某些元素的值。然而在TensorFlow中,Tensor对象不支持切片赋值。我们可以通过改变张量某些元素的值来获取一个新的张量,从而实现上述功能。 阅读详情

相关推荐

Tensorflow 实现修改张量特定元素的值方法

今天小编就为大家分享一篇Tensorflow 实现修改张量特定元素的值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

'Tensor' object does not support item assignment

本代码中对需要对图像tensor 每一个通道进行减均值若图像image为[BatchSize, height, width, channel],对每一个channel求图像的均值,3通道得到的均值为imgMean = [mean0, mean1, mean2]在tensorflow中读取tfrecord数据,读到的图像为tensor,对其所有通道减去同一均值为Image = tf.cast(Ima...

ghy_111的博客 1万+

浅谈tensorflow中张量的提取值和赋值

tf.gather和gather_nd从params中收集数值,tf.scatter_nd 和 tf.scatter_nd_update用updates更新某一张量。严格上说,tf.gather_nd和tf.scatter_nd_update互为逆操作。 已知数值的位置,从张量中提取数值:tf.gather, tf.gather_nd tf.gather indices每个元素(标量)是params某个axis的索引,tf.gather_nd 中indices最后一个阶对应于索引值。 tf.gather函数 函数原型 gather( params, indices, validate_

Tensorflow小Tips(二):如何给tensor赋值 —— tf.assign函数

  其实tensorflow里面如何改变tensor的值一直是很令人苦恼的事儿,不过我最近发现 tf.assign 函数可以对 tensor 进行整体的赋值。 调用方式 import tensorflow as tf w = tf.Variable(initial_value=[[1,1], [1,1]], dtype = tf.float32) update = tf.assign(...

Jingyang.Zhang的博客 1万+

深入解析MTK平台hang_detect机制:从原理到实战调试

本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。

purple的博客 1004

FA 新增资产API Demo

DECLARE l_trans_rec fa_api_types.trans_rec_type; l_dist_trans_rec fa_api_types.trans_rec_type; l_asset_hdr_rec fa_api_types.asset_hdr_rec_type; l_asset_desc_rec fa_a

chosen1brain的专栏 2142

tensorflow小技巧--tensor切片赋值

给tensor进行切片赋值是使用tensorflow开发模型的常用操作,具体方法如下: #定义一个5*2*3的变量 a=tf.Variable(tf.zeros((5,2,3)),name='myTensor') #对中间维度为1的切片进行赋值 a[:,1,:].assign(tf.constant([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]],dtype=tf.float32)) #赋值后的a <tf.Variable 'myTensor:0' s

yftadyz的博客 4775

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 491

‘Tensor‘ object does not support item assignment解决办法

错误原因 tensorflow张量中不允许逐元素的赋值,比如a是一个二维张量,a[1,1] = 0是个不合法的操作。 解决方法 优快云上有许多种解决方案,一种是采用中间变量.还有一种可以通过列表和tf.stack函数实现 ...

qq_36763031的博客 3396

QT快速配置MSVC2017编译环境(3分钟极简指南)

本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。

weixin_30399821的博客 503

stm32f407VET6 系统学习 day01 GPIO 配置

stm32f407VET6 系统学习 day01 GPIO 配置 LED 蜂鸣器 按键的不讲了,之前讲过了

she666666的博客 8904

Tensorflow修改张量特定位置元素的值

张量和array一样可以通过切片获取,但是张量不可以直接修改某个值。 可以理解为张量具有“只读”的模式。 如果按照数组修改某个值的方式处理的话,会报错: import tensorflow as tf tensor_1 = tf.constant([x for x in range(1,10)]) tensor_1[4] = 0 # TypeError: 'Tensor' object do...

CICI❤️的博客 2866

2 利用ITK实现多帧Dicom读取,VTK实现数据显示

vtk中也有dicom读写类,但是只能完成单帧DICOM数据读取,这对于实际应用是非常不利的。而ITK可以实现dicom多帧读取,通常情况ITK与VTK也会结合使用(ITK处理,VTK显示),所以就一起学习下吧!

buerbuhuitou的博客 1564

tensorflow修改变量某个特定tensor的值

tensorflow要实现这一功能真的无比蛋疼,目前较简单的方法只能通过拼接来实现,有如下两种方法: 方法1: def set_value(matrix, x, y, val): # 提取出要更新的行 row = tf.gather(matrix, x) # 构造这行的新数据 new_row = tf.concat([row[:y], [val], row[y+1:]], axis=0) # 使用 tf.scatter_update 方法进正行替换 re

fangfanglovezhou的博客 1951

别再为调试发愁!STM32CubeMX+FreeRTOS下,串口printf打印的保姆级配置指南(基于STM32F429)

本文详细介绍了在STM32CubeMX和FreeRTOS环境下实现稳定串口printf打印的配置方法。通过硬件选型、基础配置、线程安全的重定向实现以及高级调试技巧,帮助开发者解决多任务环境下的串口输出问题,提升调试效率。特别适用于STM32F429开发板用户。

weixin_42527401的博客 272

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 501

【tensorflow】[Python] tensorflow tensor的批量条件改值 如何修改tensor中符合特定条件的元素值 将满足特定规则的tensor元素值修改

问题叙述 这样一个tensor 想用类似 x[np.where(x > 8)] = 8 x[np.where(x<3)] = 3 的形式将其改成 这种批量的条件判断改值,由于tensor不能直接用索引修改值 尝试了几种方法, 比如更改为Varient、numpy 等 会出现 TypeError: only integer scalar arrays can be converted to a scalar index 或者 TypeError: ‘ResourceVariable’ obj

gongfpp的博客 4010

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

tensorflow 2.x 修改tensor中某些元素

tf中直接使用下标赋值会报错误 TypeError: 'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment 修改tensor 方法1 fromhttps://blog.youkuaiyun.com/Strive_For_Future/article/details/82426015 主要思想:假设tensor为4行5列,要修改位置为(2,3),将该位置元素修改为A。方法:生成一个矩阵,该矩阵.

qq_34418352的博客 7606

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

修改TF.tensor中的值

方法一: # 改变 tf.Tensor中的一个 3*3 矩阵: 重新赋值 temp temp = final[i:i + 3, j:j +3] + (lambd * final[i + 1, j + 1])*window # 切片 4 部分 top_section = final[0:i, :] # top behind_section = final[i + 3:, :] # behi...

Turbo_Come的博客 2604

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

在TensorFlow中怎么打印Tensor对象的值

在TensorFlow中,如何打印Tensor对象的值?对于下面这个TensorFlow矩阵乘法的例子: matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) product = tf.matmul(matrix1, matrix2) 当我打印product时,显示为一个TensorObject。 &l...

lcczzu的专栏 1万+

java 重写 tensorflow_Tensorflow 实现修改张量特定元素的值方法

最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些小实验,这里总结一下遇到的一些问题。Tensorflow用起来不是很顺手,很大原因在于tensor这个玩意儿,并不像数组或者列表那么的直观,直接print的话只能看到 Tensor(…) 这样的提示。比如下面这个问题,我们想要修改张量特定位置上的某个数值...

weixin_28737073的博客 208

tensorflow 行转为列_8 tensorflow修改tensor张量矩阵的某一列

1.tensorflow的数据流图限制了它的tensor是只读属性,因此对于一个Tensor(张量)形式的矩阵,想修改特定位置的元素,比较困难。2.我要做的是将所有的操作定义为符号形式的操作。也就是抽象概念的数据流图。当用feed_dict传入具体值以后,就能用sess.run读出具体值。一、相关内容https://blog.youkuaiyun.com/Cerisier/article/details/79...

weixin_39606019的博客 513

python打印tensor_在TensorFlow中怎么打印Tensor对象的值

在TensorFlow中,如何打印Tensor对象的值?对于下面这个TensorFlow矩阵乘法的例子:matrix1 = tf.constant([[3., 3.]])matrix2 = tf.constant([[2.],[2.]])product = tf.matmul(matrix1, matrix2)当我打印product时,显示为一个TensorObject。怎么知道product的实...

weixin_39593593的博客 915
上一篇: 1x1卷积核的作用
下一篇: 对tensorflow中的tensor、placeholder及feed_dict的理解
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值