深度学习的一般性流程:
1. 构建网络模型结构
2. 选择损失函数
3. 选择优化器进行训练
【背景----百度百科给出的基本概念】
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。
监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。
一元线性模型:回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
监督学习从数据中学习一个分类模型或者分类决策函数,它被称为分类器(classifier)。
分类器对新的输入进行输入预测,这个过程称为分类(classification)
【解决方案】
一元线性回归分析使用均方误差(对应了欧几里得距离,有着很好的几何意义)进行模型求解的办法也称为“最小二乘法”,多元线性回归分析使用梯度下降法求解最小二乘问题
torch.nn.MSELoss() #均方误差loss
import numpy as np
import torch.nn.functional as F
import torch
A = np.array([[1,2],[3,4]])
B = np.array([[1,4],[2,4]])
cost_np = np.sum((A-B)**2)
print(cost_np)
AT = torch.FloatTensor(A)
BT = torch.FloatTensor(B)
cost_torch = F.mse_loss(AT,BT,reduction='sum')
print(cost_torch)
参数reduction 为none则将把所有误差输出,mean求所有误差的均值,sum求所有误差的和
二分类问题使用交叉熵进行模型求解
torch.nn.CrossEntropyLoss() #交叉熵的loss
input = torch.ones(4,6, requires_grad = True)
print(input)
target = torch.tensor([1,2,3,4])
#--------------交叉熵求法1------------
temp = F.log_softmax(input)
output = F.nll_loss(temp,target)
print(output)
#--------------交叉熵求法2------------
output2 = F.cross_entropy(input,target)
print(output2)