Python深度学习常见问题

1.举例说明现实世界中的数据张量。

向量数据:2D 张量,形状为 (samples, features)。

时间序列数据或序列数据:3D 张量,形状为 (samples, timesteps, features)。

图像:4D 张量。

视频:5D 张量。

2、为什么要在训练集和测试集的基础上增加验证集?

在开发模型时参数调节过程也是在某个参数空间寻找良好的模型配置。如果只有训练集和测试集,基于模型在测试集上的性能来调节模型配置,会造成信息泄露,导致模型在测试集上过拟合。但是在完全不同的数据上应用模型时,效果不能确定。

3、简单描述一下什么是k折验证?

K 折验证(K-fold validation)将数据划分为大小相同的 K 个分区。对于每个分区 i,在剩余的 K-1 个分区上训练模型,然后在分区 i 上评估模型。最终分数等于 K 个分数的平均值。

4、模型训练中为什么要避免过拟合?简要说明降低过拟合的方法。

深度学习的目的是得到良好的泛化。泛化是指在训练好的模型在前所未见的数据上的性能好坏。但在训练数据上迭代一定次数之后,泛化不再提高,验证指标先是不变,然后开始变差,即模型开始过拟合。为了防止模型从训练数据中学到错误或无关紧要的模式要避免过拟合,提高泛化能力。
降低过拟合方法:减少网络大小;增加训练数据;添加权重正则化;添加dropout正则化等。

5、为什么在深度学习模型编译中需要损失函数?常用的损失函数有什么?

神经网络损失函数(loss function),也叫目标函数(objective function)。损失函数的输入是网络预测值与真实目标值,然后计算一个距离值,衡量该网络在这个示例上的效果好坏。损失函数可作为学习反馈的信号。
常见的损失函数
对于二分类问题,你可以使用二元交叉熵(binary crossentropy)损失函数;
对于多分类问题,可以用分类交叉熵(categorical crossentropy)损失函数;
对于回归问题,可以用均方误差(mean-squared error)损失函数;
对于序列学习问题,可以用联结主义时序分类(CTC,connectionist temporal classification)损失函数等。

6、为什么在深度学习模型建立中需要使用激活函数?常用的激活函数有什么?
为了得到更丰富的假设空间,从而充分利用多层表示的优势,需要添加非线性或激
活函数。
常用的激活函数
二分类问题 sigmoid
多分类、单标签问题 softmax
多分类、多标签问题 sigmoid
回归到任意值 无
回归到 0~1 范围内的值 sigmoid

7、为什么要使用 512 个样本组成的小批量进行训练?

深度学习模型通过对小批量数据进行迭代来训练,不仅可以保证深度学习模型可以在任意大小的数据集上进行训练而且减小了计算代价。

8、为什么要将训练集和测试集分开?

因为在模型训练时不应该将训练机器学习模型的同一批数据再用于测试模型!模型在训练数据上的表现很好,并不意味着它在前所未见的数据上也会表现得很好,而且优化模型的目的是模型在新数据上的性能。

9、神经网络的数据预处理的目的是什么?简要描述常用的数据预处理的方法。

数据预处理的目的是使原始数据更适于用神经网络处理。
数据处理方法包括向量化、标准化、处理缺失值和特征提取。

10、如何评估模型效果,简要列举常见的评估方法以及注意事项?

评估模型的重点是将数据划分为三个集合:训练集,验证集和测试集。。在训练数据上训练模型,在验证数据上评估模型。一旦找到了最佳参数,就在测试数据上最后测试一次。

常见模型的评估方法:简单的留出验证、K 折验证,以及带有打乱数据的重复 K 折验证。

注意事项:数据代表性,时间箭头,数据冗余

11、如何进行模型调节,使其达到最佳性能?
调节模型、训练、在验证数据上评估、再次调节模型,然后重复这一过程,直到模型达到最佳性能。可尝试的调节方法。
添加 dropout。
尝试不同的架构:增加或减少层数。
添加 L1 和 / 或 L2 正则化。
尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。
反复做特征工程:添加新特征或删除没有信息量的特征。(3个及以上满分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值