深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数
目录
一、拟合线性函数
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)神经网络 -- 拟合线性函数非线性函数相关推荐
- 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)
独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十二)(人工神经网络(1)))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十二)(人工神经网络(1))) 12 人工神经网络(1) 12.1 神经元与感知机 12.1.1 感知机 12.1.2 Delt ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十四)(卷积神经网络))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十四)(卷积神经网络)) 14 卷积神经网络 14.1 深度学习基础 14.1.1 深度学习的基本思想 14.1.2 深度学习三 ...
- 【深度学习】循环神经网络(RNN)的tensorflow实现
[深度学习]循环神经网络(RNN)的tensorflow实现 一.循环神经网络原理 1.1.RNN的网络结构 1.2.RNN的特点 1.3.RNN的训练 二.循环神经网络的tensorflow实现 参 ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(八)(TensorFlow基础))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(八)(TensorFlow基础)) 8 TensorFlow基础 8.1 TensorFlow2.0特性 8.1.1 Tenso ...
- 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(四)(Python语言基础(2))
[神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(四)(Python语言基础(2)) 第4讲 Python语言基础(2) 4.1 内置数据结构 4.1.1 序列数据结构(sequ ...
- 【零基础深度学习教程第二课:深度学习进阶之神经网络的训练】
深度学习进阶之神经网络的训练 神经网络训练优化 一.数据集 1.1 数据集分类 1.2 数据集的划分 1.3 同源数据集的重要性 1.4 无测试集的情况 二.偏差与方差 2.1 概念定义 2.1.1 ...
- July深度学习笔记之神经网络与反向传播算法
July深度学习笔记之神经网络与反向传播算法 一.神经网络 神经网络的大致结构如下: 大致可以分为输入层.隐藏层与输出层. 而我们可以单独拿出来一个结点,可以发现,其实它就是类似一个逻辑回归(LR), ...
- 深度学习~卷积神经网络(CNN)概述
目录 1. 卷积神经网络的形成和演变 1.1 卷积神经网络结构 1.2 卷积神经网络的应用和影响 1.3 卷积神经网络的缺陷和视图 1.3.1 缺陷:可能错分 1.3.2 解决方法:视图 ...
最新文章
- 【开源】博客园文章编辑器4.0版发布
- 如何解决Contacts中的多音字排序错误问题
- JEECMS自定义标签开发步骤
- (error) CROSSSLOT Keys in request don‘t hash to the same slot 解决方法
- linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...
- oracle外键有什么用,深入理解Oracle索引(20):外键是否应该加索引
- 想转行,是要入坑Python还是Java?这问题还用问?
- 聊聊 rel=noopener
- 自动化运维工具之Zabbix发现_自动注册及web页面状态监控(四)
- 五分钟快速过完Verilog HDL基本概念(4)代码的编写标准
- java 表格升序排列_用JS实现表格的排序
- extjs中的flex_Extjs 教程
- 【工控老马】基于PLC的花样喷泉设计原理详解
- 30分钟,学会经典小游戏编程!
- 为iPhone日历添加天气和农历
- 【数据结构基础整理】图--06:克鲁斯卡尔算法详解
- 需求与商业模式创新-需求6-涉众分析与硬采样
- 网络时间协议(NTP)
- Swing第二刀:枝间新绿一重重
- matlab dms2degrees,Convert degrees-minutes to degrees
热门文章
- Kotlin 中 Activity 跳转问题
- ViewStub 使用注意事项
- ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
- JVM自动内存管理:对象判定和回收算法
- DOS批处理的字符串功能
- 丽水风光(二)—劫色“古堰画乡”
- tomcat 运行php_tomcat可以运行php吗
- char的初始值_java从入门到放弃 各种数组的初始值?
- python元组元素的提取比_Python 元组数据类型(tuple)详解 [访问元组元素][修改元组元素][删除元组][学习 Python 必备基础知识][看此一篇就够了]...
- java regexp_java中使用regexp