建立一个神经元的网络并用TF2进行代码实现线性回归

用TF2代码实现建立一个神经元的网络 (了解TF2的代码)

前言

刚刚步入深度学习领域,掌握了简单的基础知识,我们便可以开始建立我们的第一个神经网络,仅利用一个神经元来进行对一组数据的进行线性的回归预测。本文将详细介绍如何用代码实现此功能,以此使得初学者对Tensorflow 2.0有一个初步的认识。

主要解决问题:已知两个数组,分别为[1.0,2.0,3.0,4.0,5.0]和[1.0,3.0,5.0,7.0,9.0]。找出两个数组所对应的关系模型,并根据此模型进行对输入数据的预测。

一、导入第三方库

Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化 。

在Tensorflow 2.0中,keras被打造成了Tensorflow的一个高级API,使得我们操作起来更加简单、实用。

直接从tensorflow中导入该API即可,同时我们也需要使用numpy库,代码如下:

import numpy as np
from tensorflow import keras

二、建立简单神经元

1.Sequential 顺序模型

keras的主要模型之一就是Squential 顺序模型,它是一系列网络层顺序构成的栈。

model=keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])

这里仅建立了一层Dense层也就是全连接层,设定只有一个节点,并且定义好数据输入形状。

2.编译过程

编译过程要找到适合模型的损失函数与优化方法,由于其种类众多,就不一一列出,在以后的学习中,我们将仔细探讨不同条件不同环境下它们的使用方法,这里仅简略说明。

model.compile(optimizer='sgd',loss='mse')

使用随机梯度下降法(stochastic gradient descent,可写成缩写sgd)进行对模型进行优化;

使用均方误差(mean_squared_error,可写成缩写mse)作为损失函数。

3.训练过程

给予model我们一开始想要训练的数据,通过model.fit()函数不断训练模型,以优化其功能。我们在其中设定了其epochs=200,也就是迭代次数为200次,随着训练次数的增加,优化方法使损失函数不断变小,也说明了模型的拟合程度程度在不断变好。

xs=np.array([1.0,2.0,3.0,4.0,5.0],dtype=float)
ys=np.array([1.0,3.0,5.0,7.0,9.0],dtype=float)
model.fit(xs,ys,epochs=200)

下面是训练过程当中,前五次和最后五次的过程中的loss值变化
Epoch 1/200
1/1 [==============================] - 0s 3ms/step - loss: 63.1919
Epoch 2/200
1/1 [==============================] - 0s 998us/step - loss: 37.0199
Epoch 3/200
1/1 [==============================] - 0s 997us/step - loss: 21.7668
Epoch 4/200
1/1 [==============================] - 0s 998us/step - loss: 12.8768
Epoch 5/200
......
Epoch 196/200
1/1 [==============================] - 0s 996us/step - loss: 0.1267
Epoch 197/200
1/1 [==============================] - 0s 0s/step - loss: 0.1258
Epoch 198/200
1/1 [==============================] - 0s 997us/step - loss: 0.1249
Epoch 199/200
1/1 [==============================] - 0s 998us/step - loss: 0.1241
Epoch 200/200
1/1 [==============================] - 0s 997us/step - loss: 0.1233

loss值不断变小,说明模型逐渐变优。

当然,如果我们增加epochs的数量,增加数据量,或者找到更好的优化方法,我们的模型拟合程度可能会更好,在这里我们不再讨论。

4.预测

根据已给数组,我们可以大致估计出其表达式大致为y=2x-1。
如果我们输入一个数字,比如6,我们的理想结果是得到2*6-1=11。所以,只要输入6时,得到的数字与11相近,我们得到的模型便在一定程度上满足了我们的需求。

输入以下代码:

model.predict([6])

得到结果:

[[10.525723]]

该结果接近11,模型构建成功。

三、小结

本文只从一个简单的线性回归预测问题入手,主要目的是帮助对Tensorflow 2.0的代码有一初步了解。

Tensorflow是我们进行深度学习所借助的工具,真正想要操作并实现其功能,发挥其最大威力,还是需要对深度学习的知识熟悉并掌握。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

choosetobehappy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值