神经网络基础
2019-01-19 00:19
423 查看
了解线性分类和神经网络在实现上的区别
区别于线性score函数
(之前)线性得分函数:
(现在)2层的神经网络
这是最简单的神经网络形式
是将两个变化相结合,顶层有一个线性变换,然后同另一个非线性变换结合而成。
模型图
(或)3层的神经网络
(到)n层神经网络
神经网络
概念:神经网络就是由简单函数构成的一组函数,在顶层使用一种层次化的方式将它们堆叠在一起,来形成一个更复杂的非线性的函数。是一个多阶层分布计算的思想。
说明:在线性分类中,只有一个根据颜色特征来分类的权值W,而在多层的网络中,W1直接和输入X相联,表示各种类别的集合,存在一个中间变量h,在h里对这些模板都有相应的得分,W2是h里所有向量的权重,其上面的另一层再将这些得分组合起来,得到S最终得分。此时既有基于颜色的分类,也有了基于样式的分类。
例子解释:若输入的图像x是左侧脸的马,而W1中的类别既有左侧脸的马,又有右侧脸的马,则在h中,可能左侧脸的马得分很高,右侧脸的马得分低,那么W2是一个加权数而不是最大数,是所有类别得分的加权。如果某一分类得分较高,或在其他分类的得分较低或中等水平时,这些组合在一起可能会给出一个较高的分数及通过一个加权过程确保任意一匹吗的得分在马类中是较高的。
如果某一分类得分较高,或在其他分类的得分较低或中等水平时,这些组合在一起可能会给出一个较高的分数。
组成:
神经元在连接和处理方式上类似人体中的神经元,故得名。
def neuron_tick(inputs): # 假设输入inputs和权重weights都是 1×n 的numpy矩阵 # 偏差量bias假设是一个 cell_body_sum = np.sum(inputs * self.weights) + self.bias firing_rate = 1.0 / (1.0 + math.exp(-cell_body_sum)) # sigmoid activation function return firing_rate # 神经元的触发率
关于激活函数
视具体情况进行选择,先留个坑,以后要补~~
架构:
实现代码:
二层神经网络的构建▼
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
实现代码:
三层神经网络的简要表达▼
# ... f = lambda x:1.0 / (1.0 + np.exp(-x) x = np.random.randn(3,1) h1 = f(np.dot(W1,x) + b1) h2 = f(np.dot(W2,h1) + b2) out = np.dou(w3,h2) + b3
相关文章推荐
- 神经网络基础 - Python编程实现标准BP算法
- 吴恩达《深度学习工程师》Part1.Week2 神经网络基础
- 深度学习之四:卷积神经网络基础
- 神经网络和机器学习基础入门分享
- [置顶] 无人驾驶汽车系统入门(九)——神经网络基础
- 一个单层的基础神经网络实现手写字识别
- 《神经网络和深度学习》之神经网络基础(第二周)课后作业——神经网络思维的逻辑回归
- 神经网络基础知识
- 神经网络基础1
- 神经网络编程基础(Basics Of Neural Network Programming)
- 第二周神经网络基础
- 神经网络基础和感知器
- 神经网络的表达式 机器学习基础(3)
- MATLAB 神经网络基础(1)
- 神经网络基础
- 吴恩达《深度学习工程师》Part1.Week2 神经网络基础
- 零基础入门深度学习(5) - 循环神经网络
- 神经网络基础——从二分分类和逻辑回归说起
- 神经网络的基础学习