7. 神经网络训练MNIST数据集的简单实现

本文介绍了一个简单的神经网络模型实现,用于训练MNIST数据集进行数字分类。内容包括全连接神经网络的搭建,加入ReLU激活函数,数据集的下载与加载,样本标签的独热编码,模型训练过程及数据可视化,最后讨论了模型的保存和加载。
摘要由CSDN通过智能技术生成

1. 实现全连接神经网络搭建(第3节内容)

在简单神经网络框架中,增加ReLU激活函数

import torch.nn as nn
##########################Step 1: 全连接神经网络搭建#############################
class NeuralNet(nn.Module):
    def __init__(self, in_features, hidden_features, out_features):
        super(NeuralNet, self).__init__()
        #  输入层 ->  隐藏层
        self.layer1 = nn.Linear(in_features, hidden_features)
        #  隐藏层 -> 输出层
        self.layer2 = nn.Linear(hidden_features, out_features)
 
    def forward(self, x):
        y = self.layer1(x)          # 第一层参数传递
        y = nn.functional.relu(y)   # ReLU激活函数
        y = self.layer2(y)          # 第二层参数传递
        return y

2. 完成数据集下载(第6节内容)

from torchvision.transforms import ToTensor
from torchvision.datasets import MNIST
############################Step 2: 数据集下载##################################
trainData = MNIST(root = "./",            
                  train = True,          
                  transform=ToTensor(), 
                  download = True)       
testData = MNIST(root = "./",
                  train = False,
                  transform=ToTensor(),
                  download = True)

3. 完成数据集加载(第6节内容)

from torch.utils.data import DataLoader
############################Step 3: 数据集加载##################################
batch_size = 64
trainData_loader = DataLoader(dataset = trainData,
                              batch_size = batch_size, 
                              shuffle = True)  
testData_loader = DataLoader(dataset = testData,
                             batch_size = batch_size,        
神经网络是一种强大的分类器,可以用于许多机器学习任务,包括MNIST数据集的分类。下面是使用Python和Keras库训练MNIST数据集神经网络分类器的代码示例: ```python from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense, Dropout from keras.utils import np_utils # 加载MNIST数据集 (X_train, y_train), (X_test, y_test) = mnist.load_data() # 将图像数据转换为一维向量 num_pixels = X_train.shape[1] * X_train.shape[2] X_train = X_train.reshape(X_train.shape[0], num_pixels).astype('float32') X_test = X_test.reshape(X_test.shape[0], num_pixels).astype('float32') # 对图像数据进行归一化 X_train = X_train / 255 X_test = X_test / 255 # 对标签数据进行one-hot编码 y_train = np_utils.to_categorical(y_train) y_test = np_utils.to_categorical(y_test) num_classes = y_test.shape[1] # 创建神经网络模型 model = Sequential() model.add(Dense(num_pixels, input_dim=num_pixels, kernel_initializer='normal', activation='relu')) model.add(Dense(num_classes, kernel_initializer='normal', activation='softmax')) # 编译神经网络模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练神经网络模型 model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2) # 在测试集上进行评估 scores = model.evaluate(X_test, y_test, verbose=0) print("Accuracy: %.2f%%" % (scores[1]*100)) ``` 在上面的代码中,我们使用Keras库加载MNIST数据集,并对图像数据进行预处理,包括将图像数据转换为一维向量和归一化处理。然后,我们对标签数据进行one-hot编码。接着,我们创建一个简单神经网络模型,包括一个输入层、一个隐藏层和一个输出层。我们使用`Dense`函数来定义网络层,并使用`relu`和`softmax`激活函数。然后,我们使用`compile`函数来编译神经网络模型,并指定损失函数、优化器和评估指标。接着,我们使用`fit`函数来训练神经网络模型,并指定训练集、测试集、迭代次数和批量大小等参数。最后,我们使用`evaluate`函数在测试集上对模型进行评估,并输出准确率。需要注意的是,我们可以通过调整神经网络模型的超参数,如神经元数量、层数、学习率等,以获得更好的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值