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

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


文章目录

  • python 归一化、反归一化、标准化、反标准化、python输出数据显示不完全怎么解决
  • 前言
      • 1、最大值归一化、反归一化
      • 2、线性函数归一化、反归一化
      • 3、均值方差标准化、反标准化
      • 4、torchvision框架 transform
      • 5、python输出数据显示不完全怎么解决
      • 6、总程序
  • 总结


前言


# 我这里用的数据类型为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
#------------------------------------------------------#


总结

未完待续,,,,

你可能感兴趣的:(基础学习,python,开发语言,pytorch,深度学习)