pytorch学习1.0系列------04 保存模型、模型后缀介绍以及实例

1. pytorch 的 Tensor保存和加载

保存和提取主要使用torch.save和torch.load方法实现保存和提取

import torch
 
test_data = torch.FloatTensor(2,3)
# 保存数据
torch.save(test_data, "test_data.pkl")
 
print test_data
# 提取数据
print torch.load("test_data.pkl")

2. 保存和提取神经网络

2.1 只保存和加载模型参数(推荐使用,但需要重新模型结构)

# 保存
torch.save(the_model.state_dict(), PATH)

# 提取
# 需要先重新模型结构
the_model = TheModelClass(*args, **kwargs)
# 再加载参数
the_model.load_state_dict(torch.load(PATH))

2.2 保存和加载整个模型

如下会保存整个网络,如果数据量比较大,会消耗大量时间。占用的内存也比较高,所以不推荐使用

# 保存
torch.save(the_model, PATH)
# 提取
the_model = torch.load(PATH)

2.3模型后缀

在保存模型时,会看到有的保存为***.pt,有的是***.pth,有的是***.pkl
这几种模型文件效果上没什么不同,只是后缀不一样而已!

3.保存-读取模型实例----->语言模型(预测一句话的下一个单词)

学习目标

  • 学习语言模型,以及如何训练一个语言模型
  • 学习torchtext的基本使用方法
    • 构建 vocabulary
    • word to inde 和 index to word
  • 学习torch.nn的一些基本模型
    • Linear
    • RNN
    • LSTM
    • GRU
  • RNN的训练技巧
    • Gradient Clipping
  • 如何保存和读取模型

3.1 代码

3.1.1数据准备

我们会使用 torchtext 来创建vocabulary, 然后把数据读成batch的格式。请大家自行阅读README来学习torchtext。

import torchtext
from torchtext.vocab import Vectors
import torch
import numpy as np
import random

#cuda是否可用
EXIST_CUDA=torch.cuda.is_available()

#为了保证结果可以复现,经常把random seed固定为一个值
random.seed(1)
np.random.seed(1)
torch.manual_seed(1)
if EXIST_CUDA:
    torch.cuda.manual_seed(1)
    
BATCH_SIZE=32    # 一个batch里有32个句子
EMBEDDING_SIZE=100 #把一个单词embedding为100维
MAX_VOCAB_SIZE=50000 #高频词表最大容量
  • 我们会继续使用上次的text8作为我们的训练,验证和测试数据
  • torchtext提供了LanguageModelingDataset这个class来帮助我们处理语言模型数据集
  • BPTTIterator可以连续地得到连贯的句子
TEXT=torchtext.data.Field(lower=True)
#创建数据集
train,val,test=torchtext.datasets.LanguageModelingDataset.splits(
    path="datas/3/text8/",
    train="text8.train.txt",
    validation="text8.dev.txt",
    test="text8.test.txt",
    text_field=TEXT
)
#创建高频词表
TEXT.build_vocab(train,max_size=MAX_VOCAB_SIZE)
#构建每一个batch,上面定义一个batch有32条句子
device=torch.device("cuda" 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值