jupyter操作LSTM模型,词向量模型理解

1.jupyter没有torch模块,参考下面链接的解决办法

【jupyter notebook安装配置教程,导入pytorch解决No module named torch-哔哩哔哩】 https://b23.tv/jYGvyVR

2.jupyter中没有某一模块怎么办,可以用pycharm打开一个项目,在该项目中下载所需要的模块,然后jupyter notebook打开这个项目,在同路径下打开ipython文件。

3.LSTM模型的输入,输出与与注意事项。

 模型构建,最基本的是五个参数 input_dim 输入维度,即输入的特征的个数 hidden_dim 隐藏层特征的维度 num_layers lstm的连结个数 output_dim 输出层的维度,预测即为1,分类则为分类的个数 num_epochs 迭代的次数,每次计算损失函数,反向回归,优化参数,得出新的预测值,再计算损失函数

input_dim = 1
hidden_dim =72
num_layers = 3
output_dim = 1
num_epochs = 100
# LSTM 模型定义
class LSTM(nn.Module):
    def __init__(self, input_dim, hidden_dim,num_layers,output_dim):
        super(LSTM, self).__init__()
        self.hidden_dim = hidden_dim
        self.num_layers =num_layers
        self.lstm = nn.LSTM(input_dim, hidden_dim,num_layers,batch_first=True)
        # 全连接层
        self.fc = nn.Linear(hidden_dim, output_dim)

    def forward(self, x):
        h0=torch.zeros(self.num_layers,x.size(0),self.hidden_dim).requires_grad_()
        c0=torch.zeros(self.num_layers,x.size(0),self.hidden_dim).requires_grad_()
        out,(hn,cn)=self.lstm(x,(h0.detach(),c0.detach()))
        out = self.fc(out[:,-1,:])
        return out
model = LSTM(input_dim=input_dim,hidden_dim=hidden_dim,output_dim=output_dim,num_layers=num_layers)
criterion = torch.nn.MSELoss()
optimiser = torch.optim.Adam(model.parameters(),lr=0.01)
hist = np.zeros(num_epochs)
import time
hist = np.zeros(num_epochs)
start_time = time.time()
lstm=[]
for t in range(num_epochs):
    y_train_pred = model(x_train)
    loss = criterion(y_train_pred,y_train_lstm)
    print('EPOCH',t,'MSE',loss.item())
    hist[t]=loss.item()
    optimiser.zero_grad()
    loss.backward()
    optimiser.step()
    
training_time = time.time()-start_time
print(training_time)

4.词向量模型理解

词向量模型介绍

one-hot缺点
维度灾难
无法度量词语之间的相似性
词向量(用一组向量表示词语)
重要假设:文本中离得越近的词语相似度越高
两种计算方法:CBOW skip-gram
前者用上下文词来预测中心词,通过上下文此计算中心词的词向量与实际值做对比,根据让损失下降来更新权重参数
后者用中心词来预测上下文此,用的最多
问题1:需要指定窗口大小,即中心词周围选几个词语来计算
问题2:优化问题中需要综合考虑靠近中心词的词和非靠近中心词的词,语料库大,非上下文词太大,因此只采样部分非靠近中文词的词,即负样本(negative)
问题3:设置迭代的次数,以及最小参与计算的词语的频数的阈值
问题4:指定词向量的维度

如何评估词向量
1.输出与特定词语的相关度比较高的词语
2.可视化
3.类比实验:国王-王后=男人-女人

词向量用途
1.主题聚类
2.情感分析
3.信息检索

词向量缺点
1.没有考虑多义词
2.窗口长度有限
3.没有考虑全局的文本信息
4.不是严格意义的语序


python处理步骤
1.读取数据,作分词,得到双列表数据,一个大列表套一个小列表,小列表中为很多个词语
2.模型训练,自行设定词向量维度vector_size,窗口大小window,最小过滤词频min_count,迭代次数epochs,负采样个数negative
3.模型评估

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力学习各种软件

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

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

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

打赏作者

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

抵扣说明:

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

余额充值