目录

一、拟合线性函数

1、生成随机坐标

2、神经网络拟合

代码

二、拟合非线性函数

1、生成二次随机点

2、神经网络拟合

代码


一、拟合线性函数

学习率0.03,训练1000次:

学习率0.05,训练1000次:

学习率0.1,训练1000次:

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

1、生成随机坐标

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)

2、神经网络拟合

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、生成二次随机点

步骤:

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)

2、神经网络拟合

步骤:

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):# 训练一次数据,返回lossloss = 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):# 训练一次数据,返回lossloss = 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()

深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数相关推荐

  1. 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)

    独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...

  2. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十二)(人工神经网络(1)))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十二)(人工神经网络(1))) 12 人工神经网络(1) 12.1 神经元与感知机 12.1.1 感知机 12.1.2 Delt ...

  3. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十四)(卷积神经网络))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十四)(卷积神经网络)) 14 卷积神经网络 14.1 深度学习基础 14.1.1 深度学习的基本思想 14.1.2 深度学习三 ...

  4. 【深度学习】循环神经网络(RNN)的tensorflow实现

    [深度学习]循环神经网络(RNN)的tensorflow实现 一.循环神经网络原理 1.1.RNN的网络结构 1.2.RNN的特点 1.3.RNN的训练 二.循环神经网络的tensorflow实现 参 ...

  5. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(八)(TensorFlow基础))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(八)(TensorFlow基础)) 8 TensorFlow基础 8.1 TensorFlow2.0特性 8.1.1 Tenso ...

  6. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(四)(Python语言基础(2))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(四)(Python语言基础(2)) 第4讲 Python语言基础(2) 4.1 内置数据结构 4.1.1 序列数据结构(sequ ...

  7. 【零基础深度学习教程第二课:深度学习进阶之神经网络的训练】

    深度学习进阶之神经网络的训练 神经网络训练优化 一.数据集 1.1 数据集分类 1.2 数据集的划分 1.3 同源数据集的重要性 1.4 无测试集的情况 二.偏差与方差 2.1 概念定义 2.1.1 ...

  8. July深度学习笔记之神经网络与反向传播算法

    July深度学习笔记之神经网络与反向传播算法 一.神经网络 神经网络的大致结构如下: 大致可以分为输入层.隐藏层与输出层. 而我们可以单独拿出来一个结点,可以发现,其实它就是类似一个逻辑回归(LR), ...

  9. 深度学习~卷积神经网络(CNN)概述

    目录​​​​​​​ 1. 卷积神经网络的形成和演变 1.1 卷积神经网络结构 1.2 卷积神经网络的应用和影响 1.3 卷积神经网络的缺陷和视图 1.3.1 缺陷:可能错分 1.3.2 解决方法:视图 ...

最新文章

  1. 【开源】博客园文章编辑器4.0版发布
  2. 如何解决Contacts中的多音字排序错误问题
  3. JEECMS自定义标签开发步骤
  4. (error) CROSSSLOT Keys in request don‘t hash to the same slot 解决方法
  5. linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...
  6. oracle外键有什么用,深入理解Oracle索引(20):外键是否应该加索引
  7. 想转行,是要入坑Python还是Java?这问题还用问?
  8. 聊聊 rel=noopener
  9. 自动化运维工具之Zabbix发现_自动注册及web页面状态监控(四)
  10. 五分钟快速过完Verilog HDL基本概念(4)代码的编写标准
  11. java 表格升序排列_用JS实现表格的排序
  12. extjs中的flex_Extjs 教程
  13. 【工控老马】基于PLC的花样喷泉设计原理详解
  14. 30分钟,学会经典小游戏编程!
  15. 为iPhone日历添加天气和农历
  16. 【数据结构基础整理】图--06:克鲁斯卡尔算法详解
  17. 需求与商业模式创新-需求6-涉众分析与硬采样
  18. 网络时间协议(NTP)
  19. Swing第二刀:枝间新绿一重重
  20. matlab dms2degrees,Convert degrees-minutes to degrees

热门文章

  1. Kotlin 中 Activity 跳转问题
  2. ViewStub 使用注意事项
  3. ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
  4. JVM自动内存管理:对象判定和回收算法
  5. DOS批处理的字符串功能
  6. 丽水风光(二)—劫色“古堰画乡”
  7. tomcat 运行php_tomcat可以运行php吗
  8. char的初始值_java从入门到放弃 各种数组的初始值?
  9. python元组元素的提取比_Python 元组数据类型(tuple)详解 [访问元组元素][修改元组元素][删除元组][学习 Python 必备基础知识][看此一篇就够了]...
  10. java regexp_java中使用regexp