'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(Image, tf.float32) - mean 

但对三通道各减去其对应通道的均值时,若写成:

Image[:,:,0]= Image[:,:,0] - imgMean[0]
Image[:,:,1]= Image[:,:,1] - imgMean[1]
Image[:,:,2]= Image[:,:,2] - imgMean[2]

上述方式对numpy array 表达是可行的,但对tensor进行此操作,会出现'Tensor' object does not support item assignment 的错误。对tensor中某些元素赋值存在问题,对tensor整体赋值可行。

解决办法:采用中间变量,不指定tensor的具体维度即可赋值,再将中间变量赋给目标值

tmp_0 = Image[:,:,0] - imgMean[0]
tmp_1 = Image[:,:,1] -imgMean[1]
tmp_2 = Image[:,:,2] -imgMean[2]    
Image = tf.stack([tmp_0,tmp_1,tmp_2],2)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值