PyTorch无GPU加速版本windows笔记

一、PyTorch

1.1 安装无CUDA

地址:https://pytorch.org/
在这里插入图片描述

pip install torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

在这里插入图片描述

二、Numpy VS Torch

Torch自称为神经网络界的Numpy,因为他能将torch产生的tensor放在GPU中加速运算(前提是你有合适的GPU),就像Numpy会把array放在CPU中加速运算.所以神经网络的话,当然是用Torch的tensor形式数据最好咯.就像Tensorflow当中的tensor一样.
当然,我们对Numpy还是爱不释手的,因为我们太习惯numpy的形式了.不过torch看出来我们的喜爱,他把torch做的和numpy能很好的兼容.比如这样就能自由地转换numpy array和torch tensor了

2.1 数据格式对比

import torch
import numpy as np

# 1.构造二维数据 0 1 2  3 4 5
np_data = np.arange(6).reshape((2,3))
# 2.转换Numpy数据为Torch数据
torch_data = torch.from_numpy(np_data)
# 3.Torch数据转换成Numpy数据
tensor2array = torch_data.numpy()
# 4.打印数据格式
print(
    '\nnumpy',np_data,
    '\ntorch',torch_data,
    '\ntensor2array',tensor2array
)

1.运行报错!
在这里插入图片描述
2.然后双击文件安装即可,其实出现这个问题,就是VC没有安装导致的。
在这里插入图片描述

2.2 矩阵运算对比

import torch
import numpy as np

# 矩阵
data = [[1,2],[3,4]]
# 32bit floating point
tensor = torch.FloatTensor(data)

# 打印
print(
    '\nnumpy矩阵相乘',np.matmul(data,data),
    '\ntorch矩阵相乘',torch.mm(tensor,tensor)
)

在这里插入图片描述

2.3 激活函数

import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt

# 数据 200个点数据
x = torch.linspace(-5,5,200)
x = Variable(x)
# 画图需要numpy格式的数据
x_np = x.data.numpy()

# 激活值 函数
y_relu = torch.relu(x).data.numpy()
y_sigmoid = torch.sigmoid(x).data.numpy()
y_tanh = torch.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()

# 作图
plt.figure(1,figsize=(8,6))
plt.subplot(221)
plt.plot(x_np,y_relu,c='red',label='relu')
plt.ylim((-1,5))
plt.legend(loc='best')


plt.subplot(222)
plt.plot(x_np,y_sigmoid,c='red',label='sigmoid')
plt.ylim((-0.2,1.2))
plt.legend(loc='best')


plt.subplot(223)
plt.plot(x_np,y_tanh,c='red',label='tanh')
plt.ylim((-1.2,1.2))
plt.legend(loc='best')


plt.subplot(224)
plt.plot(x_np,y_softplus,c='red',label='softplus')
plt.ylim((-0.2,6))
plt.legend(loc='best')

print(plt.show())

在这里插入图片描述

三、神经网络回归

import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt

# 数据维度为1,y为2次方+噪声
x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
y = x.pow(2) + 0.2*torch.rand(x.size())

# 画图
x,y = Variable(x),Variable(y)
plt.scatter(x.data.numpy(),y.data.numpy())
plt.show()

# 搭建神经网络
class Net(torch.nn.Module):
    def __init__(self,n_feature,n_hidden,n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature,n_hidden)  #一个隐藏层
        self.predict = torch.nn.Linear(n_hidden,n_output)  #预测神经元层,预测一个Y
    def forward(self,x):
        x = torch.relu(self.hidden(x))
        x = self.predict(x)
        return x

net = Net(1,10,1)  # 神经网络的结构1-10-1
print(net)

# 实时打印的过程
plt.ion()
plt.show()


# 优化神经网络 学习效率,均方误差
optimizer = torch.optim.SGD(net.parameters(),lr=0.5)
loss_func = torch.nn.MSELoss()

for t in range(100):  # 训练100步
    prediction = net(x)
    loss = loss_func(prediction,y)  # 预测值与真实值 计算误差

    optimizer.zero_grad()  # 优化参数 梯度降为0
    loss.backward()  # 反向传递误差 计算梯度
    optimizer.step()  # 优化梯度 学习效率0.5

    if t % 5 == 0:  # 每学习5步就打印一次
        plt.cla()
        plt.scatter(x.data.numpy(),y.data.numpy())
        plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5)
        plt.text(0.5, 0, 'Loss=%.4f' % loss.data, fontdict={'size': 20,'coLor':'red'})
        plt.pause(0.1)
plt.ioff()
plt.show()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding路人王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值