我在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:如何添加/更改序列长度维度?-问答-阿里云开发者社区-阿里云...相关推荐

  1. ssm mysql 插入date 数据_SSM中插入数据没有报错,但是数据库没有值?报错-问答-阿里云开发者社区-阿里云...

    mybatis默认开启事务不会自动提交,只有调用了commit才会提交事务.你这种情况明显是事务成功执行了,而且自增ID也已生效,但事务本身没有提交,请调用mybatis的commit方法提交事务! ...

  2. canal同步mysql到kafka_使用Canal同步MySQL数据到Kafka 得到的数据中sql字段无值-问答-阿里云开发者社区-阿里云...

    这个应该跟你的binlog记录模式有关系,binlog有3中模式,ROW(行模式), Statement(语句模式), Mixed(混合模式)三种模式的用法如下: ROW(行模式):记录那条数据修改了 ...

  3. coba mysql_在Android Studio中将数据从MySQL数据库显示到TextView中-问答-阿里云开发者社区-阿里云...

    我是新手,Android Studio我想将数据库(我使用MySQL)中的数据显示到中TextView.我也使用Button和RadioButton.单击按钮后,数据将显示在中TextView.这是我 ...

  4. mysql sqlserver 函数_等价于MySQL中的SQLServer函数SCOPE_IDENTITY()??mysql-问答-阿里云开发者社区-阿里云...

    这是您要寻找的: LAST_INSERT_ID() 为了回应OP的评论,我创建了以下基准测试: CREATE TABLE Foo ( FooId INT AUTO_INCREMENT PRIMARY ...

  5. mysql 提高事物效率_怎么提高向mysql中插入数据的效率-问答-阿里云开发者社区-阿里云...

    String[] filelist = file.list(); for(String filename : filelist){ BufferedReader br = new BufferedRe ...

  6. python中str用法_python中的str()不能直接用吗 -问答-阿里云开发者社区-阿里云

    str函数是Python的内置函数,它将参数转换成字符串类型,即人适合阅读的形式. 其语法格式为 1 str(object) 返回值: 返回object的字符串形式 使用示例 无参调用 当str()函 ...

  7. apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...

    我希望能够使用Camel连续轮询数据库以从表中选择数据.我已经在我的Spring Boot应用程序中配置了Camel.这是我正在使用的配置 build.gradle: implementation ' ...

  8. python if else用法同一行_在Python的同一行中使用if else for和del吗?-问答-阿里云开发者社区-阿里云...

    我有一个列表,其项目是可变长度的列表. 如果这些可变长度的列表项超过此长度,则需要将其截断为特定长度(x). 我做了这个小的功能. def truncateList(batch_, trim_len) ...

  9. python如何实时捕捉cmd显示_如何从Python脚本中捕获Python解释器和/或CMD.EXE的输出? -问答-阿里云开发者社区-阿里云...

    如果您正在谈论python解释器或CMD.exe,它是您脚本的"父",那么不可能.在每个类似POSIX的系统中(现在你正在运行Windows,看起来可能有一些我不知道的怪癖,YMM ...

  10. python中tmp什么意思_python中temp是什么意思-问答-阿里云开发者社区-阿里云

    ==tempfile 模块== [Example 2-6 #eg-2-6] 中展示的 tempfile 模块允许你快速地创建名称唯一的临时文件供使用. ====Example 2-6. 使用 temp ...

最新文章

  1. python根据2点经纬度计算距离
  2. 多列集合的索引器实现
  3. 1058. A+B in Hogwarts (20)
  4. Iverson Bracket. 艾弗森括号
  5. THUSC2019 退役记
  6. 有意思的《致招商银行的公开信》行动!
  7. win11正式版如何安装安卓app windows11正式版安装安卓app的步骤方法
  8. mysql数据库子查询练习_子查询以及sql练习
  9. VS 2017 RC到期的解决方法
  10. API接口在线管理(Swagger和SosoApi)
  11. matlab,cvx安装mosek
  12. Fcitx 在 LumaQQ中的设置
  13. Kali系统安装Visual Studio Code
  14. 安装Microsoft Office Document Image Writer
  15. css实现超过两行用...表示
  16. MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
  17. 基于ssm框架的农产品扶农商农平台的设计与实现
  18. 好用的免费代理池搭建
  19. Guava Collect
  20. 59岁院士履新!怀进鹏出任教育部党组书记,这位计算机专家曾任北航校长

热门文章

  1. Akamai:三季度DDoS攻击总数同比上涨138% 规模超100 Gbps
  2. 颓废了1年+,今天开始勤(tui)奋(fei)啦
  3. Distribution download cancelled. Using distribution from 'https://services.gradle.org/distributions/
  4. windows2008 IIS下配置FTP服务
  5. 工作流系统之三十四 集成用户系统
  6. 基于中颖SH79F168单片机的航模无刷电调方案
  7. Atlas Control Toolkit更新发布V1.0.60914.0
  8. 11.性能之巅 洞悉系统、企业与云计算 --- 云计算
  9. 67.Systemd 实战
  10. 19. 配置Symfony(和环境)