grokkingDeepLearn four

矩阵

一个好的矩阵可以完美表达现实世界里面的关系,矩阵的表现形式也可以看成是一个二维数组。

无损表示

可以完美的将显示世界的东西表达出来,不会残缺就叫完美表达例如判断一个人的输赢0表示输,1表示赢即完美的表达了输还是赢这便是无损表示

神经网络模型

SGD

随机梯度下降

每组数据训练完后更新权重 ,最朴素的神经网络训练方法

每次训练一个数据点更新一次权重,在非线性中也可以看成是斜率,即每次找到最佳斜率,之后更新。但是这种方法不一定可以找到最正确的值,因为你可以想象一下,如果在一个平面上有很多个凹,我们要找到最低的那个点,但是如果我们最开始不是在那个最低的凹点则不管怎么更新斜率也找不到那个最低点,只能找到在那个凹中的最低点

FGD

每组数据集训练完成后更新权重

拟合

测试值与结果值的拟合程度

欠拟合

与数据集的拟合程度较低,预测的准确率较低。

解决方案:增加一些特征

过拟合

由于一些不必要的特征加入而导致的在训练的数据集中准确率很高,但是在使用别的数据集时会导致误差偏高

解决方案:减少一些不必要的特征

《grokkingDeepLearning》第六章前部分代码解析如下:

import numpy as np

weights = np.array([0.5, 0.48, -0.7])
alpha = 0.1
#准备数据集
streetlights = np.array([[1, 0, 1],
                         [0, 1, 1],
                         [0, 0, 1],
                         [1, 1, 1],
                         [0, 1, 1],
                         [1, 0, 1]])
#对应的结果
walk_vs_stop = np.array([0, 1, 0, 1, 1, 0])
input = streetlights[0]
goal_prediction = walk_vs_stop[0]
#训练40次
for iteration in range(40):
    error_for_all_lights = 0
    #将每组数据集进行训练并更新权重
    for row_index in range(len(walk_vs_stop)):
        input = streetlights[row_index]
        goal_prediction = walk_vs_stop[row_index]

        prediction = input.dot(weights)

        error = (goal_prediction - prediction) ** 2
        error_for_all_lights += error

        delta = prediction - goal_prediction
        weights = weights - (alpha * (input * delta))
        print("Prediction:" + str(prediction))
    print("Error:" + str(error_for_all_lights) + "\n")

知识了解

黑客帝国三部曲里面里面有关于矩阵的,感兴趣的可以看一下


由于本人能力有限,有些地方的能提供图片参考,感兴趣的可以和我一起讨论学习

此文为本人学习所创,如有错误请多多指教

联系QQ1135999353

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值