重新拾起之前李沐大神的DL课,每天一课,笔记简单记录于此。为了防止自己过了几个月又忘记把文件放哪了,做了啥设置,所以这次要好好记下来。
目标:找到之前学习DL的虚拟环境和之前写代码的文件夹。今天至少完成4/76,有空的话阅读动手学书籍,并回顾李宏毅老师的课。感觉不会有空了,先一点点拾起来吧~
首先打开命令行,输入:conda env list,查看已经存在的环境:base, DL, weblx, wsl, wsldl。肯定是最后一个,激活环境:activate wsldl, 接下来是之前的代码存放的位置。课件是在:E:\demo\AI\demo\DL\V2,在命令行切换路径:E:\demo\AI\demo,然后打开jupyter:jupyter notebook。
ps: 李宏毅老师的课,我将代码直接写在了课件的数据文件夹中:E:\demo\AI\demo\DL\DL李宏毅课程\数据\hw1
之前练习代码再some_tips文件夹中:E:\demo\AI\demo\DL\some_tips
学习记录:
1、访问元素时,[行,列],":"表示to,后面不加数字默认访问所有,比如1:表示从1列/行开始到最后一个;::3表示从第一个到最后一个,每隔3个访问一次。
2、常见的标准运算符是按元素运算。
3、因为存在广播机制,每次使用张量都要明确它的维度和形状,维度相同形状不同会触发广播机制,某些行/列会进行复制,使得可以进行按元素计算。
4、如果矩阵特别大的话,需要考虑内存。如果后续计算不会再次用到原来的数字,可以直接进行改写,改写不会改变地址。x[:] = x+y
5、任何数据类型都能非常容易的转换成numpy,也可以转换回torch的tensor:
'A = x.numpy()'
'B = torch.tensor(A)'
6、对缺失数据的处理:
- 可以直接删除
- 使用均值替代
- 根据数据特征,观察其分布、是否是偏的,选择相关统计量
- 使用回归的方法建模进行添加
7、将分类变量转换为虚拟变量:pandas.get_dummies()
作用:将分类变量转换成0/1的形式,如果有两种类型会在名字之间用_连接,下面将na作为新的项
'inputs = pd.get_dummies(inputs, dummy_na=True)'
8、数值类型可以直接转换成tensor类型,默认是float64,考虑计算速度最好使用float32
'x, y = torch.tensor(inputs.values), torch.tensor(outputs.values)'
9、直接reshape,然后查看其地址,发现地址已经不一样了(使用id进行查看,有细微差别),如果将b重新赋值,a里的值也会发生改变,所以这两个地址应该是一样的。
'''
a = torch.arange(12)
b = a.reshape(3, 4)
print('a:', id(a))
print('b:', id(b))
b[:] = 1
a
'''
10、permute(dims)函数,将tensor进行维度转换。