TensorFlow 的面试问题
(1)什么是TensorFlow?
TensorFlow是一个基于Python的库, 用于创建机器学习应用程序。它是执行复杂数学的低级工具包。它为用户提供了可定制性选项, 以构建实验性学习体系结构。它还可以帮助用户与他们合作, 并将他们转变为正在运行的软件。它最初由Google Brain团队的研究人员和工程师创建, 并于2015年成为开源。TensorFlow由两个词Tensor和Flow组成;张量被称为多维数组的数据表示, 流意味着对张量执行的一系列操作。
(2)你对张量了解多少?
张量是计算机程序中使用的n维数组的矢量或矩阵的一般化。它代表数字形式的大量数据。互联网上没有其他可用的其他n维数组库, 例如Numpy, 但TensorFlow与那些库不同。它提供了创建张量函数和自动计算导数的方法。
(3)TensorFlow有什么优势?
TensorFlow的一些主要优点如下:
- 可以轻松地在CPU和GPU上对其进行训练, 以进行分布式计算。
- 它具有自动区分功能。
- 它具有平台灵活性。
- 它易于定制和开源。
- 它对线程, 异步计算和队列具有高级支持。
(4)将数据加载到TensorFlow中的几种选择?
在训练机器学习算法之前, 将数据加载到TensorFlow中是第一步。有两种加载数据的方式:
- 将数据加载到内存中
这是最简单的方法。所有数据都作为单个阵列加载到内存中。可以编写与TensorFlow无关的Python代码。 - Tensorflow数据管道
TensorFlow具有内置的API, 可帮助轻松加载数据, 执行操作以及提供机器学习算法。存在大量数据集时, 通常使用此方法。
(5)描述大多数TensorFlow算法的通用步骤吗?
- 通过占位符导入数据, 生成数据或设置数据管道。
- 通过计算图输入数据。
- 评估损失函数的输出。
- 使用反向传播来修改变量。
- 重复直到停止状态。
(6)过拟合的解决方法
数据集角度
增加样本量,数据集扩增
原有数据加随机噪声
重采样
特征角度
特征选择
特征降维
模型角度
降低模型复杂度
正则化 ,正则化正是通过在损失函数上添加额外的参数稀疏性惩罚项(正则项),来限制网络的稀疏性,以此约束网络的实际容量,从而防止模型出现过拟合。L1正则化是将权值的绝对值之和加入损失函数,使得权值中0值比重增大,因此得到的权值较为稀疏。L2正则化是将权重的平方之和加入损失函数,使得权值分布更加平均,所以权值较为平滑。
Dropout舍弃,在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,使得每次训练的网络结构多样。
训练角度
早停止,如在训练中多次迭代后发现模型性能没有显著提高就停止训练
交叉验证
(7)TensorFlow比PyTorch有什么不同?该如何选择?
从用户的体验的角度来评价区别:
TF比PyTorch支持更多的编码语言,比如c++、JavaScript和Swift。
PyTorch使用eager模式计算。所以我们可以在构建神经网络时逐行运行它,这使得调试更容易。而TF不能调试神经网络内部。
相对来说,PyTorch更能够在短时间内建立结果和方案更适合于计算机程序爱好者或者是小规模项目,包括研究人员。而TF则更适合在大范围内进行操作,尤其是对于跨台或者是在实现嵌入式部署的时候更具优势。
PyTorch 设计得更科学,不必像 TF 那样,还要在各种 API 之间做切换,操作便捷。代码可读性也更强。
当我们在上手一个项目时,可以了解下这两种框架中是否能找到我们需要的预训练模型,如BERT或DeepDream。同时,可能我们在GitHub上找模型的时候,可以关注下别人是用哪种框架进行模型构建的。并且有些时候,PyTorch和TensorFlow数据处理的库也不尽相同,你可以根据你自己的数据,来选择一个更方便的框架。特别科研中,复现论文的情况下,大部分的论文都是PyTorch实现的,就可以考虑沿用同样的框架。