用pytorch写一个非图片分类的的多分类,输入数据为38×97 输出为38*7,直接可以运行的完整代码
时间: 2024-05-15 07:19:28 浏览: 59
以下是一个简单的非图片分类的多分类模型,输入数据为38×97,输出为38×7,使用pytorch框架实现:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义模型
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc1 = nn.Linear(38*97, 100)
self.fc2 = nn.Linear(100, 50)
self.fc3 = nn.Linear(50, 7)
def forward(self, x):
x = x.view(-1, 38*97)
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = self.fc3(x)
return x
# 准备数据
train_data = torch.randn(1000, 38, 97)
train_label = torch.randint(0, 7, (1000,))
# 初始化模型和优化器
model = MyModel()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(100):
for i in range(0, 1000, 32):
optimizer.zero_grad()
batch_data = train_data[i:i+32]
batch_label = train_label[i:i+32]
output = model(batch_data)
loss = nn.CrossEntropyLoss()(output, batch_label)
loss.backward()
optimizer.step()
if epoch % 10 == 0:
print('Epoch: {}, Loss: {:.4f}'.format(epoch, loss.item()))
```
在这个例子中,我们定义了一个简单的三层全连接神经网络作为模型,使用ReLU作为激活函数,交叉熵损失作为损失函数,Adam作为优化器。训练过程中,使用随机梯度下降进行优化,每个batch的大小为32,训练100个epoch。在每个epoch结束时,我们打印出当前的损失。
阅读全文