cs231n assignment2 q5 PyTorch on CIFAR-10

这篇具有很好参考价值的文章主要介绍了cs231n assignment2 q5 PyTorch on CIFAR-10。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

嫌啰嗦直接看源码

Q5 :PyTorch on CIFAR-10

three_layer_convnet

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
让我们使用Pytorch来实现一个三层神经网络

解析

看下pytorch是怎么用的,原理我们其实都清楚了,自己去查下文档就好了

具体的可以看上一个cell上面给出的文档地址

For convolutions: http://pytorch.org/docs/stable/nn.html#torch.nn.functional.conv2d; pay attention to the shapes of convolutional filters!

代码

def three_layer_convnet(x, params):
    """
    Performs the forward pass of a three-layer convolutional network with the
    architecture defined above.

    Inputs:
    - x: A PyTorch Tensor of shape (N, 3, H, W) giving a minibatch of images
    - params: A list of PyTorch Tensors giving the weights and biases for the
      network; should contain the following:
      - conv_w1: PyTorch Tensor of shape (channel_1, 3, KH1, KW1) giving weights
        for the first convolutional layer
      - conv_b1: PyTorch Tensor of shape (channel_1,) giving biases for the first
        convolutional layer
      - conv_w2: PyTorch Tensor of shape (channel_2, channel_1, KH2, KW2) giving
        weights for the second convolutional layer
      - conv_b2: PyTorch Tensor of shape (channel_2,) giving biases for the second
        convolutional layer
      - fc_w: PyTorch Tensor giving weights for the fully-connected layer. Can you
        figure out what the shape should be?
      - fc_b: PyTorch Tensor giving biases for the fully-connected layer. Can you
        figure out what the shape should be?
    
    Returns:
    - scores: PyTorch Tensor of shape (N, C) giving classification scores for x
    """
    conv_w1, conv_b1, conv_w2, conv_b2, fc_w, fc_b = params
    scores = None
    ################################################################################
    # TODO: Implement the forward pass for the three-layer ConvNet.                #
    ################################################################################
    # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

    x = F.conv2d(x, conv_w1, bias=conv_b1, padding=2)
    x = F.relu(x)
    x = F.conv2d(x, conv_w2, bias=conv_b2, padding=1)
    x = F.relu(x)
    x = flatten(x)
    scores = x.mm(fc_w) + fc_b

    # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
    ################################################################################
    #                                 END OF YOUR CODE                             #
    ################################################################################
    return scores

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
注意这里需要注意有没有使用Gpu版本的pytorch,我就是在这里发现我的pytorch没有cuda

Training a ConvNet

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

解析

按照题面意思来就好了

代码

learning_rate = 3e-3

channel_1 = 32
channel_2 = 16

conv_w1 = None
conv_b1 = None
conv_w2 = None
conv_b2 = None
fc_w = None
fc_b = None

################################################################################
# TODO: Initialize the parameters of a three-layer ConvNet.                    #
################################################################################
# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

conv_w1 = random_weight((channel_1, 3, 5, 5))
conv_b1 = zero_weight(channel_1)
conv_w2 = random_weight((channel_2, channel_1, 3, 3))
conv_b2 = zero_weight(channel_2)
fc_w = random_weight((channel_2 * 32 * 32, 10))
fc_b = zero_weight(10)

# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
################################################################################
#                                 END OF YOUR CODE                             #
################################################################################

params = [conv_w1, conv_b1, conv_w2, conv_b2, fc_w, fc_b]
train_part2(three_layer_convnet, params, learning_rate)

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

ThreeLayerConvNet

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

解析

就是让我们熟悉一下几个api

代码

class ThreeLayerConvNet(nn.Module):
    def __init__(self, in_channel, channel_1, channel_2, num_classes):
        super().__init__()
        ########################################################################
        # TODO: Set up the layers you need for a three-layer ConvNet with the  #
        # architecture defined above.                                          #
        ########################################################################
        # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

        self.conv1 = nn.Conv2d(in_channel, channel_1, kernel_size=5, padding=2)
        self.conv2 = nn.Conv2d(channel_1, channel_2, kernel_size=3, padding=1)
        self.fc3 = nn.Linear(channel_2 * 32 * 32, num_classes)
        nn.init.kaiming_normal_(self.conv1.weight)
        nn.init.kaiming_normal_(self.conv2.weight)
        nn.init.kaiming_normal_(self.fc3.weight)

        # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
        ########################################################################
        #                          END OF YOUR CODE                            #
        ########################################################################

    def forward(self, x):
        scores = None
        ########################################################################
        # TODO: Implement the forward function for a 3-layer ConvNet. you      #
        # should use the layers you defined in __init__ and specify the        #
        # connectivity of those layers in forward()                            #
        ########################################################################
        # *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

        x = F.relu(self.conv1(x))
        x = F.relu(self.conv2(x))
        scores = self.fc3(flatten(x))

        # *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
        ########################################################################
        #                             END OF YOUR CODE                         #
        ########################################################################
        return scores

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

Train a Three-Layer ConvNet

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

解析

就仿照上面的两层全连接改写就好了

关于optim ,我试过sgd 和 adam,但是我发现还是sgd效果对于这个样本好一点。。。。

代码

learning_rate = 3e-3
channel_1 = 32
channel_2 = 16

model = None
optimizer = None
################################################################################
# TODO: Instantiate your ThreeLayerConvNet model and a corresponding optimizer #
################################################################################
# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

model = ThreeLayerConvNet(in_channel=3, channel_1=channel_1, channel_2=channel_2, num_classes=10)
optimizer = optim.SGD(model.parameters(), lr=learning_rate)

# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
################################################################################
#                                 END OF YOUR CODE                             #
################################################################################

train_part34(model, optimizer)

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

Sequential API: Three-Layer ConvNet

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

解析

也是仿照上面写就好了

代码

channel_1 = 32
channel_2 = 16
learning_rate = 1e-2

model = None
optimizer = None

################################################################################
# TODO: Rewrite the 2-layer ConvNet with bias from Part III with the           #
# Sequential API.                                                              #
################################################################################
# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

model = nn.Sequential(
    nn.Conv2d(in_channels=3, out_channels=channel_1, kernel_size=5, padding=2),
    nn.ReLU(),
    nn.Conv2d(in_channels=channel_1, out_channels=channel_2, kernel_size=3, padding=1),
    nn.ReLU(),
    Flatten(),
    nn.Linear(channel_2 * 32 * 32, 10)
)
optimizer = optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9, nesterov=True)

# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
################################################################################
#                                 END OF YOUR CODE                             #
################################################################################

train_part34(model, optimizer)

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python

CIFAR-10 open-ended challenge

题面

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
就是让我们自己尝试搭建一种网络结构使其准确率大于70%

解析

自己试吧

代码

################################################################################
# TODO:                                                                        #         
# Experiment with any architectures, optimizers, and hyperparameters.          #
# Achieve AT LEAST 70% accuracy on the *validation set* within 10 epochs.      #
#                                                                              #
# Note that you can use the check_accuracy function to evaluate on either      #
# the test set or the validation set, by passing either loader_test or         #
# loader_val as the second argument to check_accuracy. You should not touch    #
# the test set until you have finished your architecture and  hyperparameter   #
# tuning, and only run the test set once at the end to report a final value.   #
################################################################################
model = None
optimizer = None

# *****START OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****

model = nn.Sequential(
    nn.Conv2d(3, 32, kernel_size=3, stride=1, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),
    nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),
    nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1),
    nn.ReLU(),
    nn.MaxPool2d(kernel_size=2, stride=2),
    Flatten(),
    nn.Linear(128 * 4 * 4, 1024),
)
optimizer = optim.Adam(model.parameters(), lr=1e-3)

# *****END OF YOUR CODE (DO NOT DELETE/MODIFY THIS LINE)*****
################################################################################
#                                 END OF YOUR CODE                             #
################################################################################

# You should get at least 70% accuracy.
# You may modify the number of epochs to any number below 15.
train_part34(model, optimizer, epochs=10)

输出

cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python
cs231n assignment2 q5 PyTorch on CIFAR-10,cs231n,pytorch,人工智能,python文章来源地址https://www.toymoban.com/news/detail-654968.html

到了这里,关于cs231n assignment2 q5 PyTorch on CIFAR-10的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CS231N assignment3-transformer,GAN,self-supervised,LSTM

    这部分作业内容很大,上传到github费了很多时间,参考的是这篇:如何在GitHub上传大文件(≥100M) | 码农家园 (codenong.com) 但是还是没传成功··· 所以我直接传到网盘里了 链接:https://pan.baidu.com/s/1T8Sc2Owq6OMtDSo5SNKlaA  提取码:784w  --来自百度网盘超级会员V2的分享 然后简单介

    2024年02月15日
    浏览(40)
  • cs231n assignmen3 Extra Credit: Image Captioning with LSTMs

    题面 结合课程和上面的讲解,这部分就是让我们来实现lstm的前向操作,具体的操作流程在上面都写好了 解析 看代码注释吧 代码 输出 题面 计算lstm的反向操作 解析 sigmoid求导 Tanh 求导 反向传播讲解可以看这个 然后结合代码注释,想想链式求导法则就好了 代码 输出 题面 让

    2024年02月10日
    浏览(34)
  • 3.pytorch cifar10

    CIFAR10 是由 Hinton 的学生 Alex Krizhevsky、Ilya Sutskever 收集的一个用于普适物体识别的计算机视觉数据集,它包含 60000 张 32 X 32 的 RGB 彩色图片,总共 10 个分类。 这些类别分别是飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车。其中,包括 50000 张用于训练集,10000 张用于

    2024年02月04日
    浏览(37)
  • 基于 PyTorch 的 cifar-10 图像分类

    本文的主要内容是基于 PyTorch 的 cifar-10 图像分类,文中包括 cifar-10 数据集介绍、环境配置、实验代码、运行结果以及遇到的问题这几个部分,本实验采用了基本网络和VGG加深网络模型,其中VGG加深网络模型的识别准确率是要优于基本网络模型的。 cifar-10 数据集由 60000 张分辨

    2023年04月24日
    浏览(41)
  • Pytorch CIFAR10图像分类 SENet篇

    2024年02月07日
    浏览(91)
  • PyTorch实战:实现Cifar10彩色图片分类

    目录 前言 一、Cifar10数据集 class torch.utils.data.Dataset  torch.utils.data.DataLoader 二、定义神经网络 普通神经网络: 定义损失函数和优化器  训练网络-Net CPU训练 模型准确率 ​编辑 GPU训练 训练网络-LeNet 模型准确率 点关注,防走丢,如有纰漏之处,请留言指教,非常感谢 PyTorch可以

    2024年02月07日
    浏览(40)
  • 【深度学习】pytorch——实现CIFAR-10数据集的分类

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 往期文章: 【深度学习】pytorch——快速入门 CIFAR-10是一个常用的图像分类数据集,每张图片都是 3×32×32,3通道彩色图片,分辨率为 32×32。 它包含了10个不同类别,每个类别有6000张图像,其中5000张用于训练,1000张用于

    2024年02月06日
    浏览(49)
  • [Pytorch] CIFAR-10数据集的训练和模型优化

    本篇文章借鉴了我的朋友Jc的报告,他是一个十分优秀的人。 本篇文章记录了第一次完整训练优化的过程 在CIFAR-10 dataset的介绍中,cifar-10数据集一共10类图片,每一类有6000张图片,加起来就是60000张图片,每张图片的尺寸是32x32,图片是彩色图,整个数据集被分为5个训练批次

    2023年04月14日
    浏览(40)
  • 【PyTorch】使用PyTorch创建卷积神经网络并在CIFAR-10数据集上进行分类

    在深度学习的世界中,图像分类任务是一个经典的问题,它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集,包含了10个类别的60000张32x32彩色图像。在本博客中,我们将探讨如何使用PyTorch框架创建一个简单的卷积神经网络(CNN)来对CIFAR-10数据集中

    2024年01月24日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包