实验代码案例来自于此书:https://zh-v2.d2l.ai/
一、实验环境
Windows 11、VS Code、Python 3.9
二、实验内容
1.完成本地开发平台的搭建
①安装Anaconda
安装好后在菜单栏“开始”中显示如图:
打开后:
②安装Visual Studio Code及Python扩展
需要安装的扩展插件如下:
③测试Jupyter notebook
能够正常运行代码:
④安装OpenCV
输入测试程序:
导入包后能够成功显示图片:
(这里我当时做的有点问题,如果路径正确的话应该能正常显示图片)
⑤安装PyTorch
检测Pytorch是否安装成功(对应CPU版本的测试代码):
2.张量的基本操作
①导入torch
②使用 arange 创建一个行向量 x(张量 x 中有 12 个元素)
③通过张量的shape属性来访问张量(沿每个轴的长度)的形状
④获得张量中元素的总数,即形状的所有元素乘积
3.矩阵的基本操作
①改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数。
例:把张量x从形状为(12,)的行向量转换为形状为(3,4)的矩阵。
②使用自定义数字来初始化矩阵。
例:创建一个形状为(2,3,4)的张量,其中所有元素都设置为0。
例:创建一个形状为(2,3,4)的张量,其中所有元素都设置为1。
③通过从某个特定的概率分布中随机采样来得到张量中每个元素的值
例:创建一个形状为(3,4)的张量。 其中的每个元素都从均值为0、标准差为1的标准高斯分布(正态分布)中随机采样。
④通过提供包含数值的Python列表(或嵌套列表),来为所需张量中的每个元素赋予确定值
4.广播机制的应用
①首先,通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状。 其次,对生成的数组执行按元素操作。
例:沿着数组中长度为1的轴进行广播。
②将两个矩阵广播为一个更大的矩阵,如下所示:矩阵a将复制列, 矩阵b将复制行,然后再按元素相加。
5.数据预处理
读取数据集
①创建一个人工数据集,将数据集按行写入CSV文件中。
②从创建的CSV文件中加载原始数据集,导入pandas包并调用read_csv函数。
该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷子类型(“Alley”)和房屋价格(“Price”)。
处理缺失值(插值法)
①通过位置索引iloc,将data分成inputs和outputs,其中前者为data的前两列,而后者为data的最后一列。 对于inputs中缺少的数值,用同一列的均值替换“NaN”项。
②对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。 由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。
转换为张量格式
现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式。
三、实验小结
在读取数据集时,遇到一个错误:
提示‘data_file’未被定义。
一开始没搞清楚原因,因为之前所执行的代码都能够正常运行。后来发现是因为重启了vscode,需要把以下这部分代码重新运行一遍才行…
都运行之后就不会报错了: