多维数组的运算和3层神经网络的实现

一、多维数组运算

1.1 矩阵的乘法

dot点积矩阵的乘法

  • 矩阵*矩阵
  • 矩阵*向量
import numpy as np

A = np.array([[1, 2],[3, 4]])
print(A)
B = np.array([7,8])
print(B)

print(np.dot(A,B))

完全可以实现。同样也可以使用矩阵乘以一个向量来进行运算

向量:一维矩阵

1.2 神经网络的内积

使用numpy矩阵来实现神经网络

使用矩阵的乘法可以一次性算出两个矩阵的数值,这在神经网络的实现层面上是非常重要的

二、3层神经网络的实现

2.1 实现从输入到输出的前向处理

请添加图片描述

2.2 各层间信号传递的实现

从输入层到第一层第一个神经元的过程

1. 计算加权信号和偏置的和(使用矩阵乘法进行计算)
2. 设置好3个矩阵
- 输入矩阵
- 权重矩阵
- 偏置矩阵

注意权重矩阵的写法,是11,21,31来写的,

2.3 计算

  • a来表示加权和

A1=np.dot(x,w1)+B1

被激活函数激活的信号用z来表示

在计算第一层到第二层的传递的时候

  • A2计算的时候的输入值是(Z1,W2)

A2=np.dot(Z1,w1)+B2

三、输出层

3.1 输出层的激活函数和隐藏层不同

这里我们使用恒等函数

会将输入原模原样进行输出

用希腊符号西格玛表示

3.2 激活函数的使用

  • 回归问题 恒等函数
  • 二元分类问题 SIGMOD函数
  • 多元分类问题 softmax函数

四、【实验】使用NumPy巧妙实现神经网络

年轻人的第一个简单的神经网络

  • init函数用于对权重和偏置进行初始化
  • forward函数封装了将输入信号转化为输出信号的过程
import numpy as np


def sigmod(x):
    return 1 / (1 + np.exp(-x))


def indentify_function(x):
    return x


# 在本程序中使用numpy来实现一个简单的神经网络
# 定义好神经网络的初始化函数
def init_network():
    network = {}
    network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
    network['B1'] = np.array([0.1, 0.2, 0.3])
    network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
    network['B2'] = np.array([0.1, 0.2])
    network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
    network['B3'] = np.array([0.1, 0.2])

    return network


def forward(network, x):
    W1 = network['W1']
    W2 = network['W2']
    W3 = network['W3']
    B1 = network['B1']
    B2 = network['B2']
    B3 = network['B3']

    a1 = np.dot(x, W1) + B1
    z1 = sigmod(a1)
    a2 = np.dot(z1, W2) + B2
    z2 = sigmod(a2)
    a3 = np.dot(z2, W3) + B3
    y = indentify_function(a3)
    return y


# 开始运行神经网络
network = init_network()
x = np.array([1, 0.5])
y = forward(network, x=x)
print(y)


D:\ANACONDA\envs\pytorch\python.exe C:/Users/Administrator/Desktop/Code/learn_pytorch/chap2/5.py
[0.31682708 0.69627909]

Process finished with exit code 0

这样就巧妙的实现了神经网络的前向传播

请添加图片描述
一定要把矩阵的这个思想搞清楚!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值