Pytorch基础重新巩固

首先是pytorch的机制:

Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算

最常用的数据形式是tensor   ,      torch中的tensor类似tensorflow中的tensor;

在编写代码的时候,注意把自己的数据转为tensor,然后如果需要梯度计算类似的操作再转为variable;若需要cuda运算,再加上cuda

其次是pytorch用于存储不断变化的量的variable:

variable计算的时候,后台搭建了一个动态计算图(tensorflow大部分时候是静态的),是将所有的计算步骤 (节点) 都连接起来, 最后进行误差反向传递的时候, 一次性将所有 variable 里面的修改幅度 (梯度) 都计算出来, 而 tensor 就没有这个能力。

不能直接获取variable的值,需要通过var.data来转换为tensor形式;

激励函数使得输出结果 y 也有了非线性的特征;cnn中推荐使用relu以及变化版;

class Net(torch.nn.Module):  # 继承 torch 的 Module网络的搭建集成nn.module,一般都会重写forward函数,最后一般通过output = Net(args)直接获取结果

torch训练过程:
for t in range(100):
    prediction = net(x)     # 喂给 net 训练数据 x, 输出预测值

    loss = loss_func(prediction, y)     # 计算两者的误差

    optimizer.zero_grad()   # 清空上一步的残余更新参数值
    loss.backward()         # 误差反向传播, 计算参数更新值
    optimizer.step()        # 将参数更新值施加到 net 的 parameters 上

快速搭建网络的sequential序列网络:

net2 = torch.nn.Sequential(
    torch.nn.Linear(1, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)

一般保存pytorch网络都采用

torch.save(net1.state_dict(), ‘net_params.pkl‘)   # 只保存网络中的参数 (速度快, 占内存少)

提取网络一般采用:
new_net.load_state_dict(torch.load(‘net_params.pkl‘))
 

举一个pytorch加载数据集的例子:

import torch
import torch.utils.data as Data
torch.manual_seed(1)    # reproducible

BATCH_SIZE = 5      # 批训练的数据个数

x = torch.linspace(1, 10, 10)       # x data (torch tensor)
y = torch.linspace(10, 1, 10)       # y data (torch tensor)

# 先转换成 torch 能识别的 Dataset
torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)

# 把 dataset 放入 DataLoader
loader = Data.DataLoader(
    dataset=torch_dataset,      # torch TensorDataset format
    batch_size=BATCH_SIZE,      # mini batch size
    shuffle=True,               # 要不要打乱数据 (打乱比较好)
    num_workers=2,              # 多线程来读数据
)

for epoch in range(3):   # 训练所有!整套!数据 3 次
    for step, (batch_x, batch_y) in enumerate(loader):  # 每一步 loader 释放一小批数据用来学习
        # 假设这里就是你训练的地方...

若放在gpu加速的话需要修改的地方有:

数据.cuda()

net.cuda()

在 train 的时候, 将每次的training data 变成 GPU 形式

总之就是参与需要一直变化的运算的一切东西,都在后面加上.cuda()

参考自:https://morvanzhou.github.io/tutorials/machine-learning/torch/3-05-train-on-batch/

    莫烦python

原文地址:https://www.cnblogs.com/ywheunji/p/11027130.html

时间: 2024-10-03 00:07:59

Pytorch基础重新巩固的相关文章

Pytorch基础的基本概念

1.什么是Pytorch,为什么选择Pytroch? 2.Pytroch的安装 3.配置Python环境 4.准备Python管理器 5.通过命令行安装PyTorch 6.PyTorch基础概念 GPU云服务器默认提供了pytorch的环境, 7.通用代码实现流程(实现一个深度学习的代码流程) import torch import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(

PyTorch基础——词向量(Word Vector)技术

一.介绍 内容 将接触现代 NLP 技术的基础:词向量技术. 第一个是构建一个简单的 N-Gram 语言模型,它可以根据 N 个历史词汇预测下一个单词,从而得到每一个单词的向量表示. 第二个将接触到现代词向量技术常用的模型 Word2Vec.在实验中将以小说<三体>为例,展示了小语料在 Word2Vec 模型中能够取得的效果. 在最后一个将加载已经训练好的一个大规模词向量,并利用这些词向量来做一些简单的运算和测试,以探索词向量中包含的语义信息. 知识点 N-Gram(NPLM) 语言模型 Wo

pytorch基础问题

本文将自己在pytorch学习中遇见的各种问题整理起来,并且持续更新. 1:torch.Tensor和torch.tensor的区别 开始使用torch.tensor和torch.Tensor的时候发现结果都是一样的.都能生成新的张量.但根源上是有差别的. import torch n=torch.tensor([[3,4],[1,2]]) x=torch.Tensor([[3,4],[1,2]]) print(n,'|||',x) print(n.shape,'|||',x.shape) pr

pytorch基础2

下面是常见函数的代码例子 1 import torch 2 import numpy as np 3 print("分割线-----------------------------------------") 4 #加减乘除操作 5 a = torch.rand(3,4) 6 b = torch.rand(4) 7 print(a) 8 print(b) 9 print(torch.add(a, b)) 10 print(torch.sub(a, b)) 11 print(torch.

PyTorch基础-torch

一.张量数据类型 1.1 pytorch与python数据类型对比 python pytorch Int IntTensor of size() float FloatTensor of size() Int array IntTensor of size [d1,d2,-] Float array FloatTensor of size [d1,d2,-] string ont-hot or Embedding(Word2Vec,glove) 由于PyTorch不是一个完备的语言库,它是面向数

PyTorch基础——预测共享单车的使用量

预处理实验数据 读取数据 # 下载并解压数据集 !wget http://labfile.oss.aliyuncs.com/courses/1073/bike-sharing-dataset.zip !unzip bike-sharing-dataset.zip #导入需要使用的库 import numpy as np import pandas as pd #读取csv文件的库 import matplotlib.pyplot as plt import torch from torch.au

PyTorch基础——使用神经网络识别文字中的情感信息

一.介绍 知识点 使用 Python 从网络上爬取信息的基本方法 处理语料"洗数据"的基本方法 词袋模型搭建方法 简单 RNN 的搭建方法 简单 LSTM 的搭建方法 二.从网络中抓取并处理数据 引入相关包 下载所需数据并解压 链接:https://pan.baidu.com/s/1Jg5NPxc9L-M8Tdgh70Tvig 提取码:dpqq # 导入程序所需要的程序包 #PyTorch用的包 import torch import torch.nn as nn import tor

Pytorch基础——使用 RNN 生成简单序列

一.介绍 内容 使用 RNN 进行序列预测 今天我们就从一个基本的使用 RNN 生成简单序列的例子中,来窥探神经网络生成符号序列的秘密. 我们首先让神经网络模型学习形如 0^n 1^n 形式的上下文无关语法.然后再让模型尝试去生成这样的字符串.在流程中将演示 RNN 及 LSTM 相关函数的使用方法. 实验知识点 什么是上下文无关文法 使用 RNN 或 LSTM 模型生成简单序列的方法 探究 RNN 记忆功能的内部原理 二.什么是上下文无关语法 上下文无关语法 首先让我们观察以下序列: 01 0

PyTorch基础——机器翻译的神经网络实现

一.介绍 内容 "基于神经网络的机器翻译"出现了"编码器+解码器+注意力"的构架,让机器翻译的准确度达到了一个新的高度.所以本次主题就是"基于深度神经网络的机器翻译技术". 我们首先会尝试使用"编码器+简单解码器"的构架,来观察普通编码器-解码器构架能够取得的效果.然后会尝试"编码器+带有注意力机制的解码器"构架,看看加上注意力能让模型获得怎样的提高. 实验知识点 机器翻译"平行语料"的