当前位置:   article > 正文

【Python初级】基本函数_python tpe出来的是什么损失

python tpe出来的是什么损失

一、常用概念

1.有监督学习与无监督学习:

有监督学习的训练集要求包括输入和输出,即特征和标签,包括回归、分类、支持向量机(SVM)、决策树、随机森林、人工神经网络等。无监督学习的样本数据类型未知,输入数据未被标记,在训练集中寻找规律,从而学到或建立模型,包括:聚类、主成分分析法(PCA)

2. TorchMetrics

TorchMetrics是一个开源的PyTorch原生的函数和度量模块的集合,用于简单的性能评估。目前支持超过25个指标,并不断增加更多的通用任务和特定领域的标准(目标检测,NLP等)

3.方法重写

方法的重写,不能发生在同类中,只能发生在子类中。

若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

4. 激活函数: 

① logistic:f(x)=1 / (1+e^(-x))

② softmax(Xi) = exp(Xi) / sum(exp(Xi))

     nn.Softmax(dim) 

     若输入为二维,dim = 0为使列数据和为0;dim=1为使行数据为0

③ relu(X) = max(0, X)

5.损失函数

① 二元交叉熵损失函数:nn.BCELoss()  >>使用nn.BCELoss需要在该层前面加上Sigmoid函数

  1. from torch import nn
  2. loss = nn.BCELoss()
  3. l = loss(y_hat, y) # 预测值与标签输入顺序不能颠倒

② 交叉熵损失函数: nn.CrossEntropyLoss()          ##softmax函数和交叉熵损失函数合并

③ 均方损失函数: nn.MSELoss()           (y_hat - y) ** 2 / batch_size    >>  loss.mean()

  1. # 1
  2. torch.nn.MSELoss(y_hat, y, reduce, size_average)
  3. ## 默认reduce = True,返回标量形式的loss
  4. ## reduce = False,返回向量形式的los
  5. ## 默认size_average = True,返回loss.mean()
  6. ## size_average = False,返回loss.sum()
  7. # 2
  8. import torch.nn.functional as F
  9. loss = F.mse_loss(y_hat, target)

6.解决过拟合

        过拟合问题具体变现为:模型在train_data上训练情况良好,损失函数低,预测准确度高,而在test_data表现较差,损失函数比较大,预测精度很低。

二、函数

1. register_buffer()

  1. register_buffer(name, tensor)
  2. '''Adds a persistent buffer to the module''' # 向模型中加入持续缓冲区
  3. # name(string) -缓冲区的名称
  4. self.register_buffer("matrix", torch.tensor([0.233, 0.456, 0.174]))

        我们在训练模型时,通过backward反向传播实现weight等参数的更新,但在某些情况下,我需要有些参数从训练开始到结束一直保持不变,不会被更新,则此时会用到register_buffer()。

2.  __init__()   >>带参数的初始化,初始化新创建对象的状态

    “__”开头的函数声明该函数为私有,无法在类的外部使用或访问。

3. tensor生成

① torch.normal(means, std)                       >> 从给定参数的正态分布中返回随机数

     np.random.normal(means, std, size)          >> 从正态(高斯)分布中抽取随机样本

     random.random(*size)                                >>返回一个介于左闭右开[0.0, 1.0)区间的浮点数

②  torch.ones(*size) 返回输入size的全为1的tensor;  torch.zeros(*size, dtpe = torch.float32)全为0 

      torch.zeros_like(X) 返回X.shape的全0 tensor

③  torch.range(1, 6)  >> tensor[1., 2., 3., 4., 5., 6.]  结果包含end, 新版本中将被删除

④  torch.arange(1, 6) >>tensor[1., 2., 3., 4., 5.]

⑤ torch.rand(*size)    >> 0-1的均匀分布

     torch.randn(*size)    >>标准正态分布(mean=0, std=1)

4. tensor合并 

① torch.cat((A,B), dim)    >>按照dim维度合并tensorA,B,除dim维度,其他维度数值必须一致;         dim列合并,即合并完成后只有dim数值增大

6. 数据提取

① torch.index_select(input, dim, index)    ==  input.index_select(dim, index)   

     >> input为索引查找的对象, dim为查找的维度, index为索引序列tensor(须为整型)

② torch.gather(tensor, dim, index) 

     >>沿着指定的dim从tonsor中提取索引index位置的元素,index对应dim,即dim若为行,index为行索引

② torch.where(condition, a, b)     >>满足condition则输出a,否则则输出b

③ torch.squeeze()                        >> 压缩数据维度,去掉维数为1的维度

7. 运算与处理

① torch.pow(X, y)            >> X^y

② torch.max(input, other) >>两tensor比较,返回最大值

     torch.max(input, dim)   >>返回最大值和最大值索引,若shape为[2,3],dim=0,返回shape为[3]

③ torch.mm(A, B)             >>矩阵A,B相乘,只适用于二维矩阵

    torch.matmal(A, B)        >>矩阵A,B相乘,适用于高维矩阵

    torch.mul(A, B)              >>矩阵A,B对应位置相乘,等同于 A * B

④ torch.log(x)                   >>以自然数e为底的对数函数 ln(x)

⑤ torch.sqrt(tensor)         >>逐一元素计算平方根

⑥ torch.lt(input, other)    >>元素比较 input < other 返回True   (less than)

    torch.gt(input, other)    >>元素比较 input > other 返回True   (greater than)

⑦ str.join(item)              >>用str将item中的元素连接起来

                                        >>括号内只允许有一个成员,可以为列表、元组、字典

     str.upper()                 >> 字符串中的小写字母转为大写字母

⑦ vars()                          >>对象object的属性和属性值的字典对象

⑧ sort(list)                      >>list 排序

    sorted(iterable)          >>对所有可迭代的对象进行排序操作

⑨ lambda   param : expression   >> param参数执行expression表达式

8. 绘图

plt.scatter(x, y, c, marker, s)         >>散点图绘制: c为颜色, marker为标记的样式, s为点的大小

plt.plot(x, y, label=' ',"格式控制字符串")    >>绘制点图和线图, xy可传入set,list,array,dataframe

plt.legend()                                   >> 显示label内容

9. 读取数据集

import torch.utils.data as Data

dataset = Data.TensorDataset(features, labels)  # 合并特征值和标签

Data.DataLoader(dataset, batch_size, shuffle=)

10. 优化器

(1) torch.optim.SGD(parameters(), lr= , momentum= )    # 参数,学习率,权重衰减

  1. optimizer = torch.optim.SGD(function.paramaters, lr) # 定义优化器
  2. # 训练模型
  3. optimizer.zero_grad()
  4. l.backward()
  5. optimizer.step()

11.模块与包

(1)torchvision

  1. import torchvision
  2. import torchvision.transforms
  3. torch.transforms.ToTensor() #把PIL.Image或ndarray从(H x W x C)形状转换为(C x H x W)的tensor

# torchvision.datasets: 一些加载数据的函数及常用的数据集接口;

# torchvision.models:包含常用的模型结构(含预训练模型), 例如AlexNet、VGG、ResNet等;

# torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;

① transforms.ToTensor()函数的作用是将【原始的PILImage格式或者numpy.array格式的数据】格式化为【可被pytorch快速处理的张量类型】

##(声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签