用pytorch构建一维卷积神经网络,数据集是有12个数字特征与1个标签csv文件
时间: 2024-05-02 15:21:11 浏览: 162
以下是一个使用PyTorch构建一维卷积神经网络的示例代码,用于处理具有12个数字特征和1个标签的CSV文件数据集。
```python
import torch
import torch.nn as nn
import torch.optim as optim
import pandas as pd
from torch.utils.data import Dataset, DataLoader
# 定义数据集类
class MyDataset(Dataset):
def __init__(self, csv_file):
self.data = pd.read_csv(csv_file, header=None).values
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
x = torch.tensor(self.data[idx, :-1], dtype=torch.float32)
y = torch.tensor(self.data[idx, -1], dtype=torch.long)
return x, y
# 定义卷积神经网络模型
class ConvNet(nn.Module):
def __init__(self):
super(ConvNet, self).__init__()
self.conv1 = nn.Conv1d(1, 16, kernel_size=3, stride=1, padding=1)
self.pool = nn.MaxPool1d(kernel_size=2, stride=2)
self.conv2 = nn.Conv1d(16, 32, kernel_size=3, stride=1, padding=1)
self.fc1 = nn.Linear(32 * 3, 64)
self.fc2 = nn.Linear(64, 2)
def forward(self, x):
x = x.unsqueeze(1)
x = self.pool(torch.relu(self.conv1(x)))
x = self.pool(torch.relu(self.conv2(x)))
x = x.view(-1, 32 * 3)
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# 加载数据集
dataset = MyDataset('data.csv')
dataloader = DataLoader(dataset, batch_size=4, shuffle=True)
# 初始化模型和优化器
model = ConvNet()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(10):
running_loss = 0.0
for i, data in enumerate(dataloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = nn.CrossEntropyLoss()(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
print('[Epoch %d] Loss: %.3f' % (epoch + 1, running_loss / len(dataset)))
# 保存模型
torch.save(model.state_dict(), 'model.pt')
```
在上面的示例代码中,我们首先定义了一个`MyDataset`类来处理CSV文件数据集。该类包含`__init__`、`__len__`和`__getitem__`方法,分别用于加载数据集、获取数据集长度和获取单个数据。
接下来,我们定义了一个`ConvNet`类,该类作为我们的卷积神经网络模型。它包含了两个卷积层、两个最大池化层和两个全连接层。在`forward`方法中,我们首先将输入张量的维度从[batch_size, 12]转换为[batch_size, 1, 12],然后通过卷积和池化层,最终将张量的形状转换为[batch_size, 32 * 3]。最后,我们使用ReLU激活函数和全连接层来生成输出张量。
然后,我们使用`MyDataset`类加载数据集,并使用`DataLoader`类创建数据加载器。我们还初始化了模型和优化器,并使用交叉熵损失函数来训练模型。在训练过程中,我们迭代数据加载器中的每个批次,使用模型生成预测和计算损失,然后使用反向传播和优化器更新模型参数。
最后,我们保存了训练好的模型参数,以备以后使用。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)