pytorch深度学习笔记(1)---使用Numpy实现机器学习

机器学习
在学习pytorch前,我们首先需要知道什么是机器学习。
直观的看,机器学习就是让机器去学习。而且,确实就是这样,机器学习就是让机器具备学习的能力。
机器学习分为训练和测试两个过程,所谓训练就是给机器一些数据,让它自己生成一种模型,所谓测试就是利用训练到的模型去预测其他的非训练数据。

在第一次学习过程中,先利用Numpy实现一个简单的机器学习案例。

我们已经知道,机器学习需要我们去训练出一个模型。而在我们中学求导时,总会有这么一道题,给定几个点,让我们去通过这几个点求一个函数的方程式。然后用得到的方程式去解其他问题。
这里,这个求方程式的过程就类似于我们机器学习的训练,不过训练的过程需要大量的数据,去逐渐训练得到参数。而解其他问题的过程又像是测试的过程,不过我们的测试是非训练的数据,是以前从没有见过的数据。

题目:给出一个数组x,然后基于表达式y=3x²+2,加上一些噪音数据到达另一组数据y。然后构建一个机器学习模型,学习表达式y=wx²+b的两个参数w、b。利用数组x,y的数据为训练数据。

1.导入numpy库。生成数据x及目标数据y,设置随机数种子。

import numpy as np
from matplotlib import pyplot as plt

np.random.seed(100)#设置随机生成树种子
x = np.linspace(-1,1,100).reshape(100,1)#把-1到1平方生成100个数并设置形状为100行1列
#有了数组x,基于表达式y=3(x^2)+2,再加上一些噪音数据得到y
y = 3*np.power(x,2) +2+ 0.2*np.random.rand(x.size).reshape(100,1)

2.初始化权重参数,定义损失函数,计算梯度,使用梯度下降法,使损失值loss最小。

w1 = np.random.rand(1,1)#随机生成一个数,作为权重的初始参数
b1 = np.random.rand(1,1)

lr = 0.001#设置学习率为0.001

for i in range(800):
    y_pred = np.power(x,2)*w1 + b1#学习表达式y=w1*(x^2)+b1
    loss = 0.5 * (y_pred - y) ** 2#损失函数等于1/2(学习到的y_pred减去真实的Yi的平方)
    loss = loss.sum()#接着把他累加
    grad_w = np.sum((y_pred - y) * np.power(x,2))#对w求导(复合函数求导)
    grad_b = np.sum((y_pred - y))#对b求导
    w1 -= lr * grad_w#利用梯度下降法得到参数
    b1 -= lr * grad_b

3.可视化结果。

plt.plot(x,y_pred,'r-',label='predict')#x轴为x,y轴为y_pred,格式为红色,标签为predict
plt.scatter(x,y,color='blue',marker='o',label='true')#接收x,y 颜色设置为蓝,'o'表示为圈,标签为true
plt.xlim(-1,1)#设置坐标轴横坐标的最大最小值
plt.ylim(2,6)#设置纵坐标的最大最小值
plt.legend()#加上图例
plt.show()
print(w1,b1)

4.显示结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值