当前位置: 首页 > news >正文

MNIST 数据集的CSV的格式的使用(ANN)

1:简单单层ANN 网络实现MNIST 数据集的分类

Mnist数据集可以算是学习深度学习最常用到的了。这个数据集包含70000张手写数字图片,分别是60000张训练图片和10000张测试图片,

每个图片都是2828个像素点,数据集/会把一张图片的数据转成一个2828=784的一维向量存储起来。
里面的图片数据如下所示,每张图是0-9的手写数字黑底白字的图片,存储时,黑色用0表示,白色用0-1的浮点数表示。
每张图片是一个28*28像素点的0 ~ 9的灰质手写数字图片,黑底白字,图像像素值为0 ~ 255,越大该点越白。

2:利用CSV 进行图片的读取

每个图片都是2828个像素点,数据集/会把一张图片的数据转成一个2828=784的一维向量存储起来。里面的图片数据如下所示,每张图是0-9的手写数字黑底白字的图片,存储时,黑色用0表示,白色用0-1的浮点数表示。

import pandas as pd
import torch
from torch.utils.data import DataLoader, TensorDataset
from torch import nn, optimdir = 'E:/MNIST_CSV/'# 读取数据
train_data = pd.read_csv(dir+'mnist_train.csv')
y_train = train_data.iloc[:, 0]  # 第一列是标签
X_train = train_data.iloc[:, 1:]  # 其余列是像素值# 转换为张量
X_train = torch.tensor(X_train.values, dtype=torch.float32)
y_train = torch.tensor(y_train.values, dtype=torch.long)# 创建 DataLoader
train_dataset = TensorDataset(X_train, y_train)
train_loader = DataLoader(train_dataset, batch_size=2, shuffle=True)# 定义神经网络
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(784, 128)self.relu = nn.ReLU()self.fc2 = nn.Linear(128, 10)def forward(self, x):x = x.view(-1, 784)x = self.relu(self.fc1(x))x = self.fc2(x)return x# 实例化模型、损失函数和优化器
model = SimpleNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
model = model.cuda()# 训练模型
num_epochs = 5for epoch in range(num_epochs):model.train()running_loss = 0.0for i, (inputs, labels) in enumerate(train_loader):# print("inputs:",inputs.shape)# print("labels:", labels.shape)inputs = inputs.cuda()labels = labels.cuda()outputs = model(inputs)outputs =  outputsloss = criterion(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()running_loss += loss.item()if i % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item():.4f}')print(f'Epoch [{epoch+1}] Loss: {running_loss/len(train_loader):.4f}')# 测试模型(可选)test_data = pd.read_csv(dir+'mnist_test.csv')
X_test = torch.tensor(test_data.values, dtype=torch.float32)test_dataset = TensorDataset(X_test)
test_loader = DataLoader(test_dataset, batch_size=2)model.eval()
predictions = []with torch.no_grad():for inputs in test_loader:inputs = inputs[0]outputs = model(inputs)_, predicted = torch.max(outputs.data, 1)predictions.extend(predicted.cpu().numpy())# 保存预测结果
submission = pd.read_csv('sample_submission.csv')
submission['Label'] = predictions
submission.to_csv('submission.csv', index=False)

Mnist数据集CSV格式下载:https://www.kaggle.com/datasets/oddrationale/mnist-in-csv


http://www.mrgr.cn/news/61066.html

相关文章:

  • Linux信号
  • CSP-J2024入门级T3:小木棍
  • 大白话讲解Spring对数据源和事务管理以及多数据源配置
  • 国际数字影像产业园:智慧园区中的创新协作平台
  • java 聚合和规约的区别
  • C++学习,算法
  • 智能化超声波影像分析,优化医疗决策的开源AI解决方案
  • 基于深度学习算法的动物检测系统(含PyQt+代码+训练数据集)
  • 网管平台(进阶篇):网管软件的配置方式
  • 深入理解所有权与借用——借用与生命周期管理
  • OPA548T 数据手册OPA548 高电压、大电流运算放大器芯片
  • 拥抱中国企业数智化周期,IT产业投资切入点何在?
  • python基础(类、实例、属性、方法)
  • 音频翻译怎么操作?亲测实用的4个转换工具,推荐收藏
  • Python字典到JSON字符串的转换
  • 常用方法:枚举类型
  • golang包导入注意事项
  • 山峰为您的设备选择合适的油封
  • IDEA使用正则批量替换(理论上JetBrains全家桶都适用)
  • 基础IO -- 简单封装库(文件操作)