2023.5.4 《动手学深度学习》第1、2章

MoiSheldon / 2023-05-04 / 原文

今天开始学习李沐的《动手学深度学习》,开贴记录一下。
今天学到的知识点包括:
一、理论部分
1、有监督学习、无监督学习和半监督学习;

二、Python和Pytorch模块、函数
1、os 模块
2、pandas 模块
三、涨知识

一、理论部分

1、有监督学习、无监督学习和半监督学习

  • 有监督学习:每一个训练样本均包含‘特征-标签’对,目标是生成一个模型,能够将任何输入特征映射到标签(即预测)。 一个比喻:“监督学习”模型像⼀个打⼯仔,有⼀份极其专业的⼯作和⼀位极其平庸的⽼板。⽼板站在⾝后,准确地告诉模型在每种情况下应该做什么,直到模型学会从情况到⾏动的映射。取悦这位⽼板很容易,只需尽快识别出模式并模仿他们的行为即可
  • 无监督学习:样本不包含标签。对应上述比喻,此时的‘工作’没有明确的目标,需要员工‘自发’地去学习。举例:聚类(clustering)、主成分分析(PCA)、生成对抗网络(GAN)。
  • 半监督学习:介于前两者之间,数据中的部分样本有标签,但大部分是不含标签的。半监督学习的目的是,利用含标签的数据来提升对不含标签数据的学习效果(use the information from the labeled data to improve the learning of the model on the unlabeled data)。

一个问题:怎么利用不含标签的数据?
实际上,不含标签的数据也是含有信息的,常有下列几种方式来利用不含标签的数据。
1、无监督预训练:用无标签数据先用自编码器、生成模型等无监督学习算法过一遍,学习其中的数据表征,然后用有标签的数据学习,进行微调。
2、自训练(self-training):先用少量的有标签数据训练模型,再用训练的模型预测无标签数据的标签,选取其中‘最有把握’的预测结果,这部分无标签数据就被视为有标签数据,用增加的这部分数据重新训练模型即可。

二、Python和Pytorch模块、函数

1、os 模块
  • os.path.join()
    生成符合当前操作系统的文件地址,例如os.path.join('..','data')输出..\dataos.path.join('data')输出data
  • os.makedirs(path, exist_ok=False)
    生成 path 指定的文件夹,包括中间路径内的文件夹。exist_ok 参数默认为 False,如果 path 指定的文件夹已经存在,会出现 FileExistsError 错误,如果设置为 True 则不报错。
2、pandas 模块
  • data = pandas.read_csv('data_file')
    读取名为 'data_file.csv' 的文件,data 的数据类型为 pandas.DataFrame.
  • pandas.DataFram.iloc()
    根据输入的参数对数据进行索引,如:df.iloc[:3]输出 df 的前3行,df.iloc[[0,2],[1,3]]输出 df 的前2行和第1、2列。
    -pandas.DataFrame.mean(axis=0)
    输出所选轴的平均值。
    -pandas.DataFrame.fillna(value=None, *, method=None, axis=None, inplace=False)
    使用指定的方法填充 df 中的 NA/NaN。
3、matplotlib模块
  • SVG(Scalable Vector Graphics),矢量图,存储的不是像素值,而是绘制图形的数学描述(mathematical descriptions of shapes and paths),缩放时会重新绘图,所以不会导致图像模糊。matplotlib存储时可以设置为:plt.savefig('plot.svg',format='svg').

三、涨知识

  • python 节省内存操作,使用Y = Y + X会使Y指向新的内存地址,而Y += X原地改变Y,可以减少内存开销。
  • print 函数输出指定小数点位数的浮点数,如print(f'pi={math.pi:.5f}'),表示展示的小数点位数是5,此处输出结果是3.14159.
  • jupyter notebook 查看函数功能的两种方式:help(torch.ones)torch.ones?