Anaconda安装及入门教程
安装Jetbrains Toolbox,然后在Toolbox中找到DataSpell点击安装
打开DataSpell后,在设置中找到插件,然后在市场中搜索Chinese,安装中文语言包
新建一个工作区目录,比如我新建了一个叫Lab1的工作区目录
右键新建的工作区目录,如图所示新建Python文件,就可以写代码了
代码写好后,右键自己的代码空白处,点击“在控制台中执行单元”
点击这个眼镜图标,就能看到自己代码中的变量了
默认 UTF-8 编码
friends = ['zw', 'ld', 'fy', 'yy']
for i in friends:
print('hello! ' + i)
print('Done')
help(object) 或者在 help 窗口输入所需了解的对象
item_one = 1
item_two = 2
Total = item_one + \
item_two
# 问好
friends = ['zw', 'ld', 'fy', 'yy']
for i in friends:
print('hello! ' + i)
print('Done')
# 求和
num = 1
sum_num = 0
while num < 11:
print(num)
sum_num += num
num += 1
print("sum_num = ", sum_num)
# 判断奇偶数
n = input("请输入一个整数:")
n = int(n)
if n % 2 == 0:
print("这是一个偶数")
else:
print("这是一个奇数")
梯度下降法在统计学习还是深度学习中都得到了广泛的应用,我们通过构建合理的模型,将模型预测的输出和正确结果进行误差计算,通过优化模型参数使得输出的结果和正确结果的误差最小,我们往往会把误差损失函数构建成一个凸函数,这样使得参数的求解比较单一化,就像一元二次函数只有一个波峰或者波谷,那么求解答案就是寻找这个波峰或者波谷,如果把误差损失函数表达成类似sinx的函数,存在多个波峰波谷,那么求解的答案就会有多个,显然求解的众多个答案并非都是最优解。
我们现在来解释梯度下降法,以一个一元二次函数举例。
y = x 2 − 10 y=x^2-10 y=x2−10
画图如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10, 20, 0.01)
y = x * x - 10 * x
plt.xlabel('x')
plt.ylabel('y')
plt.plot(x, y)
plt.show()
假设这个表示我们模型的损失函数,现在我们的波谷,就是我们模型误差最小的参数点,此时认为x就是我们未知的参数,如何寻找x取值为多少才能达到这个波谷呢?
这就需要用到梯度下降法。
我们先对关于x的函数y求关于x的导函数,得到为
d y = 2 x − 10 dy=2x-10 dy=2x−10
于是我们初始化x为一个随机值a
x = a x=a x=a
然后不断迭代下面的过程
x 1 = x 0 − d y = x 0 − l r ∗ ( − 10 + 2 ∗ x 0 ) x1=x0-dy=x0-lr*(-10+2*x0) x1=x0−dy=x0−lr∗(−10+2∗x0)
x 0 = x 1 x0=x1 x0=x1
上面的lr为学习率,也叫步长,意思为每次x更新变动的数据大小。因为这是一个不断迭代的过程,我们有两种方法让这个迭代结束:
现在解释下上面的迭代函数为啥可以找到这个波谷的近似位置,原因是:
先利用我们的一元二次函数顶点公式求解出顶点的x=5,现在利用梯度下降法去找一下这个结果是否和我们的标准结果一致。
import random
step = 10000 # 设置迭代次数为10000
x0 = random.randint(-10, 10) # 随机初始化一个数值
lr = 0.001 # 设置学习率为0.001
for i in range(step):
x1 = x0 - lr * (-10 + 2 * x0) # 梯度下降迭代
x0 = x1
print('梯度下降法求解结果:', x0)