搭建单层神经网络首先需具备的知识如下:
1、人工智能基本理论
2、深度学习基本知识
3、机器学习基本知识
4、tensorflow基本知识
5、numpy(矩阵运算)基本知识
6、神经网络(搭建模型)基本知识
7、matplotlib(绘图)基本知识
8、pandas(python语言编写的软件库)基本知识
》不要吓到了,慢慢来,查查资料就能懂了(来自小白的仰望)
一、人工智能开发环境的安装(以下安装在Anaconda Prompt终端输入即可)
1、安装tensorflow
pip install --user --upgrade tensorflow -i https://mirrors.aliyun.com/pypi/simple/
2、安装matplotlib
pip install --user --upgrade matplotlib notebook -i https://mirrors.aliyun.com/pypi/simple/
3、安装pandas
pip install --user --upgrade pandas -i https://mirrors.aliyun.com/pypi/simple/
4、安装notebook
pip install --user --upgrade jupyter -i https://mirrors.aliyun.com/pypi/simple/
注意:安装目录中的Scripts,需要添加到系统path中(不懂的可以发邮件询问我:Zhangyc_Engineer@qq.com)
二、使用的工具
1、Anaconda prompt(Miniconda)
该工具的安装,在我的博客主页大家可以自己去find
2、jupyter notebook
三、搭建单层神经网络(例如:全连接线性模型)
1、导入tensorflow和numpy包
import tensorflow as tf
import numpy as np
2、加载训练集(给人工智能投喂原始数据)
data = np.loadtxt("./xxxxx/yyyyy.csv",delimiter=',',skiprows=1) #第一个参数为文件路径,第二个参数为里面的内容用逗号隔开,第三个参数为跳过第一行表头
3、可以打印以下读取的数据
print("data.shape:",data.shape) #读取矩阵的形状,为x行y列,第一列为标号,第二列为经验年限,第三列为收入
experience=data[:,1] #获取第1列的所有行
print("experience=",experience)
income=data[:,2] #获取第二列的所有行
print("income=",income)
4、绘制图形(更直观地看数据的分布)
#下面可以绘图看一看
#首先导入matplotlib包
import matplotlib.pyplot as plt #导入matplotlib包
plt.scatter(experience,income) #画散点图,x为经验年限,y为收入
5、构建单层神经网络模型
#下面就是需要构建单层神经网络模型
model = tf.keras.Sequential() #通过keras建立一个序列模型/线性模型,例如,f(x)=ax+b
#向模型中添加一个层及激活函数,全连接层的用法
model.add(tf.keras.layers.Dense(1,input_shape=(1,) )) #第一个参数“1”,表示输出维度为1维,使用关键字input_shape=(1,),表示输入的维度也是1维并且输入的参数只有1个,它是一个元组类型的数据
6、查看构建的模型的参数
model.summary() #该方法可以查看模型,dense(Dense):Dense表示全连接层;(None,1):None第一个维度,表示样本的个数很多;param中的2表示有2个参数
7、模型建立完成就进行complie
#上面神经网络的模型就已经建立好了,下面需要配置和编译指定梯度算法、优化、损失等
model.compile(optimizer="adam",loss='mse',metrics=['acc']) #采用adam优化算法、损失函数为均方误差,metrics目的是监控准确性
8、compile之后就可以进行训练
#神经网络配置好之后,就可以开始训练
logs=model.fit(experience,income, epochs=5000) #进行匹配experience和income,即训练,训练的次数为5000次
9、训练完之后,可以绘制训练次数与损失度的图形
#训练完之后,可以画个图看看
plt.scatter(logs.epoch, logs.history.get('loss'))
10、训练完之后就可以进行预测
#训练完之后,就可以进行预测
#比如预测有20.6666年的经验experience,他的收入能达到多少?
result=model.predict([20.6666]) #这里必须是元组类型
print(result)
预测结果:
[[64.90245]]
四、总结
1、训练集需要大家自己去准备
格式:x行3列(第一列为标号,第二列为输入的经验experience,第三列为输出的收入income),文件后缀为.csv格式
2、本次训练为单层神经网络模型
3、神经网络为Dense全连接形式
4、模型为线性模型,例如:f(x)=ax+b
5、未添加激活函数activation
6、训练此时对预测结果有一定的影响&准备的训练集不够好也会对结果有一定的影响
7、建议大家网上去爬一下别人公开的数据集,来对人工智能进行投喂,这样结果比较准确且有实际应用意义