今天学习的是如何搭建一个完整的神经网络结构,这几天都在研究整篇代码的含义,网上的教程都是各有缺失,综合了多个版本才完全搞清楚。我会把每个函数的API都详细的讲,也懒得拆成上下两篇,就弄一篇所以这篇文章会格外的长,希望大家能有耐心看下去。再说一下我是学的1.0版本的tensorflow编程,我电脑装的是2.0版本,不想换了,所以代码用到的是兼容代码。
人工神经网络主要架构是由神经元、层和网络三个部分组成。整个人工神经网络包含一系列基本的神经元、通过权重相互连接。神经元是人工神经网络最基本的单元。单元以层的方式组,每一层的每个神经元和前一层、后一层的神经元连接,共分为输入层、输出层和隐藏层,三层连接形成一个神经网络。输入层只从外部环境接收信息,是由输入单元组成,而这些输入单元可接收样本中各种不同的特征信息。该层的每个神经元相当于自变量,不完成任何计算,只为下一层传递信息;隐藏层介于输入层和输出层之间,这些层完全用于分析,其函数联系输入层变量和输出层变量,使其更配适数据。而最后,输出层生成最终结果,每个输出单元会对应到某一种特定的分类,为网络送给外部系统的结果值,整个网络由调整链接强度的程序来达成学习的目的。
就用一个例子来详细讲解,本次代码加入结果可视化,就不在单独写一篇了
首先调用函数和启用动态图机制,这次我们需要用到绘图工具所以别忘了调用
import tensorflow.compat.v1 as tf #1.0版本的可以把 .compat.v1 删去
import numpy as np
import matplotlib.pyplot as plt #调用绘图函数
tf.disable_eager_execution() #启用动态图机制'1.0版本可不用'
接下来是构建随机数据
这里用到了numpy的一个生成等差数列的API:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
这个函数会返回一个范围在start~stop之间的数量为num的等差数列,数量未规定默认为50,后面一般保持默认就好。
还用到了numpy的一个从正态分布中随机抽取样本的API:
np.random