知到深度学习之瑞士军刀-pytorch入门课后答案(知到2023年完整答案)
62 min read知到深度学习之瑞士军刀-pytorch入门课后答案(知到2023年完整答案)
1、知到之瑞知到整答多选题:
已知某函数的深度士军参数为35.8,执行后结果为35,学习可能是刀p答案以下函数中的()。
选项:
A:abs
B:round
C:floor
D:int
答案:【floor;
int】
2、入门单选题:
以下表达式中,课后()的年完运算结果是False。
选项:
A:(10is11)==0
B:3<4and7<5or9>10
C:24!=32
D:’abc’<’ABC’
答案:【’abc’<’ABC’】
3、知到之瑞知到整答单选题:
在以下Python循环中,深度士军foriinrange(1,学习3):foriinrange(2,5):print(i*j)语句print(i*j)共执行了()次。
选项:
A:2
B:5
C:6
D:3
答案:【6】
4、刀p答案单选题:
在Python中,入门对于函数中return语句的课后理解,错误的年完是()。
选项:
A:一定要有return语句
B:return可以带返回参数
C:return可以不带返回参数
D:可以有多条return语句,知到之瑞知到整答但只执行一条
答案:【一定要有return语句】
5、判断题:
一个直接或间接地调用自身的算法称为递归,它有两个条件,一个是要直接或间接地调用自身,另一个是必须有出口。
选项:
A:错
B:对
答案:【对】
6、单选题:
关于递归函数的描述,以下选项中正确的是()。
选项:
A:包含一个循环结构
B:函数名称作为返回值
C:函数内部包含对本函数的再次调用
D:函数比较复杂
答案:【函数内部包含对本函数的再次调用】
7、单选题:
关于形参和实参的描述,以下选项中正确的是()。
选项:
A:参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参
B:程序在调用时,将实参复制给函数的形参
C:程序在调用时,将形参复制给函数的实参
D:函数定义中参数列表里面的参数是实际参数,简称实参
答案:【程序在调用时,将实参复制给函数的形参】
8、单选题:
关于return语句,以下选项中描述正确的是()。
选项:
A:函数中最多只有一个return语句
B:return只能返回一个值
C:函数必须有一个return语句
D:函数可以没有return语句
答案:【函数可以没有return语句】
9、单选题:
下面代码的运行结果是()。deffunc(num):num+=1a=10func(a)print(a)
选项:
A:10
B:11
C:int
D:出错
答案:【10】
10、单选题:
下面代码的输出结果是()。deffunc(a,b):a*=breturnas=func(5,2)print(s)
选项:
A:10
B:12
C:20
D:1
答案:【10】
1、判断题:
ndarray.shape返回一个元祖,表示数组在各个方向上的长度
选项:
A:错
B:对
答案:【对】
2、判断题:
empty()函数生成的数组完全是随机的
选项:
A:错
B:对
答案:【对】
3、判断题:
b[1][1]是指数组中第一行第一列的元素值
选项:
A:错
B:对
答案:【错】
4、单选题:
numpy提供了rand()函数用于生成元素()区间上均匀分布的数组
选项:
A:以上都不是
B:(0,1)
C:[0,1]
D:[0,1)
答案:【[0,1)】
5、多选题:
Python中的数据类型包括
选项:
A:浮点型
B:整型
C:字符型
D:布尔型
答案:【浮点型;
整型;
字符型;
布尔型】
6、判断题:
列表用()标识。
选项:
A:对
B:错
答案:【错】
7、判断题:
python2、python3都默认支持默认支持中文。
选项:
A:错
B:对
答案:【错】
8、判断题:
b=np.arange(0,20,2)查找索引号为2的数据,取出数组中元素4。
选项:
A:错
B:对
答案:【对】
9、判断题:
b[1:8:2]=1,数组输出0,1,4,1,8,1,12,1,16,18
选项:
A:对
B:错
答案:【对】
10、判断题:
flatten()方法就把X转换成一维数组返回一个一维的数组,作用的对象可以是列表。
选项:
A:错
B:对
答案:【对】
智慧树深度学习之瑞士军刀-pytorch入门
近年来,随着深度学习技术的发展,越来越多的人开始关注深度学习。而深度学习的底层框架就是神经网络,它已经成为许多人学习深度学习的必备技能。在众多的深度学习框架中,Pytorch可以说是最热门的之一。Pytorch是一个开源的机器学习库,它基于Python语言,专门针对深度学习的开发。它的设计思想主要是简单、快速和具有延展性。
Pytorch的优点
Pytorch最大的优点是易于使用。它的文档简明扼要,代码精简,易于上手,并且支持动态计算图,让开发者更加高效和灵活地使用。此外,Pytorch的GPU加速也非常快,还支持分布式处理,可以充分利用硬件设施提高深度学习的速度。
另外,Pytorch还可以和Numpy相互转换,这让开发者在使用Pytorch时可以轻松地进行数学运算,并且在数据预处理时可以利用Numpy的优势。此外,Pytorch的API设计非常简单、方便,让开发者可以更加便捷地使用。最后,Pytorch的社区非常活跃,有大量的开发者在为Pytorch做贡献,使其变得更加完善和强大。
Pytorch的安装
在开始使用Pytorch之前,我们需要先进行安装。Pytorch的安装非常简单,可以通过以下方式安装:
- 安装Anaconda或者Miniconda,这是一款Python的科学计算和数据分析工具。
- 打开Anaconda Prompt或者命令行终端,输入以下命令:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
如果你已经安装了NVIDIA GPU驱动,可以使用以下命令安装Pytorch:conda install pytorch torchvision torchaudio cudatoolkit=
其中,-c pytorch 代表你的CUDA版本号,例如10.2。如果你不知道你的CUDA版本号,可以使用以下命令查看: nvidia-smi
Pytorch的基本概念
在使用Pytorch之前,我们需要了解一些基本概念。
张量(Tensor)
张量是Pytorch中的基本数据结构,它可以理解为一个多维数组。Pytorch中的张量和Numpy中的数组类似,可以支持各种数学运算。
我们可以通过以下代码创建一个2x3的张量:
import torchx = torch.tensor([[1, 2, 3], [4, 5, 6]])print(x)
输出结果为:
tensor([[1, 2, 3], [4, 5, 6]])
自动求导(Autograd)
Pytorch中的自动求导是其最大的特点之一。自动求导可以让我们在使用Pytorch进行深度学习时不需要手动计算导数,Pytorch会自动帮我们计算。
我们可以通过以下代码创建一个张量,并对其进行自动求导:
import torchx = torch.tensor(3.0, requires_grad=True)y1 = x + 1y2 = 2 * xloss = (y1 - y2) ** 2print(loss)loss.backward()print(x.grad)
输出结果为:
tensor(1., grad_fn=)tensor(5.)
在上面的代码中,我们首先创建了一个张量x,并设置了requires_grad=True,这表示我们需要对x进行自动求导。然后我们定义了两个新的张量y1和y2,然后计算了一个loss函数。最后我们调用了loss.backward(),Pytorch会自动帮我们计算loss对x的导数,并将结果保存在x.grad中。
模型(Model)
在Pytorch中,我们可以使用模型来构建我们的神经网络。模型是由多个层(Layer)组成的,每个层可以看作是对数据的一次变换。我们可以通过继承nn.Module来创建我们的模型。
以下是一个简单的线性模型的例子:
import torch.nn as nnclass LinearModel(nn.Module): def __init__(self, in_features, out_features): super(LinearModel, self).__init__() self.linear = nn.Linear(in_features, out_features) def forward(self, x): out = self.linear(x) return out
在上面的代码中,我们创建了一个名为LinearModel的类,并继承了nn.Module。我们在构造函数中定义了一个线性层(nn.Linear),并将其保存在self.linear中。在forward方法中,我们对输入进行一次线性变换,并返回结果。
Pytorch的示例
以下是一个使用Pytorch进行MNIST手写数字识别的示例:
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms# 定义超参数batch_size = 64learning_rate = 0.01num_epoches = 20# 定义数据预处理transform = transforms.Compose([ transforms.ToTensor(), # 转换成Tensor格式 transforms.Normalize((0.1307, ), (0.3081, )) # 归一化])# 加载数据集train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=batch_size, shuffle=True)test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=batch_size, shuffle=True)# 定义模型class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.pooling = nn.MaxPool2d(2) self.fc = nn.Linear(320, 10) def forward(self, x): x = self.conv1(x) x = nn.functional.relu(x) x = self.pooling(x) x = self.conv2(x) x = nn.functional.relu(x) x = self.pooling(x) x = x.view(-1, 320) x = self.fc(x) x = nn.functional.softmax(x, dim=1) return x# 创建模型model = Net()# 定义损失函数和优化器criterion = nn.CrossEntropyLoss()optimizer = optim.SGD(model.parameters(), lr=learning_rate)# 开始训练for epoch in range(num_epoches): for i, (images, labels) in enumerate(train_loader): # 将数据拷贝到GPU images = images.cuda() labels = labels.cuda() # 前向传播 outputs = model(images) loss = criterion(outputs, labels) # 反向传播 optimizer.zero_grad() loss.backward() optimizer.step() if (i+1) % 100 == 0: print(\Epoch [{ }/{ }], Step [{ }/{ }], Loss: { :.4f}\ .format(epoch+1, num_epoches, i+1, len(train_loader), loss.item()))# 评估模型model.eval()with torch.no_grad(): correct = 0 total = 0 for images, labels in test_loader: # 将数据拷贝到GPU images = images.cuda() labels = labels.cuda() # 前向传播 outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the test images: { } %'.format(100 * correct / total))
在上面的代码中,我们首先定义了超参数,然后对数据进行了预处理。接着我们创建了一个卷积神经网络模型,并定义了损失函数和优化器。最后我们开始训练模型,使用GPU对数据进行处理,进行前向传播和反向传播,并在每个epoch结束后计算损失。最后我们评估模型的性能,计算模型在测试集上的准确率。
结语
本文介绍了Pytorch的基本概念和优点,并通过一个MNIST手写数字识别的示例演示了如何使用Pytorch进行深度学习。Pytorch非常强大和易于使用,建议深度学习爱好者们学习使用Pytorch,它将成为您深度学习的绝佳工具。