cs231n assignment2 q5 PyTorch on CIFAR-10

文章目录

  • 嫌啰嗦直接看源码
  • Q5 :PyTorch on CIFAR-10
    • three_layer_convnet
      • 题面
      • 解析
      • 代码
      • 输出
    • Training a ConvNet
      • 题面
      • 解析
      • 代码
      • 输出
    • ThreeLayerConvNet
      • 题面
      • 解析
      • 代码
      • 输出
    • Train a Three-Layer ConvNet
      • 题面
      • 解析
      • 代码
      • 输出
    • Sequential API: Three-Layer ConvNet
      • 题面
      • 解析
      • 代码
      • 输出
    • CIFAR-10 open-ended challenge
      • 题面
      • 解析
      • 代码
      • 输出

嫌啰嗦直接看源码

Q5 :PyTorch on CIFAR-10

three_layer_convnet

题面

在这里插入图片描述
在这里插入图片描述
让我们使用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 thearchitecture 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 thenetwork; should contain the following:- conv_w1: PyTorch Tensor of shape (channel_1, 3, KH1, KW1) giving weightsfor the first convolutional layer- conv_b1: PyTorch Tensor of shape (channel_1,) giving biases for the firstconvolutional layer- conv_w2: PyTorch Tensor of shape (channel_2, channel_1, KH2, KW2) givingweights for the second convolutional layer- conv_b2: PyTorch Tensor of shape (channel_2,) giving biases for the secondconvolutional layer- fc_w: PyTorch Tensor giving weights for the fully-connected layer. Can youfigure out what the shape should be?- fc_b: PyTorch Tensor giving biases for the fully-connected layer. Can youfigure 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 = paramsscores = 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

输出

在这里插入图片描述
在这里插入图片描述
注意这里需要注意有没有使用Gpu版本的pytorch,我就是在这里发现我的pytorch没有cuda

Training a ConvNet

题面

在这里插入图片描述
在这里插入图片描述

解析

按照题面意思来就好了

代码

learning_rate = 3e-3channel_1 = 32
channel_2 = 16conv_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)

输出

在这里插入图片描述

ThreeLayerConvNet

题面

在这里插入图片描述

解析

就是让我们熟悉一下几个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

输出

在这里插入图片描述
在这里插入图片描述

Train a Three-Layer ConvNet

题面

在这里插入图片描述

解析

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

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

代码

learning_rate = 3e-3
channel_1 = 32
channel_2 = 16model = 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)

输出

在这里插入图片描述

Sequential API: Three-Layer ConvNet

题面

在这里插入图片描述

解析

也是仿照上面写就好了

代码

channel_1 = 32
channel_2 = 16
learning_rate = 1e-2model = 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)

输出

在这里插入图片描述

CIFAR-10 open-ended challenge

题面

在这里插入图片描述
在这里插入图片描述
就是让我们自己尝试搭建一种网络结构使其准确率大于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)

输出

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66829.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native 图片组件基础知识

在 React Native 中使用图片其实跟 HTML 中使用图片一样简单,在 React Native 中我们使用Image组件来呈现图片的内容,其中主要的属性有:source。这个属性主要是设置图片的内容,它可以是网络图像地址、静态资源、临时本地图像以及本…

nginx基于主机和用户访问控制以及缓存简单例子

一.基于主机访问控制 1.修改nginx.conf文件 2.到其他主机上测试 (1)191主机 (2)180主机 二.基于用户访问控制 1.修改nginx.conf文件 2.使用hpasswd为用户创建密码文件,并指定到刚才指定的密码文件webck 3.测试…

SQL注入之Oracle注入

SQL注入之Oracle注入 7.1 SQL注入之Oracle环境搭建 前言 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统…

如何将安卓 Gradle 模块打包发布到本地 Maven 仓库

文章目录 具体流程 笔者的运行环境: Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17 Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle …

【CTF-MISC】1和0的故事(二维码定位点补全)

题目链接:https://ctf.bugku.com/challenges/detail/id/216.html 文件中得到一个01方阵,可以在010 Editor中高亮设置将1涂为黑色、0涂为白色,如下图所示。 截图以后调整大小再加入三个定位点即可得到二维码。 扫描即可得到答案。 要注意的是…

轧钢传动控制系统液压比例阀控制器

轧钢传动控制系统是用于控制轧钢机械的电气系统,包括调速和控制系统两部分。 调速系统主要用来平滑调节转速,其核心部件是直流电动机调速单元。控制系统主要用于调节和稳定轧机的工作状态,使轧制过程始终处于最佳工作状态,其核心…

Java-类型和变量(基于C语言的补充)

一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成: 1.源文件(扩展名为*.java):源文件带有类的定义…

43 | 抖音大V人民日报粉丝数分析

背景介绍 抖音是一个面向全年龄的音乐短视频社区平台,如今已成为最火的短视频软件,无数短视频创作者通过抖音分享生活,分享技能,分享美好。其中有点赞、评论、转发、关注等功能。 我们试图分析“大 V”即粉丝数量相对较多的博主的涨粉数量和点赞、评论、转发之间的关系,…

利用C++nlohmann库解析json文件

json文件示例&#xff1a; 代码运行环境VS2019 一、git下载nlohmann库文件源代码 源代码文件目录 二、利用VS2019新建工程&#xff0c;并配置项目属性 配置VC目录---包含目录 三、项目源代码 #include <iostream> #include <fstream> #include <nlohmann/jso…

Kubernetes pod调度约束[亲和性 污点] 生命阶段 排障手段

调度约束 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。 APIServer…

伙伴云CEO戴志康:让数据和业务更好的互通展现,数字化与可视化同步进行

近日&#xff0c;零代码平台伙伴云产品「页面」功能正式上线&#xff0c;在【小伙开麦】直播间&#xff0c;CEO戴志康和产品经理共同为在线观众展示「页面」的功能与使用技巧&#xff0c;让小伙伴们大呼过瘾&#xff01;好玩、好用、好看的「页面」&#xff0c;到底有哪些亮点&…

《C语言深度解剖》.pdf

&#x1f407; &#x1f525;博客主页&#xff1a; 云曦 &#x1f4cb;系列专栏&#xff1a;深入理解C语言 &#x1f4a8;吾生也有涯&#xff0c;而知也无涯 &#x1f49b; 感谢大家&#x1f44d;点赞 &#x1f60b;关注&#x1f4dd;评论 C语言深度解剖.pdf 提取码:yunx