📅  最后修改于: 2020-11-11 01:17:54             🧑  作者: Mango
下面列出了一些常见的PyTorch面试问题和答案。
PyTorch是基于Torch库的计算机软件的一部分,该库是针对Python的开源机器学习库。这是一个由Facebook人工智能研究小组开发的深度学习框架。它用于自然语言处理和计算机视觉等应用程序。
点击这里查看更多信息
PyTorch中必须包含以下要素:
张量在PyTorch的深度学习中起着重要作用。简单来说,我们可以说这个框架完全基于张量。张量被视为广义矩阵。它可以是1D张量(向量),2D张量(矩阵),3D张量(立方体)或4D张量(立方体向量)。
点击这里查看更多信息
共有三个抽象级别,如下所示:
我们不能说张量和矩阵是相同的。张量具有一些属性,通过它们我们可以说两者具有某些相似之处,例如我们可以执行张量矩阵的所有数学运算。
张量是生活在结构中并与其他数学实体相互作用的数学实体。如果我们以常规方式变换结构中的其他实体,则张量将遵循相关的变换规则。张量的这种动态特性使其不同于矩阵。
torch.from_numpy()是Torch的重要属性之一,它在张量编程中具有重要作用。它用于从numpy.ndarray创建张量。 ndarray和返回张量共享相同的内存。如果我们对返回的张量进行任何更改,那么它也会反映ndaaray。
Variable是一个用于包装张量的包。 autograd.variable是软件包的中心类。 torch.autograd提供了用于实现任意标量值函数的自动微分的类和函数。它需要对现有代码进行最少的更改。我们只需要声明张量,就应该使用require_grad = True关键字来为其计算梯度。
函数的导数是在“渐变”的帮助下计算的。通过四个简单的步骤,我们可以轻松计算出导数。
这些步骤如下:
线性回归是一种通过最小化距离来找到因变量和自变量之间的线性关系的技术或方法。它是一种有监督的机器学习方法,用于对订单离散类别进行分类。
点击这里查看更多信息
损失函数是用于机器学习的面包和黄油。理解和评估我们的算法对数据集建模的效果非常简单。如果我们的预测完全不正确,则该函数将输出较高的数字,否则将输出较低的数字。
点击这里查看更多信息
MSE代表均方误差,该均方根用于创建衡量输入x和目标y中每个元素之间均方误差的标准。 CTCLoss代表连接主义者的时间分类损失,用于计算连续时间序列和目标序列之间的损失。 BCELoss(二进制交叉熵)用于创建衡量目标和输出之间的二进制交叉熵的标准。
torch.nn为我们提供了更多的类和模块来实现和训练神经网络。 torch.nn.functional包含一些有用的函数,例如激活函数和卷积运算,我们可以使用它们。但是,这些不是完整的图层,因此,如果要定义任何种类的图层,都必须使用torch.nn。
均方误差告诉我们回归线与一组点的接近程度。均方误差是通过计算点到回归线之间的距离并进行平方来实现的。需要平方才能消除任何负号。
点击这里查看更多信息
感知器是单层神经网络,或者可以说神经网络是多层感知器。 Perceptron是二元分类器,用于监督学习中。人工神经网络中生物神经元的简单模型称为Perceptron。
点击这里查看更多信息
一个神经元是否应该被激活取决于激活函数。激活函数计算加权和,并进一步加上偏差以得出结果。神经网络基于感知器,因此,如果我们想了解神经网络的工作原理,则必须学习感知器的工作原理。
神经网络和深度神经网络都相似并且做同样的事情。 NN和DNN之间的区别在于,神经网络中只能有一个隐藏层,而在深度神经网络中,则有多个隐藏层。隐藏层在做出准确的预测中起着重要作用。
点击这里查看更多信息
Ann处理数字信息,并且在将问题引入ANN之前将其转换为数字值。这就是很难向网络显示问题的原因。
为了确定神经网络的输出,我们使用激活函数。它的主要任务是对结果值在0到1或-1到1等之间进行映射。激活函数基本上分为两种类型:
乙状结肠功能曲线看起来像S形,之所以我们偏爱乙状结肠而不是其他,是因为乙状结肠函数存在于0到1之间。这特别用于需要预测输出概率的模型。
“前馈”是一个过程,通过该过程我们可以接收输入以产生某种输出以进行某种预测。它是许多其他重要神经网络(例如卷积神经网络和深度神经网络)的核心。
在前馈神经网络中,网络中没有反馈回路或连接。这里只是一个输入层,一个隐藏层和一个输出层。
点击这里查看更多信息
他们三个之间没有太大区别。 Conv1d和Conv2D用于应用1D和2D卷积。 Conv3D用于对由多个输入平面组成的输入信号进行3D卷积。
“反向传播”是一组算法,用于计算误差函数的梯度。该算法可以写为神经网络的函数。这些算法是一组方法,用于遵循梯度下降方法(利用链规则)有效地训练人工神经网络。
点击这里查看更多信息
卷积神经网络是在神经网络中进行图像分类和图像识别的类别。人脸识别,场景标记,物体检测等是卷积神经网络被广泛使用的领域。 CNN将图像作为输入,将其分类并按特定类别(例如狗,猫,狮子,老虎等)进行处理。
点击这里查看更多信息
深度神经网络是一种具有多层的神经网络。 “深层”是指神经网络具有许多层,看上去深陷于网络中的各个层。卷积神经网络是另一种深度神经网络。卷积神经网络具有卷积层,该卷积层用于过滤器以将输入数据中的区域卷积为较小的区域,从而检测该区域内的重要或特定部分。卷积可以用于图像以及文本。
Pytorch具有以下优点:
S.No | PyTorch | TensorFlow |
---|---|---|
1. | It provides a lower level of APIs | It provides both high and low level of APIs |
2. | Its speed is fast | It has slower speed |
3. | Graph construction is very simple in PyTorch | Graph construction is not so simple as PyTorch |
4. | It includes everything imperatively and dynamically. | It has static and dynamic graphs as a combination. |
5. | It includes deployment highlight for mobile and embedded frameworks. | It works better for embedded frameworks. |
点击这里查看更多信息
这是一种使用反向传播原理的自治机器学习算法,其中目标值等于提供的输入。在内部,它具有一个隐藏层,用于管理用于表示输入的代码。
Autograd模块是PyTorch中使用的一种自动区分技术。当我们构建神经网络时,它会更强大。有一个记录器,它记录了我们执行的每个操作,然后将其回放以计算梯度。
Torch.optim是一个模块,可实现用于构建神经网络的各种优化算法。以下是Adam优化器的代码
Optimizer = torch.optim.Adam(mode1, parameters( ), lr=learning rate
PyTorch提供了torch.nn模块,以帮助我们创建和训练神经网络。我们将首先在MNIST数据集上训练基本神经网络,而无需使用这些模型的任何功能。 torch.nn为我们提供了更多的类和模块来实现和训练神经网络。
使用Conda:conda install pytorch cudatoolkit = 10.0 -c pytorch-nightly
使用pip:pip install torch -f https://download.pytorch.org/whl/nightly/cpu/torch.html
torch.cuda是一个软件包,增加了对CUDA张量类型的支持。 CUDA张量类型实现与CPU张量相同的函数,但利用GPU进行计算。
类型1错误为假正值,类型2错误为假负值。 I型错误表示发生了什么事情。 II型错误描述了什么是不正确的地方就没有错。
在深度学习工具中,PyTorch起着重要作用,它是机器学习的一个子集,其算法在人脑上起作用。我们偏爱PyTorch的原因如下:
每个torch.Tensor都有一个torch.device,torch.layout和torch.dtype。 torch.dtype定义数据类型,torch.device表示在其上分配了torch.Tensor的设备,torch.layout表示torch.Tensor的内存布局。
Anaconda是数百个软件包的集合,其中包括conda,numpy,scipy,ipython notebook等。 Miniconda是水蟒的较小替代品。
可以按照以下步骤检查GPU的使用情况:
MNIST数据集用于图像识别。它是一个包含各种手写数字的数据库。 MNIST数据集具有大量数据,这些数据通常用于证明深度神经网络的真正功能。
点击这里查看更多信息
它是彩色图像的集合,通常用于训练机器学习和计算机视觉算法。 CIFAR 10数据集包含50000个训练图像和10000个验证图像,因此可以将这些图像分类为10个不同的类别。
CIFAR 10数据集包含50000个训练图像和10000个验证图像,因此可以将这些图像分类为10个不同的类别。另一方面,CIFAR-100具有100个类别,每个类别包含600张图像。每个课程有100张测试图像和500张训练图像。
卷积层是卷积神经网络的第一层。这是从输入图像中提取要素的层。这是一个数学运算,需要两个输入,例如图像矩阵和内核或滤波器。
步幅是在输入矩阵上移动的像素数。当步幅等于1时,我们将滤镜一次移动到1个像素。
“填充是可以添加到图像边框的附加层。”它用于克服
池化层在图像的预处理中起着至关重要的作用。当图像太大时,池化层会减少参数数量。合并是从先前图层获得的图像的“缩小比例”。
最大池化是基于样本的离散过程,其主要目标是减小其维数,缩小输入表示的比例。并且允许对包含在分区中的子区域中的特征进行假设。
缩减将通过将输入划分为矩形池区域来通过平均池执行,并且将计算每个区域的平均值。
用于求和池或均值池的子区域将设置为与最大池相同,但不是使用max函数,而是使用求和或均值。
完全连接的层是一个层,其中来自其他层的输入将被平整为向量并发送。它将通过网络将输出转换为所需的类数。
Softmax函数是一个很棒的激活函数,它将数字(即逻辑数)转换为总和为1的概率。 Softmax函数输出一个向量,该向量表示潜在结果列表的概率分布。