• cs231n__4.2 神经网络 Neural networks


    CS231n 学习笔记

    4.2 神经网络 Neural networks

    之前我们已经使用了 很多线性分类函数
    现在我们不用单变换的:

    我们首先有线性层,然后有这个非线性计算,继而在顶层再加入另一个线性层。然后到这里,最后我们可以得到一个计分函数。输出计分向量。

    一般来说,神经网络就是由简单函数构成的一组函数,在顶层堆叠在一起,我们用一种层次化的方式将它们堆叠起来。为了形成一个更为复杂的非线性函数。
    这就是基本的 多阶段分层计算

    注:非线性通常出现在h之前。
    h = max(0,W1x)

    当然,我们也可以堆更多层

    这也是深度神经网络的由来,意味着你可以堆很多层,得到很深的网络

    实现一个2层的神经网络只需要20行代码:

    import numpy as np
    from numpy.random import randn
    
    N, D_in, H, D_out = 64, 1000, 100, 10
    x, y = randn(N, D_in), randn(N, D_out)
    w1, w2 = randn(D_in, H), randn(H, D_out)
    
    for t in range(2000):
      	h = 1 / (1 + np.exp(-x.dot(w1)))
        y_pred = h.dot(w2)
        loss = np.square(y_pred - y).sum()
        print(t, loss)
        
        grad_y_pred = 2.0 * (y_pred - y)
        grad_w2 = h.T.dot(grad_y_pred)
        grad_h = grad_y_pred.dot(w2.T)
        grad_w1 = x.T.dot(grad_h * h * (1-h))
        
        w1 -= 1e-4 * grad_w1
        w2 -= 1e-4 * grad_w2
    

    当然,剩余部分我们将在Assignment_2中完成.


    现在我们已经了解了神经元的数学原理了。
    那么,我们是如何从生物的神经元中获得灵感的呢?

    ↓↓↓↓↓↓↓↓↓↓↓↓↓这张图对应下面的代码

    生物上的神经元

    我们讨论过了多种不同激发函数

    我们也会讨论神经元的不同架构形式

    之前我们说的两层神经网络,具体来讲我们有两个线性层,针对每个线性层,我们做了一次矩阵乘法。
    一个在神经元中前向传播的例子:

    写出来是:

    我们可以用逆推运算来计算

    summary:

  • 相关阅读:
    让框架内循环或者指定元素 指定CSS
    织梦dedecms自定义功能函数(1):调用body中的图片(可多张)
    dedecms 上传目录路径
    点击展示菜单11
    ueditor 去掉自动跟随内容的<p><br /></p>
    点击切换JS
    点击切换的JS
    Unity3D NGUI 给button按钮添加单间事件
    企业如何留住核心人才[转载分享]
    java SSH框架详解(面试和学习都是最好的收藏资料)
  • 原文地址:https://www.cnblogs.com/orangestar/p/11371413.html
Copyright © 2020-2023  润新知