深度学习学习记录(二.线性模型)

本博客记录学习龙书的学习历程:

gtitub :https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book

向开源大神致敬!

1.神经元模型

其中线性模式,是由权重w和偏置b构成,具体示意图如下:

 2.优化方法:

3.偏导的计算:

求导的方法不难,有基础的数学知识就可以看懂.

 4.书上的线性模型实战例题:

书上的例题没有用到tensorflow的方法来求解。用的是自定义公式的方法来计算。

4.1 自己造一个点噪音的数据散点:

y = 1.44x+0.87,噪点是均值为0,标准差为1的正态分布数据。

def load_data():
    data = []
    for i in range(100):
        x = np.random.uniform(-10, 10)  # 在-10和10之间随机输入float类型值
        esp = np.random.normal(0, 1)
        y = 1.477 * x + 0.89 + esp
        data.append([x, y])
    data = np.array(data)
    return data
    # plt.scatter(data[:,0],data[:,1])
    # plt.xlim(-10,10)
    # plt.show()

散点图:

4.2计算误差和计算梯度

def mse(b, w, points):
    # 计算均方差
    totalError = 0
    for i in range(len(points)):
        x = points[i, 0]
        y = points[i, 1]
        totalError += (y - (w * x + b)) ** 2
    return totalError / float(len(points))


def step_gradient(b_current, w_current, points, lr):
    # 计算偏导,更新w和b
    b_gradient = 0
    w_gradient = 0
    M = float(len(points))
    for i in range(len(points)):
        x = points[i, 0]
        y = points[i, 1]
        b_gradient += (2 / M) * ((w_current * x + b_current) - y)
        w_gradient += (2 / M) * x * ((w_current * x + b_current) - y)
    new_b = b_current - lr * b_gradient
    new_w = w_current - lr * w_gradient
    return (new_b, new_w)

 4.3 迭代和训练

def step_gradient(b_current, w_current, points, lr):
    # 计算偏导,更新w和b
    b_gradient = 0
    w_gradient = 0
    M = float(len(points))
    for i in range(len(points)):
        x = points[i, 0]
        y = points[i, 1]
        b_gradient += (2 / M) * ((w_current * x + b_current) - y)
        w_gradient += (2 / M) * x * ((w_current * x + b_current) - y)
    new_b = b_current - lr * b_gradient
    new_w = w_current - lr * w_gradient
    return (new_b, new_w)


w = 0
b = 0
lr = 0.001
points = load_data()
for step in range(10000):
    b,w = step_gradient(b,w,points,lr)
    loss = mse(b,w,points)
    if step%500 ==0:
        print(b,w,loss)

运行:

最终,损失函数稳定在0.83左右,此时,b=0799,w=1.46

 

这一章其实没有怎么讲深度学习的概念,主要还是将梯度下降法的思路,跟着书敲一敲代码,还是挺有意义的。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值