pyhorch深度学习代码编辑流程

0机器学习原理

我们知道不管是识别,还是检测,结果都可以看成输入(数据集)乘一个非常复杂的超越函数,这个函数模型可以是线性函数,也可以是指数函数,也可以是多个函数的叠加,我们要做的就是求出或者近似出这个超越函数。
对于一次线性函数我们知道其形式是 y=ax+b.。我们要做的就是求出这个a,和b;
怎么样来求这个a和b能,可以采用反馈的方式我先给a,b一个初始值1,1然后设置步进为0.1。将多个样本(整个数据集)带进去计算得到预测结果,将预测结果与实际真实结果(标签)求减得到误差,将每个样本的误差求和,得到该数据集的总误差,我们目的是找到一个合适的a,b值使整个数据集在这个a,b的函数上得到的总误差最小。设置两个循环外循环a,每次增加一个步进计算,内循环b每次增加一个步进,计算所有样本误差,最终求得最好的a,b值。此方法可以解决问题,但效率太低,原因在于步进即反馈是固定的,要是能先大步进,随着误差的减小,步进减小则效率更高,结果更精确。因此,步进不在是简单的常数,而采用优化器函数(optimizer)。优化器函数也就是目前大家努力的方向。常见的优化器是对超越函数中不同系数求偏导(梯度)也就知道了该系数对总输出的影响,利用这个偏导乘以误差来作为步进修正整个函数。
从上面讲解也就知道了,不管深度学习模型是啥都是4个步骤

1设置数据集

通过创建数据集的类来创建

# 设置数据集
# 选择下载的数据集,以逗号分割,每组数据保存成矩阵形式,单个数据保存成32位浮点型
class DiabetesDataset(Dataset): #创建糖尿病数据集类
    def __init__(self,filepath):
        xy = np.loadtxt(filepath, delimiter=',',dtype=np.float32)
        self.len=xy.shape[0]#shape[0]获得行数即样本数,shape[1]获取列数即维度
        self.x_data=torch.from_numpy(xy[:, :-1])
        self.y_data=torch.from_numpy(xy[:, [-1]])
    def __getitem__(self, index):
        return self.x_data[index],self.y_data[index]#获取单个样本,以便未来需要查阅
    def __len__(self):
        return self.len #获取样本数
dataset=DiabetesDataset('E:/python program/PyTorch深度学习实践/PyTorch深度学习实践/diabetes.csv.gz')#数据集所在路径,本文采用刘二老师课的糖尿病数据集
train_loader=DataLoader(dataset=dataset,batch_size=32,shuffle=True,num_workers=2)
#batch_size:一次提取并训练的样本数,shuffle:是否打乱训练集,num_workers:多线程读取数据

2.创建超越函数

#定义算法类
class Model(torch.nn.Module):
    def __init__(self):
        super().__init__()
        # (n,m)是指输入x和输出y的特征维度,这里数据集中的输入特征为8维,我们采用多层递进的方式,先将8维输入降低到6维输出,在将6维作为输入到下一层降为4层,同样的再来一次降为1层,当然也可以直接将8维降到1维。只不过网络层数越多结果越准确
       
        self.linear1 = torch.nn.Linear
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值