深度学习-----课堂笔记

第三章  神经网络

目录

第三章  神经网络

3.1  从感知机到神经网络

3.2  激活函数(activation function)

3.3  多维数组

1).shape

2)矩阵乘法

3.4  3层神经网络的实现

1)符号确认

2)各层间信号传递的实现

3.5  手写数字识别

1)MNIST数据集

2)神经网路的推理处理


3.1  从感知机到神经网络

1)简单感知机如图:

be0af5c7574d4ffa93979606163e6db1.png507ae9d1927c46d69e4f32df91b615e8.png

2)神经网络的例子如图:(中间层有时也称隐藏层)

9445d881a877486ab40ab6377250867f.png

3.2  激活函数(activation function)

1)作用:在于决定如何来激活输入信号的总和

2)感知机中使用了阶跃函数作为激活函数:

d4505d62f0ce41c6a4da4673feab477c.png

3)神经网络中经常使用的一个激活函数是sigmoid()函数:

gif.latex?h%28x%29%20%3D%20%5Cfrac%7B1%7D%7B%281+exp%28-x%29%29%7D

#代码实现
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

4)sigmoid()函数与阶跃函数的比较:

   ①平滑性不同,sigmoid()函数较平缓(连续可导);

   ②返回值不同,阶跃函数只能返回0或1,而sigmoid函数可以返回实数;

   ③具有相似的形状;

   ④两者均为非线性函数;

5)神经网络的激活函数必须为非线性函数,因为使用线性函数的话,加深神经网路的层数时,无法发挥多层网路带来的优势;

3.3  多维数组

1).shape

①若A是一维数组,有四个元素构成,则A.shape的结果是一个元组(tuple),因为一维数组的情况下也要返回和多维数组的情况下一致的情况;

②二维数组时返回的是元组(4,3),三维数组时返回的是元组(4,3,2),因此一维数组时也同样以元组的形式返回结果。

import numpy as np
A = np.array([1,2,3,4])
print(A)

>>> [ 1 2 3 4 ]

A.shape

>>> (4, )

2)矩阵乘法

np.dot(A,B) gif.latex?%5CRightarrow对位相乘(对应行乘以对应列);np.dot(A,B)和np.dot(B,A)的值可能不一样,顺序不同,结果也会不同

②在多维数组的乘积运算中,两个矩阵中的对应维度的元素个数必须一致

3.4  3层神经网络的实现

1)符号确认

2)各层间信号传递的实现

①输入层到第一层的第一个神经元的信号传递过程:

fe68dfc24f2047dc8fac0ef69535a38c.png

 ②激活函数的计算过程:gif.latex?Z1%20%3D%20sigmoid%28A1%29(z:a 被激活函数转换后的信号)

#激活函数  
def sigmoid(x):
    return 1/(1 + np.exp(-x))

Z1 = sigmoid(A1)

③第一层到第二层的信号传递过程:第一层的输出变成了第二层的输入,其余实现与上一层相似;

③第二层到输出层的信号传递过程:输出层的实现与上一层相似,但最后的激活函数与之前的隐藏层不同,使用的是softmax()函数;

#softmax函数
def softmax(x):
    x = x-np.max(x)
    exp_sum = np.sum(np.exp(x))   
    return np.exp(x)/exp_sum 

✨【一般地,回归问题可以使用恒等函数(identify_function() ),二元分类问题可以使用 sigmoid() 函数,多元分类问题可以使用 softmax() 函数】

3.5  手写数字识别

1)MNIST数据集

①MNIST手写数字图像集:训练图像有6万张,测试图像有1万张,可用于学习与推理;

②一般使用方法:先用训练图像进行学习,再用学习到的模型度量能在多大程度上对测试图像进行分类;

③MNIST的图像数据是28像素gif.latex?%5Ctimes28像素的灰度图像,各个像素的取值在0到255之间。每个图像数据都相应的标有“7” "2" "1" 等标签

2)神经网路的推理处理

①神经网络的输入层有784个神经元,输出层有10个神经元(784: 28gif.latex?%5Ctimes28 = 784;10:数字0~9,共10个类别);

②批处理:将输入数据从输入一张图像打包成输入多张图像的情形称为批处理,输入数据的集合称为“批”(batch);通过以批为单位进行推理处理,能够实现高速的运算;

③代码实现:

#导入numpy包、pickle包
import numpy as np
import pickle

#封装函数

#封装数据集
def load_data():      
    save_file = r"C:\Users\花落随缘\Desktop\魏桂凤\深度学习\mnist.pkl"   #打开mnist.pkl
    with open(save_file, 'rb') as f:        #读取文件
        dataset = pickle.load(f)
    x_train, t_train = dataset["train_img"], dataset["train_label"] #调用训练图像与标签
    x_test, t_test = dataset["test_img"], dataset["test_label"]     #调用测试图像与标签
    return x_test,t_test   #返回训练集预测试集数据

#参数初始化
def init_network():
    network = {}       #字典存放数据
    network["w1"] = np.random.rand(784,50)    #随机返回符合均匀分布的一组为784行,50列的随机样本值;
    network["b1"] = np.random.rand(50)        #随机返回符合均匀分布的50个随机样本值;
    network["w2"] = np.random.rand(50,10)     #随机返回符合均匀分布的一组为50行,10列的随机样本值;
    network["b2"] = np.random.rand(10)        #随机返回符合均匀分布的个10随机样本值;
    return network                            #返回 network
  
#激活函数  
def sigmoid(x):
    return 1/(1 + np.exp(-x))
#softmax函数
def softmax(x):
    x = x-np.max(x)
    exp_sum = np.sum(np.exp(x))   
    return np.exp(x)/exp_sum 

#网络计算过程
def predict(network,x):
    w1,b1,w2,b2 = network["w1"],network["b1"],network["w2"],network["b2"]  #读取数据
    a1 = np.dot(x, w1) + b1      #隐藏层的加权总和
    z1 = sigmoid(a1)             #被激活函数转换后的信号,第一个隐藏层的输出
    a2 = np.dot(z1, w2) + b2     #输出层的加权总和
    y = softmax(a2)              #输出层过softmax()函数
    return y                     #输出y


x_test,t_test = load_data()     #读取数据
x = x_test[0:100]               #选取输出层中1~100张图片,进行批处理
network = init_network()

# 只有一个隐藏层,输入层784,隐藏层50,输出层10
correct = 0       #初始值为0
#批处理
for i in range(0,len(x_test),100):    #范围:[0,10000),步长为100
    x = x_test[i:i+100]          #用for语句逐一取出保存在x中的图像数据;
    y = predict(network,x)       #分类;以Numpy数组的形式输出各个标签对应的概率
    y_label = np.argmax(y,axis = 1)          #返回每行中获取概率最高的元素的索引
    correct = np.sum(y_label == t_test[i:i+100])   #计算准确次数
correct = correct/100           #计算准确率
print("正确率为:",correct)           #打印准确率



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 华为HCIA-Datacom学习指南是一本介绍华为数据通信技术的教材,主要包括数据通信基础、网络设备、网络协议、网络安全等方面的内容。通过学习该指南,可以帮助读者了解华为数据通信技术的基本概念、原理和应用,提高其在数据通信领域的技能和能力。同时,该指南也是华为认证网络工程师(HCNA)和华为认证网络技术专家(HCNP)考试的重要参考资料。 ### 回答2: 华为HCIA-Datacom认证是华为公司针对网络通信领域的一项专业认证考试,该考试主要涵盖了网络通信领域中的核心技术和知识点,包括网络规划、网络建设、网络管理、网络安全等方面。本文将从以下四个方面介绍华为HCIA-Datacom学习指南。 一、考试基本情况 华为HCIA-Datacom认证考试是一项由华为公司组织开展的网络技术认证考试,主要目的是验证参与者在网络通信领域中的技术水平和能力。该考试主要包括笔试和实操两个环节,要求参与者掌握网络通信的相关知识和技能,对于网络规划、网络建设、网络管理和网络安全等方面有深入的理解。 二、考试内容概述 华为HCIA-Datacom认证考试主要涵盖了以下几个方面的知识点: 1.网络基础知识:包括数据通信、网络拓扑结构、七层网络模型等基本概念和理论知识。 2.网络规划与设计:包括网络拓扑结构设计、IP地址规划、路由协议选择等方面的知识。 3.网络建设与维护:包括网络设备的设置和组网、网络故障排除等方面的知识。 4.网络安全:包括网络安全的威胁和防范、网络入侵检测和防范等方面的知识。 三、学习准备 参与华为HCIA-Datacom认证考试需要投入大量的时间和精力,需要考生具备扎实的网络通信技术知识和一定的实际工作经验。在考试之前,考生应该充分准备,这包括: 1.系统学习相关理论知识:查阅网络通信的相关技术资料,掌握相关的理论知识。 2.模拟实际操作:通过模拟网络环境,学习相关设备的配置和操作流程。 3.实践操作:参与实际的网络设备建设和运维,积累实际的工作经验。 4.参加培训课程:如能够参加华为公司的培训课程,则更有助于学习和准备。 四、备考建议 1.制定合理的学习计划:根据自身的学习情况和时间安排,制定科学的学习计划。 2.选择合适的学习材料:选择权威性和全面性强的学习材料,如华为官方的HCIA-Datacom学习指南。 3.刻意练习:在学习过程中,积极进行相关实践操作,多次模拟实际操作,以提升技能水平。 4.参加模拟考试:在正式考试之前,多次参加模拟考试,检验自己的学习成果并进行相应的调整和提升。 总之,华为HCIA-Datacom学习指南是参加该认证考试必不可少的学习资料,通过对该指南的系统学习和实践操作,考生可以掌握网络通信领域的核心技术和知识点,从而提升自身的技能水平和职业竞争力。 ### 回答3: 华为hcia-datacom学习指南是一份详细介绍华为学院网络产品领域入门的学习资料。该指南属于华为认证培训中的第一级网络技术认证——HCIA (Huawei Certified ICT Associate)。本指南主要目的是帮助学员熟悉并掌握基础网络技术和华为网络产品的相关知识。华为hcia-datacom学习指南包括以下几个方面: 教学目标:指南首先明确了培训的目标,即通过学习和考试,掌握网络技术的基本知识和华为网络产品的基本特点,为未来的相关工作提供坚实的基础支持。 学习内容:接下来,指南介绍了培训所包含的学习内容,包括网络技术、网络产品、网络方案等。并且,指南还将学习内容进行了详细的划分,为学员进行有序的学习提供了保障。 考试内容:指南中详细介绍了考试所涵盖的知识点以及考试形式,武装学员面对考试,让学员全面了解考核标准,提高自身考试通过几率。 学习方式:指南介绍了学习方式,包括课堂学习和实践操作。指南通过标配培训课程、实验训练、学习视频等方式帮助学员增强自身的实际操作经验,提高自身的学习效果。 总结:指南最后对学习过程中的注意事项进行了总结,方便学员全面掌握,为学员在学习中提供帮助。 以上是华为hcia-datacom学习指南的简单概述。通过本指南的学习,学员可以快速掌握网络基础知识和华为网络产品的应用技术,有助于提高学员的实际操作能力和解决问题的能力,为未来在网络领域的发展奠定基础。同时华为hcia-datacom学习指南对未来在华为等大型互联网公司更深入的学习和培训提供了重要的方向性参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值