pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...
我在pytorch中运行LSTM,但据我所知,它只取序列长度= 1。当我将序列长度整形为4或其他数字时,就会得到输入和目标长度不匹配的错误。如果我同时对输入和目标进行整形,那么模型会抱怨它不接受多目标标签。 我的训练数据集有66512行和16839列,目标中有3个类别/类。我想使用批处理大小为200和序列长度为4,即在一个序列中使用4行数据。 请建议如何调整我的模型和/或数据,以便能够运行模型的各种序列长度(例如,4)。
batch_size=200
import torch
from torch.utils.data import TensorDataset
from torch.utils.data import DataLoader
train_target = torch.tensor(train_data[['Label1','Label2','Label3']].values.astype(np.float32))
train_target = np.argmax(train_target, axis=1)
train = torch.tensor(train_data.drop(['Label1','Label2','Label3'], axis = 1).values.astype(np.float32))
train_tensor = TensorDataset(train.unsqueeze(1), train_target)
train_loader = DataLoader(dataset = train_tensor, batch_size = batch_size, shuffle = True)
print(train.shape)
print(train_target.shape)
torch.Size([66512, 16839])
torch.Size([66512])
import torch.nn as nn
class LSTMModel(nn.Module):
def __init__(self, input_dim, hidden_dim, layer_dim, output_dim):
super(LSTMModel, self).__init__()
# Hidden dimensions
self.hidden_dim = hidden_dim
# Number of hidden layers
self.layer_dim = layer_dim
# Building LSTM
self.lstm = nn.LSTM(input_dim, hidden_dim, layer_dim, batch_first=True)
# Readout layer
self.fc = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
# Initialize hidden state with zeros
h0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_().to(device)
# Initialize cell state
c0 = torch.zeros(self.layer_dim, x.size(0), self.hidden_dim).requires_grad_().to(device)
out, (hn, cn) = self.lstm(x, (h0,c0))
# Index hidden state of last time step
out = self.fc(out[:, -1, :])
return out
input_dim = 16839
hidden_dim = 100
output_dim = 3
layer_dim = 1
batch_size = batch_size
num_epochs = 1
model = LSTMModel(input_dim, hidden_dim, layer_dim, output_dim)
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)
criterion = nn.CrossEntropyLoss()
learning_rate = 0.1
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
print(len(list(model.parameters())))
for i in range(len(list(model.parameters()))):
print(list(model.parameters())[i].size())
6
torch.Size([400, 16839])
torch.Size([400, 100])
torch.Size([400])
torch.Size([400])
torch.Size([3, 100])
torch.Size([3])
for epoch in range(num_epochs):
for i, (train, train_target) in enumerate(train_loader):
# Load data as a torch tensor with gradient accumulation abilities
train = train.requires_grad_().to(device)
train_target = train_target.to(device)
# Clear gradients w.r.t. parameters
optimizer.zero_grad()
# Forward pass to get output/logits
outputs = model(train)
# Calculate Loss: softmax --> cross entropy loss
loss = criterion(outputs, train_target)
# Getting gradients w.r.t. parameters
loss.backward()
# Updating parameters
optimizer.step()
print('Epoch: {}. Loss: {}. Accuracy: {}'.format(epoch, np.around(loss.item(), 4), np.around(accuracy,4)))
问题来源StackOverflow 地址:/questions/59381695/lstm-in-pytorch-how-to-add-change-sequence-length-dimension
pytorch如何增加维度_Pytorch中的LSTM:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...相关推荐
- ssm mysql 插入date 数据_SSM中插入数据没有报错,但是数据库没有值?报错-问答-阿里云开发者社区-阿里云...
mybatis默认开启事务不会自动提交,只有调用了commit才会提交事务.你这种情况明显是事务成功执行了,而且自增ID也已生效,但事务本身没有提交,请调用mybatis的commit方法提交事务! ...
- canal同步mysql到kafka_使用Canal同步MySQL数据到Kafka 得到的数据中sql字段无值-问答-阿里云开发者社区-阿里云...
这个应该跟你的binlog记录模式有关系,binlog有3中模式,ROW(行模式), Statement(语句模式), Mixed(混合模式)三种模式的用法如下: ROW(行模式):记录那条数据修改了 ...
- coba mysql_在Android Studio中将数据从MySQL数据库显示到TextView中-问答-阿里云开发者社区-阿里云...
我是新手,Android Studio我想将数据库(我使用MySQL)中的数据显示到中TextView.我也使用Button和RadioButton.单击按钮后,数据将显示在中TextView.这是我 ...
- mysql sqlserver 函数_等价于MySQL中的SQLServer函数SCOPE_IDENTITY()??mysql-问答-阿里云开发者社区-阿里云...
这是您要寻找的: LAST_INSERT_ID() 为了回应OP的评论,我创建了以下基准测试: CREATE TABLE Foo ( FooId INT AUTO_INCREMENT PRIMARY ...
- mysql 提高事物效率_怎么提高向mysql中插入数据的效率-问答-阿里云开发者社区-阿里云...
String[] filelist = file.list(); for(String filename : filelist){ BufferedReader br = new BufferedRe ...
- python中str用法_python中的str()不能直接用吗
-问答-阿里云开发者社区-阿里云
str函数是Python的内置函数,它将参数转换成字符串类型,即人适合阅读的形式. 其语法格式为 1 str(object) 返回值: 返回object的字符串形式 使用示例 无参调用 当str()函 ...
- apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...
我希望能够使用Camel连续轮询数据库以从表中选择数据.我已经在我的Spring Boot应用程序中配置了Camel.这是我正在使用的配置 build.gradle: implementation ' ...
- python if else用法同一行_在Python的同一行中使用if else for和del吗?-问答-阿里云开发者社区-阿里云...
我有一个列表,其项目是可变长度的列表. 如果这些可变长度的列表项超过此长度,则需要将其截断为特定长度(x). 我做了这个小的功能. def truncateList(batch_, trim_len) ...
- python如何实时捕捉cmd显示_如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出?
-问答-阿里云开发者社区-阿里云...
如果您正在谈论python解释器或CMD.exe,它是您脚本的"父",那么不可能.在每个类似POSIX的系统中(现在你正在运行Windows,看起来可能有一些我不知道的怪癖,YMM ...
- python中tmp什么意思_python中temp是什么意思-问答-阿里云开发者社区-阿里云
==tempfile 模块== [Example 2-6 #eg-2-6] 中展示的 tempfile 模块允许你快速地创建名称唯一的临时文件供使用. ====Example 2-6. 使用 temp ...
最新文章
- python根据2点经纬度计算距离
- 多列集合的索引器实现
- 1058. A+B in Hogwarts (20)
- Iverson Bracket. 艾弗森括号
- THUSC2019 退役记
- 有意思的《致招商银行的公开信》行动!
- win11正式版如何安装安卓app windows11正式版安装安卓app的步骤方法
- mysql数据库子查询练习_子查询以及sql练习
- VS 2017 RC到期的解决方法
- API接口在线管理(Swagger和SosoApi)
- matlab,cvx安装mosek
- Fcitx 在 LumaQQ中的设置
- Kali系统安装Visual Studio Code
- 安装Microsoft Office Document Image Writer
- css实现超过两行用...表示
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
- 基于ssm框架的农产品扶农商农平台的设计与实现
- 好用的免费代理池搭建
- Guava Collect
- 59岁院士履新!怀进鹏出任教育部党组书记,这位计算机专家曾任北航校长
热门文章
- Akamai:三季度DDoS攻击总数同比上涨138% 规模超100 Gbps
- 颓废了1年+,今天开始勤(tui)奋(fei)啦
- Distribution download cancelled. Using distribution from 'https://services.gradle.org/distributions/
- windows2008 IIS下配置FTP服务
- 工作流系统之三十四 集成用户系统
- 基于中颖SH79F168单片机的航模无刷电调方案
- Atlas Control Toolkit更新发布V1.0.60914.0
- 11.性能之巅 洞悉系统、企业与云计算 --- 云计算
- 67.Systemd 实战
- 19. 配置Symfony(和环境)