5pytorch实现线性回归
使用随机梯度下降 00:02:18.384
00:03:07.590 上节课的例子 因为梯度不会自动清零,为了使这次的梯度不影响下次的梯度,进行手工清零
线性回归就是恨简单的神经网络
00:06:32.614
训练步骤: 1. 前馈:算损失 2. 反馈:算梯度 3. 更新:使用梯度下降算法更新权重 00:06:33.097
00:06:50.802 要使用mini-batch
要一次性将ŷ求出来 所以需要使用矩阵运算
这里运用numpy的广播方式 00:09:36.616
就是矩阵扩充
00:10:14.863
00:11:06.105
w应该是3x3
00:12:01.227
00:12:13.883
实际上也就是向量化00:12:48.104
00:12:53.501
00:13:20.043
00:14:06.039
potrch中计算导数不再是重点因为00:13:52.605
有函数会自动计算导数
重点在于构造计算图00:14:28.914
00:14:57.107
这个被称为一个线性单元
...
4back propagation(反向传播)
00:01:49.339
00:02:18.624 注意这里时对损失进行求导,而不是对ŷ 00:02:33.467
00:03:04.905
image.png
第一层00:03:49.205
隐层h1第一层,是6维的 x是5维的 隐层h2 7维
写解析式太麻烦了
面对这样的复杂网络 把网络看成图 再图上进行传播梯度 基于链式法则 00:05:33.953
两层神经网络 00:06:52.853
这个转置符号无所谓 x的维数为N 00:07:26.884 00:08:01.980
00:08:29.528
h1的维数为m
b1是m维 00:08:58.784
00:09:27.210
全链接神经网络的第一层
下面是第二层 00:09:52.605
00:11:58.074
把两层变成1层,不管多少层,线性变换,都可以变成1层。
为了提高模型的复杂程度 00:12:34.502
添加一个非线性的函数,用于提高复杂程度 nonliner 00:13:14.804
00:13:55.471
链式求导法则...
6逻辑斯蒂回归
mnist数据集 00:01:43.327
手写数据的数据集
10个分类 00:02:24.593
判断y属于集合中的哪一个,这个叫做分类问题 00:06:02.081
表示他属于某一个类的概率,选择最大的
00:06:54.719
torchvison包含了一些典型的训练集 train=1-> train train=0 ->test
00:09:23.751
00:10:34.118
y的值维0 或1 这个叫做二分类问题
00:13:38.275
00:14:36.865
00:16:18.710
00:16:31.844
00:17:54.518
左图被称为饱和函数 00:18:19.386
00:19:19.394
将ŷ带入σ(x) 就可以将ŷ 的范围限制在(0,1)
00:20:49.142 sigmid函数的条件: 1. 函数值有极限 2. 单调增函数 3. 饱和函数 logistic是sigmid中最典型的函数,所以约定俗成就用logistic代替sigmid,但实际上sigmid还有很...
9多分类问题
使用softmax 00:01:46.755 00:01:58.457
十个分类神经网络应该如何设计
00:03:21.365 希望的要求: 输出之间竞争性 输出就是一个分布 1. 概率大于0 2. 概率求和为1 00:08:00.963
00:09:30.429 00:10:29.210
求和之后结果为100:12:58.619
00:13:42.719
00:14:09.852
00:14:49.264
00:14:59.977 交叉熵 00:18:14.365
00:19:17.457
00:19:36.942 00:20:50.262
00:21:47.606 00:22:31.144
最后一层是不需要手动进行非线性激活的,因为交叉熵损失会直接激活
00:24:38.539 00:24:21.657 2表示这个第二个元素最大 0表示第0个元素最大 1表示第一个元素最大
y_pred和预测的比较拟合,所以第一个预测算出来的损失会比较小 00:26:14.653
00:26:40.399 思考交叉熵和nl...
8加载数据集
前情提要: 因为有鞍点的存在,可能会导致深度学习在循环中共,无法继续往梯度下降的方向进行。 所以我们选择了随机梯度下降算法,而不是求平均loss的梯度下降算法。 我的理解就是使用不确定性的好来对抗确定性的差
00:04:34.963
把所有样本进行了前馈,和反向传播 就是一轮epoch 00:04:45.488 每次训练中所用的样本数量 这里没有上上上图中的for i in range 所以这里就是所有的数据都进行随机梯度下降计算
00:05:09.337 iteration(这块理解比较抽象) batch分了多少个 比如有1000个数据 100是batch-size 经过了10次的迭代,以100 batch-size的方式实现了1000个数据训练
shuffle 打乱顺序 00:07:09.352 00:07:53.784 00:08:41.339
00:09:51.557 00:10:05.801
用来加载数据,可以实例化一个dataloader
dataset是一个抽象类,不能实例化
00:10:45.689
getitem是实例化之...
7处理多维输入
输入有多个特征 每一行被叫做一个样本 00:01:22.739
meiyili
每一列被称为特征
excel常用空格 tab ,进行分割
00:10:22.816
00:10:06.374
00:12:37.613
00:13:38.352
00:14:24.317
一组一组的运算转换成矩阵运算(向量化的运算) 为什么要变换: 因为可以并行计算,这个样利用cpu或者gpu的并行计算能力 00:15:14.284
上图是上节课的 可以用于与这节课的图片进行对比
把多层logist回归相连就可以构建多层神将网路
00:17:12.583
00:17:28.402 这里列的数量对应特征00:17:50.766
00:18:23.748
这样可以再接一层,让2维的再降到1维
00:20:31.314
00:21:21.153
我们的目标是8d->1d的非线性变换函数 σ函数被叫做激活函数 00:23:26.486 可以维度一直下降 也可以维度一直上升
00:24:23.852
中间的隐层越多,学习能力越强
如果...
1,2pytorch环境安装
基于anaconda 1安装anaconda 2安装python环境 3安装pytorch 4测试pytorch环境 1234567pythonimport torch#不报错表示安装成功torch.cuda.is_available()true#输出表示可以使用gpu
可能会遇到的问题: 在使用代理的情况下 直接使用官网的命令无法安装, 可以查看当前cmd是否开启了代理 如果没有配置 手动配置 注意这里pip是否走的是系统代理
环境配置中出现的问题
安装jupytorch的时候出现的问题 Jupyter notebook报错:No module named ‘jupyter_server.contents‘_no module named jupyter-CSDN博客 运行jupyter notebook的时候 出现没有jupyter_server的报错 尝试了网址中的方法 然后在头文件中引入了jupyter_server
3两大法宝
00:02:15.884
00:04:01.915
image.png
这个是dir(torch.cuda)的目录 这两个下面的目录就不一样了, aval下面有双下滑线 这是一种规范,表示这个变量不可以被篡改
help主要针对于函数 这里的available()表示为函数
返回一个bool类型的变量 表示当前cuda可用
5数据加载
00:02:09.538
dataset用于将数据进行标记,标记label 00:02:52.896 dataloader为网络提供不同的数据形式 00:04:13.403
dateset需要考虑,主要实现以下功能 - 如何获取每一个数据以及label - 告诉我们总共有多少数据
00:05:51.702 00:05:48.542
数据集分为训练数据集和测试数据集
第二种数据集00:07:12.051
这里面还有标注的label
或者直接把label直接标注在图片上 配置终端代理前
配置终端代理后,网速还是很感人 12set HTTP_PROXY=http://127.0.0.1:7890set HTTPS_PROXY=http://127.0.0.1:7890
nnd还是失败了 一样的报错还是,加载超时
image.png
nnd网络抽风
要测试您的代理配置是否成功,有几种方法可以查看您是否能够通过代理访问外部网络。以下是一些常用的测试方法:
方法 1: 使用 curl 命令
如果您的系统上安装了 curl,您可以在命令提示符中...