基础学习——python 归一化、反归一化、标准化、反标准化、python输出数据显示不完全怎么解决

python 归一化、反归一化、标准化、反标准化、python输出数据显示不完全怎么解决



前言


# 我这里用的数据类型为tensor
# 如果你是numpy ,可以把程序里所有的torch改为np
import torch 
import numpy as np
import cv2 
# 如果想要数据显示完整可以加上这两行
# np.set_printoptions(threshold=np.inf)
# torch.set_printoptions(profile="full")

1、最大值归一化、反归一化

#------------------------------#
# 最大值归一化
def preprocess_input(image):
    image /= 255.0
    return image
# 最大值反归一化
def unpreprocess_input(image):
    image *= 255.0
    return image
#-----------------------------#

2、线性函数归一化、反归一化

我真的是不知道该怎么称呼这个函数,有的说是线性函数归一化,有的称其为[0,1]标准化。

#-----------------------------------------#
# 线性函数归一化、[0,1]标准化
# 将特征缩放到给定的最小值和最大值之间
# 无法消除量纲对方差、协方差的影响
# 图片: min:0、 max:255
def MaxMinNormalization(data,min,max):
    data = (data - min) / (max - min)
    return data

# 线性函数反归一化
# data:需要归一化的数据
# gen_data:归一化之前的根数据用来确定最大值和最小值
def UnMaxMinNormalization(data,min,max):  
    return data*(max-min) + min

#-----------------------------------------#

3、均值方差标准化、反标准化

#-----------------------------------------#
# 均值方差标准化
# 使用距离来度量相似性
# 避免了不同量纲的选取对距离计算产生的巨大影响
def ZscoreNormalization(data, mean, std):
    data= (data - mean) / std
    return data
# 均值方差反标准化
def UnscoreNormalization(data, mean, std):
    data= data* std + mean
    return data
#----------------------------------------#

4、torchvision框架 transform

# torchvision框架 transform
transform = transforms.Compose(
    [transforms.ToTensor(),  # 函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

sklearn来操作可以参考http://t.csdn.cn/Wilrn

5、python输出数据显示不完全怎么解决

我这里用 jupyter notebook 和pycharm 环境运行都是可以的。

numpy数据加这一行

np.set_printoptions(threshold=np.inf)

tensor数据加这一行

torch.set_printoptions(profile="full")

6、总程序

# 我这里用的数据类型为tensor
# 如果你是numpy ,可以把程序里所有的torch改为np
import torch 
import numpy as np
import cv2 
# np.set_printoptions(threshold=np.inf)
# torch.set_printoptions(profile="full")
#------------------------------#
# 最大值归一化
def preprocess_input(image):
    image /= 255.0
    return image
# 最大值反归一化
def unpreprocess_input(image):
    image *= 255.0
    return image
#-----------------------------#

#-----------------------------------------#
# 线性函数归一化、[0,1]标准化
# 将特征缩放到给定的最小值和最大值之间
# 无法消除量纲对方差、协方差的影响
# 图片: min:0、 max:255
def MaxMinNormalization(data,min,max):
    data = (data - min) / (max - min)
    return data

# 线性函数反归一化
# data:需要归一化的数据
# gen_data:归一化之前的根数据用来确定最大值和最小值
def UnMaxMinNormalization(data,min,max):  
    return data*(max-min) + min

#-----------------------------------------#
# 均值方差标准化
# 使用距离来度量相似性
# 避免了不同量纲的选取对距离计算产生的巨大影响
def ZscoreNormalization(x, mean_, std_):
    x = (x - mean_) / std_
    return x
# 均值方差反标准化
def UnscoreNormalization(x, mean, std):
    x = x * std + mean
    return x
#----------------------------------------#
image = cv2.imread("D:/code/data/319.jpg")  # 读图片
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)  # 转灰度图
image = torch.tensor(image).float()   # numpy 转tensor   int8 转 float()
#------------------------------------------------------#
#最大值归一化
image1 = preprocess_input(image)     
# 最大值反归一化
image2 = unpreprocess_input(image1)   
#------------------------------------------------------#

#------------------------------------------------------#
# 线性函数归一化
image3 = MaxMinNormalization(image,torch.amin(image),torch.amax(image))
# 线性函数反归一化
image4 = UnMaxMinNormalization(image3,torch.amin(image),torch.amax(image))
# image,image3,image4
#------------------------------------------------------#
# 均值方差标准化
image5 = ZscoreNormalization(image3,torch.mean(image3,axis=0),torch.std(image3,axis=0))    
# 均值方差反标准化
image6 = UnscoreNormalization(image5,torch.mean(image3,axis=0),torch.std(image3,axis=0))    
# image3,image5,image6
#------------------------------------------------------#


总结

未完待续,,,,

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chaoy6565

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值