python进阶TensorFlow神经网络拟合线性及非线性函数

 更新时间:2021年10月16日 11:58:47   作者:_睿智_  
这篇文章是python进阶学习主要介绍了TensorFlow神经网络拟合线性及非线性函数原理及示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助

一、拟合线性函数

学习率0.03,训练1000次:

学习率0.05,训练1000次:

学习率0.1,训练1000次:

可以发现,学习率为0.05时的训练效果是最好的。

生成随机坐标

1、生成x坐标

2、生成随机干扰

3、计算得到y坐标

4、画点

# 生成随机点
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐标
    x_data = np.random.rand(100)
     # 生成随机干扰
    noise = np.random.normal(0, 0.01, x_data.shape)
    #                       均值 标准差 输出的形状
     # 计算y坐标
    y_data = 0.2 * x_data + 0.3 + noise
     # 画点
    plt.scatter(x_data, y_data)

神经网络拟合

1、创建神经网络

2、设置优化器与损失函数

3、训练(根据已有数据)

4、预测(给定横坐标,预测纵坐标)

# 创建神经网络(训练及预测)
def Neural_Network():
    # 1 创建神经网络
    model = tf.keras.Sequential()
    # 为神经网络添加层
    model.add(tf.keras.layers.Dense(units=1, input_dim=1))
#                             隐藏层 神经元个数 输入神经元个数
    # 2 设置优化器与损失函数
    model.compile(optimizer=SGD(0.05), loss='mse')
#                 优化器     学习率0.05  损失函数
# SGD:随机梯度下降法
# mse:均方误差
    # 3 训练
    for i in range(1000):
        # 训练数据并返回损失
        loss = model.train_on_batch(x_data, y_data)
        # print(loss)
     # 4 预测
    y_pred = model.predict(x_data)
     # 5 显示预测结果(拟合线)
    plt.plot(x_data, y_pred, 'r-', lw=3)    #lw:线条粗细

代码

# 拟合线性函数
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.optimizers import SGD 
# 生成随机点
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐标
    x_data = np.random.rand(100) 
    # 生成随机干扰
    noise = np.random.normal(0, 0.01, x_data.shape)
    #                       均值 标准差 输出的形状
     # 计算y坐标
    y_data = 0.2 * x_data + 0.3 + noise 
    # 画点
    plt.scatter(x_data, y_data)
  
# 创建神经网络(训练及预测)
def Neural_Network():
    # 1 创建神经网络
    model = tf.keras.Sequential()
    # 为神经网络添加层
    model.add(tf.keras.layers.Dense(units=1, input_dim=1))
#                             隐藏层 神经元个数 输入神经元个数
    # 2 设置优化器与损失函数
    model.compile(optimizer=SGD(0.05), loss='mse')
#                 优化器     学习率0.05  损失函数
# SGD:随机梯度下降法
# mse:均方误差
     # 3 训练
    for i in range(1000):
        # 训练数据并返回损失
        loss = model.train_on_batch(x_data, y_data)
        # print(loss)
     # 4 预测
    y_pred = model.predict(x_data)
 
    # 5 显示预测结果(拟合线)
    plt.plot(x_data, y_pred, 'r-', lw=3)    #lw:线条粗细 
# 1、生成随机点
Produce_Random_Data()
 
# 2、神经网络训练与预测
Neural_Network()
 
plt.show()

二、拟合非线性函数

第一层10个神经元:

第一层5个神经元:

我感觉第一层5个神经元反而训练效果比10个的好。。。

生成二次随机点

步骤:

1、生成x坐标

2、生成随机干扰

3、计算y坐标

4、画散点图

# 生成随机点
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐标
    x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis]
    #                                       增加一个维度
     # 生成噪声
    noise = np.random.normal(0, 0.02, x_data.shape)
    #                       均值 方差 
    # 计算y坐标
    y_data = np.square(x_data) + noise 
    # 画散点图
    plt.scatter(x_data, y_data)

神经网络拟合

步骤:

1、创建神经网络

2、设置优化器及损失函数

3、训练(根据已有数据)

4、预测(给定横坐标,预测纵坐标)

5、画图

# 神经网络拟合(训练及预测)
def Neural_Network():
    # 1 创建神经网络
    model = tf.keras.Sequential()
    # 添加层
    # 注:input_dim(输入神经元个数)只需要在输入层重视设置,后面的网络可以自动推断出该层的对应输入
    model.add(tf.keras.layers.Dense(units=5,  input_dim=1, activation='tanh'))
#                                   神经元个数 输入神经元个数 激活函数
    model.add(tf.keras.layers.Dense(units=1, activation='tanh')) 
    # 2 设置优化器和损失函数
    model.compile(optimizer=SGD(0.3), loss='mse')
#                 优化器     学习率     损失函数(均方误差) 
    # 3 训练
    for i in range(3000):
        # 训练一次数据,返回loss
        loss = model.train_on_batch(x_data, y_data) 
    # 4 预测
    y_pred = model.predict(x_data) 
    # 5 画图
    plt.plot(x_data, y_pred, 'r-', lw=5)

代码

# 拟合非线性函数
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.optimizers import SGD 
# 生成随机点
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐标
    x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis]
    #                                       增加一个维度 
    # 生成噪声
    noise = np.random.normal(0, 0.02, x_data.shape)
    #                       均值 方差 
    # 计算y坐标
    y_data = np.square(x_data) + noise 
    # 画散点图
    plt.scatter(x_data, y_data) 
# 神经网络拟合(训练及预测)
def Neural_Network():
    # 1 创建神经网络
    model = tf.keras.Sequential() 
    # 添加层
    # 注:input_dim(输入神经元个数)只需要在输入层重视设置,后面的网络可以自动推断出该层的对应输入
    model.add(tf.keras.layers.Dense(units=5, input_dim=1, activation='tanh'))
#                                   神经元个数  输入神经元个数 激活函数
    model.add(tf.keras.layers.Dense(units=1, activation='tanh'))
    #                               输出神经元个数 
    # 2 设置优化器和损失函数
    model.compile(optimizer=SGD(0.3), loss='mse')
#                 优化器     学习率     损失函数(均方误差) 
    # 3 训练
    for i in range(3000):
        # 训练一次数据,返回loss
        loss = model.train_on_batch(x_data, y_data) 
    # 4 预测
    y_pred = model.predict(x_data)
    # 5 画图
    plt.plot(x_data, y_pred, 'r-', lw=5)
# 1、生成随机点
Produce_Random_Data()
 
# 2、神经网络训练与预测
Neural_Network()
 
plt.show()

以上就是python进阶TensorFlow神经网络拟合线性及非线性函数的详细内容,更多关于TensorFlow神经网络拟合线性及非线性函数的资料请关注脚本之家其它相关文章!

相关文章

  • python获取当前日期和时间的方法

    python获取当前日期和时间的方法

    这篇文章主要介绍了python获取当前日期和时间的方法,涉及Python操作日期与时间的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Python系统公网私网流量监控实现流程

    Python系统公网私网流量监控实现流程

    这篇文章主要介绍了Python系统公网私网流量监控实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python 瀑布线指标编写实例

    python 瀑布线指标编写实例

    这篇文章主要介绍了python 瀑布线指标编写实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 教你使用Python写一个简单的JSONParser

    教你使用Python写一个简单的JSONParser

    这篇文章主要介绍了教你使用Python写一个简单的JSONParser,它的整个效果,有点类似于 python 标准库 json 的 json.load() 方法,需要的朋友可以参考下
    2023-04-04
  • python离散建模之感知器学习算法

    python离散建模之感知器学习算法

    这篇文章主要介绍了python离散建模之感知器学习算法,感知机学习算法是支持向量机的基础,支持向量机通过核函数进行非线性分类,支持向量机也是感知机算法的延伸,下面就来介绍感知算法的相关内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python实现调用另一个路径下py文件中的函数方法总结

    Python实现调用另一个路径下py文件中的函数方法总结

    这篇文章主要介绍了Python实现调用另一个路径下py文件中的函数方法,结合实例形式总结分析了Python针对不同文件夹中py文件调用操作的处理技巧与相关注意事项,需要的朋友可以参考下
    2018-06-06
  • 四个Python操作Excel的常用脚本分享

    四个Python操作Excel的常用脚本分享

    在数字化时代,很多人工作中经常和excel打交道。本文和大家分享四个Python操作excel的脚本,让你工作效率更高,需要的小伙伴可以参考一下
    2022-11-11
  • python面向对象_详谈类的继承与方法的重载

    python面向对象_详谈类的继承与方法的重载

    下面小编就为大家带来一篇python面向对象_详谈类的继承与方法的重载。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • matplotlib阶梯图的实现(step())

    matplotlib阶梯图的实现(step())

    这篇文章主要介绍了matplotlib阶梯图的实现(step()),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python算法应用实战之队列详解

    Python算法应用实战之队列详解

    队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。下面就介绍了Python中队列的应用实战,需要的可以参考。
    2017-02-02

最新评论