Pytorch的面试问题
参考:PyTorch 面试问题
(1)什么是 PyTorch?
PyTorch 是基于 Torch 库的计算机软件的一部分,它是 Python 的开源机器学习库。它是由 Facebook 人工智能研究小组开发的深度学习框架。它用于自然语言处理和计算机视觉等应用。
(2)PyTorch 的基本要素是什么?
PyTorch 中有以下元素是必不可少的:
- PyTorch 张量
- PyTorch NumPy
- 数学运算
- Autograd 模块
- 优化模块
- nn 模块
(3)什么是张量?
张量在 PyTorch 的深度学习中发挥着重要作用。简单来说,我们可以说,这个框架完全是基于张量的。张量被视为广义矩阵。它可以是 1D 张量(矢量)、2D 张量(矩阵)、3D 张量(立方体)或 4D 张量(立方体矢量)。
(4)什么是抽象级别?
抽象分为三个层次,如下所示:
- **张量:**张量是在 GPU 上运行的命令式 n 维数组。
- **变量:**它是计算图中的一个节点。这存储数据和梯度。
- **模块:**神经网络层将存储状态,否则可学习的权重。
(5)张量和矩阵是否相同?
我们不能说张量和矩阵是一样的。张量有一些性质,我们可以说两者有一些相似之处,例如我们可以在张量中执行矩阵的所有数学运算。
张量是存在于结构中并与其他数学实体相互作用的数学实体。如果我们以规则的方式变换结构中的其他实体,那么张量将遵循相关的变换规则。张量的这种动态特性使其与矩阵不同。
(6)MSELoss、CTCLoss、BCELoss函数有什么用?
MSE 代表 Mean Squared Error,它用于创建衡量输入 x 和目标 y 中每个元素之间的均方误差的标准。CTCLoss代表Connectionist Temporal Classification Loss,用于计算连续时间序列和目标序列之间的损失。BCELoss(Binary Cross Entropy) 用于创建衡量目标和输出之间的二元交叉熵的标准。
(7)Conv1d、Conv2d 和 Conv3d 有什么区别?
他们三个没有太大的区别。Conv1d 和 Conv2D 用于应用 1D 和 2D 卷积。Conv3D 用于在由多个输入平面组成的输入信号上应用 3D 卷积。
(8)反向传播是什么?
计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。
将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。