利用高斯核卷积对MINIST数据集进行去噪

import torch

import torchvision

from torch.autograd import Variable

from torchvision import datasets, transforms

from torch.utils.data import DataLoader

import cv2

from torch import nn

import numpy as np

import torch.nn.functional as F

import advertorch.defenses as defenses 

from numpy import *

seed = 2014

 

torch.manual_seed(seed)

np.random.seed(seed)  # Numpy module.

random.seed(seed)  # Python random module.

torch.manual_seed(seed)

 

train_dataset =   datasets.FashionMNIST('./fashionmnist_data/', train=True, download=True,

                       transform=transforms.Compose([

                           transforms.ToTensor(),

                       ]))

 

train_loader = DataLoader(dataset = train_dataset, batch_size = 500, shuffle = True)

 

test_loader = torch.utils.data.DataLoader(

        datasets.FashionMNIST('./fashionmnist_data/', train=False, transform=transforms.Compose([

        transforms.ToTensor(),

        ])),batch_size=1, shuffle=True)

 

epoch = 12


 

class Linear_cliassifer(torch.nn.Module):

    def __init__(self) :

        super(Linear_cliassifer, self).__init__()


 

        self.Gs = defenses.GaussianSmoothing2D(3, 1, 3)

        self.Line1 = torch.nn.Linear(28 * 28, 10)

 

    def forward(self, x):


 

        x = self.Gs(x)

        x = self.Line1(x.view(-1, 28 * 28))

 

        return x


 

net = Linear_cliassifer()

cost = torch.nn.CrossEntropyLoss()



 

optimizer = torch.optim.Adam(net.parameters(), lr=0.001)

 

for k in range(epoch):

    sum_loss = 0.0

    train_correct = 0

    for i, data in enumerate(train_loader, 0):

        inputs, labels = data

        optimizer.zero_grad()

        outputs = net(inputs)

 

        loss = cost(outputs, labels)

        loss.backward()

        optimizer.step()

 

        print(loss)

        _, id = torch.max(outputs.data, 1) 

        sum_loss += loss.data

        train_correct += torch.sum(id == labels.data)

        #print('[%d,%d] loss:%.03f' % (k + 1, k, sum_loss / len(train_loader)))

    print('        correct:%.03f%%' % (100 * train_correct / len(train_dataset)))

    torch.save(net.state_dict(), 'model/fasion_BL.pt')

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 利用卷积神经网络对MINST数据集进行分类实验是一种常见和有效的图像识别方法。MINST数据集是一个手写数字图片集合,包括了60000个训练样本和10000个测试样本。 卷积神经网络(Convolutional Neural Network,CNN)是一种模拟人类视觉系统的深度学习模型,其在图像处理和模式识别任务中表现出色。使用CNN对MINST数据集进行分类实验的步骤如下: 1. 数据准备:首先,将MINST数据集加载到程序中,并进行标准化处理,将图像的像素值归一化到0到1之间。 2. 构建CNN模型:这里可以使用Python的深度学习框架,如TensorFlow、Keras或PyTorch来构建CNN模型。定义卷积层、池化层和全连接层,并设置合适的卷积大小、池化窗口大小和激活函数。 3. 模型训练:将训练集输入到CNN模型中,进行反向传播优化算法,如随机梯度下降(SGD)、Adam或RMSprop来优化模型参数。根据训练集不断调整卷积权重、偏置和全连接层权重、偏置,直到模型收敛。 4. 模型评估:使用测试集评估已经训练好的模型。将测试集输入到CNN模型中,计算分类准确率、精确度、召回率等指标来评估模型的性能。 5. 结果分析:分析模型在测试集上的性能表现,可以观察混淆矩阵、绘制准确率和损失函数变化曲线等。 通过这样的实验,我们可以了解CNN模型在MINST数据集上的分类效果。MINST数据集是一个较为简单的图像分类任务,对于CNN来说可以很好地处理。这个实验也可以作为学习和理解CNN模型的基础,为后续更复杂的图像分类任务打下基础。 ### 回答2: 卷积神经网络(Convolutional Neural Networks, CNN)是一种深度学习模型,特别适合处理图像数据。下面我将介绍如何使用CNN对MINST手写数字数据集进行分类实验。 MINST数据集是一个包含60000个训练样本和10000个测试样本的手写数字数据集。我们的目标是将这些手写数字图像正确地分类为0至9中的一个。 首先,我们需要导入所需的库和数据集。我们可以使用Python的TensorFlow库来实现卷积神经网络,并使用MINST数据集进行训练和测试。 接下来,我们定义一个CNN模型。一个典型的CNN模型由卷积层、池化层和全连接层组成。我们可以通过多次迭代来选择合适的参数和层数。 然后,我们将数据集分为训练集和测试集。训练集用于训练CNN的权重和参数,而测试集用于评估模型的性能。 接下来,我们进行训练和优化。我们使用训练集来训练CNN模型,并通过优化算法来调整权重和参数,以最小化损失函数。 在训练完成后,我们使用测试集来评估模型的性能。我们将模型应用于测试集中的图像,然后计算模型的准确率和损失。 最后,我们可以进行预测。我们可以将新的手写数字图像输入到CNN模型中,然后通过模型的输出确定该图像属于哪个数字类别。 通过上述步骤,我们可以使用CNN对MINST手写数字数据集进行分类实验。这种方法在图像分类问题中已经证明了其有效性,并且在许多实际应用中得到了广泛应用。 ### 回答3: 卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,特别适用于图像处理任务。MINST数据集是一个常用的手写数字识别数据集,由60000个训练样本和10000个测试样本组成。 利用卷积神经网络对MINST数据集进行分类实验的步骤如下: 1. 数据准备:首先需要下载MINST数据集,并将其分为训练集和测试集。MINST数据集提供了每个样本的数字标签和对应的图像数据。 2. 构建模型:使用深度学习框架如TensorFlow或PyTorch,搭建一个卷积神经网络模型。模型可以包含卷积层、池化层、全连接层等组件。可以选择不同的网络架构和超参数进行实验。 3. 数据预处理:在输入数据之前,进行一些预处理步骤,如将图像数据进行归一化、缩放和平衡处理等。这样可以提高模型的收敛速度和准确性。 4. 训练模型:将准备好的训练集输入模型,使用训练数据进行模型的训练。通过反向传播算法,不断调整模型的权重和偏差,使模型能够更好地拟合训练数据。 5. 测试模型:使用测试集对训练好的模型进行评估。将测试集的图像输入模型,得到输出的预测结果。计算预测结果与真实标签之间的差距,评估模型的准确性。 6. 调优和改进:根据测试结果分析模型的性能,可以进行一些调优和改进,如调整网络架构、增加层数、调整超参数等,以进一步提高模型的准确率。 通过以上步骤,可以利用卷积神经网络对MINST数据集进行分类实验。可以通过测量准确度、损失函数等指标来评估模型的性能。不断优化模型,提高准确率,是卷积神经网络在MINST数据集进行分类实验的关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值