没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
在在pytorch中动态调整优化器的学习率方式中动态调整优化器的学习率方式
主要介绍了在pytorch中动态调整优化器的学习率方式,具有很好的参考价值,希望对大家有所帮助。一起跟随
小编过来看看吧
在深度学习中,经常需要动态调整学习率,以达到更好地训练效果,本文纪录在pytorch中的实现方法,其优化器实例为SGD
优化器,其他如Adam优化器同样适用。
一般来说,在以SGD优化器作为基本优化器,然后根据epoch实现学习率指数下降,代码如下:
step = [10,20,30,40]
base_lr = 1e-4
sgd_opt = torch.optim.SGD(model.parameters(), lr=base_lr, nesterov=True, momentum=0.9)
def adjust_lr(epoch):
lr = base_lr * (0.1 ** np.sum(epoch >= np.array(step)))
for params_group in sgd_opt.param_groups:
params_group['lr'] = lr
return lr
只需要在每个train的epoch之前使用这个函数即可。
for epoch in range(60):
model.train()
adjust_lr(epoch)
for ind, each in enumerate(train_loader):
mat, label = each
...
补充知识:补充知识:Pytorch框架下应用框架下应用Bi-LSTM实现汽车评论文本关键词抽取实现汽车评论文本关键词抽取
需要调用的模块及整体Bi-lstm流程
import torch
import pandas as pd
import numpy as np
from tensorflow import keras
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torch.utils.data import DataLoader
from torch.utils.data import TensorDataset
import gensim
from sklearn.model_selection import train_test_split
class word_extract(nn.Module):
def __init__(self,d_model,embedding_matrix):
super(word_extract, self).__init__()
self.d_model=d_model
self.embedding=nn.Embedding(num_embeddings=len(embedding_matrix),embedding_dim=200)
self.embedding.weight.data.copy_(embedding_matrix)
self.embedding.weight.requires_grad=False
self.lstm1=nn.LSTM(input_size=200,hidden_size=50,bidirectional=True)
self.lstm2=nn.LSTM(input_size=2*self.lstm1.hidden_size,hidden_size=50,bidirectional=True)
self.linear=nn.Linear(2*self.lstm2.hidden_size,4)
def forward(self,x):
w_x=self.embedding(x)
first_x,(first_h_x,first_c_x)=self.lstm1(w_x)
second_x,(second_h_x,second_c_x)=self.lstm2(first_x)
output_x=self.linear(second_x)
return output_x
将文本转换为数值形式将文本转换为数值形式
def trans_num(word2idx,text):
text_list=[]
for i in text:
s=i.rstrip().replace('','').replace('','').split(' ')
numtext=[word2idx[j] if j in word2idx.keys() else word2idx['_PAD'] for j in s ]
text_list.append(numtext)
return text_list
将Gensim里的词向量模型转为矩阵形式,后续导入到LSTM模型中
def establish_word2vec_matrix(model): #负责将数值索引转为要输入的数据
word2idx = {"_PAD": 0} # 初始化 `[word : token]` 字典,后期 tokenize 语料库就是用该词典。
num2idx = {0: "_PAD"}
vocab_list = [(k, model.wv[k]) for k, v in model.wv.vocab.items()]
资源评论
weixin_38515270
- 粉丝: 3
- 资源: 948
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功