2021/2/23
ubuntu使用总结:
显卡使用情况查看:nvidia-smi
环境激活:conda activate base
环境退出:conda deactivate
手写体识别mnist
https://github.com/geektutu/tensorflow-tutorial-samples
存在问题导入数据集(踩坑):
https://github.com/legendjack/Handwritten-Numeral-Recognition_CNN
ubuntu 显卡驱动黑屏:
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
机器学习编码方式
One-hot编码(独热编码)
独热编码使用N位代表N种状态,任意时候只有其中一位有效。
采用独热编码的例子
numpy.argmax()可以取得最大值的下标
1 2 3 4 5 | 性别: [0, 1]代表女,[1, 0]代表男 数字0-9: [0,0,0,0,0,0,0,0,0,1]代表9,[0,1,0,0,0,0,0,0,0,0]代表1 |
损失函数(loss function)
损失函数评估网络模型的好坏,值越大,表示模型越差,值越小,表示模型越好。因为传入大量的训练集训练的目标,就是将损失函数的值降到最小。
- 差的平方和 sum((y - label)^2)
1 2 3 | [0, 0, 1] 与 [0.1, 0.3, 0.6]的差的平方和为 0.01 + 0.09 + 0.16 = 0.26 [0, 0, 1] 与 [0.2, 0.2, 0.6]的差的平方和为 0.04 + 0.04 + 0.16 = 0.24 [0, 0, 1] 与 [0.1, 0, 0.9]的差的平方和为 0.01 + 0.01 = 0.02 |
- 交叉熵 -sum(label * log(y))
1 2 3 4 | [0, 0, 1] 与 [0.1, 0.3, 0.6]的交叉熵为 -log(0.6) = 0.51 [0, 0, 1] 与 [0.2, 0.2, 0.6]的交叉熵为 -log(0.6) = 0.51 [0, 0, 1] 与 [0.1, 0, 0.9]的交叉熵为 -log(0.9) = 0.10 |
回归模型
我们可以将网络理解为一个函数,回归模型,其实是希望对这个函数进行拟合。
比如定义模型为 Y = X * w + b,对应的损失即
1 2 3 | loss = (Y - labal)^2 = -(X * w - b - label)^2 这里损失函数用方差计算,这个函数是关于w和b的二次函数,所以神经网络训练的目的是找到w和b,使得loss最小。 |
softmax激活函数
本文不展开讲解softmax激活函数。事实上,再计算交叉熵前的Y值是经过softmax后的,经过softmax后的Y,并不影响Y向量的每个位置的值之间的大小关系。大致有2个作用,一是放大效果,二是梯度下降时需要一个可导的函数。
1 2 3 4 5 6 | def softmax(x): import numpy as np return np.exp(x) / np.sum(np.exp(x), axis=0) softmax([4, 5, 10]) |
梯度下降法
解释:https://blog.csdn.net/qq_41800366/article/details/86583789