2023.5.5 《动手学深度学习》第3、4章

MoiSheldon / 2023-05-06 / 原文

今天继续学习《动手学习深度学习》第3章:线性神经网络、第4章:多层感知机,今天学到的内容主要有这两章的概念,另外,完成了Kaggle房价预测的代码复现(Kaggle_HousePricePrediction.ipynb)。

一、理论部分:

1、概念解释:
  • 超参数:可以调整但不在训练过程中更新的参数称为超参数
2、DL操作
  • 数据预处理之特征归一化(减均值后除方差):例如有100个房价预测数据,每个数据的特征包括房屋面积、房间数量等。特征归一化是针对各个特征做的,计算100个样本的房屋面积的均值和方差,然后把100个原数据用均值和方差做归一化。对其他特征也是类似的。
    为什么要做特征归一化?
    把特征放在一个共同的尺度上;其次,我们不知道哪些特征是相关的,所以我们不想让惩罚分配给一个特征的系数比分配给其他特征的系数更大。

二、模块和函数

1、pandas 模块
  • pandas.concat
    连接两数据,比如 pandas DataFrame,例子,pd.concat((train_data, test_data))连接两数据集,默认垂直连接(axis=0)
  • pandas.get_dummies
    将分量按内容生成新的列索引名称,例子见pandas.get_dummies示例。
2、Pytorch 函数

三、涨知识

  • 三重引号:jupyter notebook中的三重引号("""~"""),用于添加多行注释;或者给函数添加说明,使用 help() 后显示的就是三重引号之间的字符串内容。
  • ipynb文件中定义的函数如何被其它文件引用:.ipynb文件的左上角 File-Download as 选择 .py,可将 .ipynb 文件转为 .py 文件,此时可以在其他 .ipynb 和 .py 中引入转化的 .py,即可使用其中定义的函数。如:plot_func.ipynb中有函数 plot,转为plot_func.py后,在其他 。ipynb 文件中import plot_funcplot_func.plot即可使用 plot 函数。
  • assert 函数:用法是assert condition, error_message,如果条件为 True,无反应,如果条件为 False,产生 AssertionError,内容为 error_message。例如,assert x == 5, 'x should be eaqul to 5'
  • L2范数和L1范数的选取原则:L2范数对权重向量的⼤分量施加了巨⼤的惩罚,使得学习算法偏向于在⼤量特征上均匀分布权重的模型。相⽐之下,L1惩罚会导致模型将权重集中在⼀⼩部分特征上,⽽将其他权重清除为零,这称为特征选择(feature selection),这可能是其他场景下需要的。
  • lambda 语句:无需def创建函数,通常用于内容较短的函数,用法为lambda arguments: expression,arguments 是 lambda 函数的输入参数,expression 是函数的内容。例如,sum = lambda x, y: x + yresult = sum(3, 4)
  • 函数参数前加*:作用是 unpack a sequence or iterable object such as a list or tuple and pass its elements as separate arguments to a function。例如dataset = data.TensorDataset(*data_arrays),星号的作用是把 data_arrays 中的每个张量拆开分别送入函数,如果没有星号,则将 data_arrays 视为整体送入函数。