莫烦tensorflow学习记录 (3)建造我们第一个神经网络
另一个学习文档http://doc.codingdict.com/tensorflow/tfdoc/tutorials/overview.html
定义 add_layer()
https://mofanpy.com/tutorials/machine-learning/tensorflow/add-layer/
import tensorflow as tf def add_layer(inputs,in_size,out_size,activation_function=None): #定义添加神经层的函数def add_layer(),它有四个参数:输入值、输入的大小、输出的大小和激励函数,我们设定默认的激励函数是None。
# 因为在生成初始参数时,随机变量(normal distribution)会比全部为0要好很多,所以我们这里的weights为一个in_size行, out_size列的随机变量矩阵。
Weights = tf.Variable(tf.random_normal([in_size,out_size]))
# 机器学习中推荐biases不为0,所以加个0.1
biases = tf.Variable(tf.zeros([1,out_size])+ 0.1)
# 定义Wx_plus_b, 即神经网络未激活的值。其中,tf.matmul()是矩阵的乘法。
Wx_plus_b = tf.matmul(inputs, Weights) + biases
# 当activation_function——激励函数为None时,输出就是当前的预测值——Wx_plus_b,
# 不为None时,就把Wx_plus_b传到activation_function()函数中得到输出。
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b) return outputs
建造神经网络
这次提到了怎样建造一个完整的神经网络,包括添加神经层,计算误差,训练步骤,判断是否在学习
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt def add_layer(inputs,in_size,out_size,activation_function=None): #定义添加神经层的函数def add_layer(),它有四个参数:输入值、输入的大小、输出的大小和激励函数,我们设定默认的激励函数是None。
# 因为在生成初始参数时,随机变量(normal distribution)会比全部为0要好很多,所以我们这里的weights为一个in_size行, out_size列的随机变量矩阵。
Weights = tf.Variable(tf.random_normal([in_size,out_size]))
# 机器学习中推荐biases不为0,所以加个0.1
biases = tf.Variable(tf.zeros([1,out_size])+ 0.1)
# 定义Wx_plus_b, 即神经网络未激活的值。其中,tf.matmul()是矩阵的乘法。
Wx_plus_b = tf.matmul(inputs, Weights) + biases
# 当activation_function——激励函数为None时,输出就是当前的预测值——Wx_plus_b,
# 不为None时,就把Wx_plus_b传到activation_function()函数中得到输出。
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b) return outputs # 虚构一个所需的数据
# 这里的x_data和y_data并不是严格的一元二次函数的关系,
# 因为我们多加了一个noise,这样看起来会更像真实情况。
x_data = np.linspace(-1,1,300)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape)
y_data = np.square(x_data) - 0.5 + noise # y=x^2 -0.5 # 利用占位符定义我们所需的神经网络的输入。 tf.placeholder()就是代表占位符,
# 这里的None代表无论输入有多少都可以,因为输入只有一个特征,所以这里是1。
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None, 1]) # 建立2个隐藏层,输入层只有一个特征,建立2个隐藏层,每层10个神经元,输出也是一个特征,激励函数用的tf.nn.relu,tf.nn.tanh.激励函数有很多比如tf.nn.sigmoid
l1 = add_layer(xs, 1, 10,activation_function=tf.nn.relu)
l2 = add_layer(l1, 10, 10,activation_function=tf.nn.tanh) prediction = add_layer(l2,10,1,activation_function=None) # 输出特征 # 损失函数
# 计算预测值prediction和真实值的误差,对二者差的平方求和再取平均。
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1])) #reduction_indices参数的值为1的时候,是第1维对应位置相加 # 练习
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) #训练,采用梯度下降法,学习率为0.1优化的步长取值,学习方向减小loss # 初始化变量
init = tf.global_variables_initializer() # 上面所有的都还没有运行
# 定义Session,并用 Session 来执行 init 初始化步骤。
# (注意:在tensorflow中,只有session.run()才会执行我们定义的运算。)
sess = tf.Session()
sess.run(init) # 这里运行了init #可视化
# Pycharm可以在【Settings】-->【Python Scientific】-->取消“Show plots……”的勾
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data,y_data)
plt.ion() # 使图像可动态
plt.show() # 这里,我们让机器学习1000次。机器学习的内容是train_step,
# 用 Session 来 run 每一次 training 的数据,逐步提升神经网络的预测准确性。
# (注意:当运算要用到placeholder时,就需要feed_dict这个字典来指定输入。)
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
# 每50步我们输出一下机器学习的误差。
# 每隔50次训练刷新一次图形,用红色、宽度为5的线来显示我们的预测数据和输入之间的关系,并暂停0.1s。
if i % 50 == 0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data})) try:
ax.lines.remove(lines[0])
except Exception:
pass
prediction_value = sess.run(prediction, feed_dict={xs:x_data})
lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
plt.pause(0.1) plt.pause(0) # 完成运行后图片不消失
加速神经网络训练 (Speed Up Training)
Tensorflow 中的优化器会有很多不同的种类。最基本, 也是最常用的一种就是GradientDescentOptimizer。
在Google搜索中输入“tensorflow optimizer可以看到
Tensorflow提供了7种优化器
各种优化器的特点https://mofanpy.com/tutorials/machine-learning/tensorflow/intro-speed-up-learning/

莫烦tensorflow学习记录 (3)建造我们第一个神经网络的更多相关文章
- 莫烦theano学习自修第十天【保存神经网络及加载神经网络】
1. 为何保存神经网络 保存神经网络指的是保存神经网络的权重W及偏置b,权重W,和偏置b本身是一个列表,将这两个列表的值写到列表或者字典的数据结构中,使用pickle的数据结构将列表或者字典写入到文件 ...
- 莫烦pytorch学习笔记(七)——Optimizer优化器
各种优化器的比较 莫烦的对各种优化通俗理解的视频 import torch import torch.utils.data as Data import torch.nn.functional as ...
- 莫烦pytorch学习笔记(八)——卷积神经网络(手写数字识别实现)
莫烦视频网址 这个代码实现了预测和可视化 import os # third-party library import torch import torch.nn as nn import torch ...
- 莫烦PyTorch学习笔记(五)——模型的存取
import torch from torch.autograd import Variable import matplotlib.pyplot as plt torch.manual_seed() ...
- 【tensorflow】tensorflow学习记录——安装、第一个程序篇
机器学习,人工智能往后肯定是一个趋势,现阶段有必要研究一两个人工智能的工具,以免自己技术落伍,其中tensorflow就是一个很不错的项目,有谷歌开发后开源,下面开始学习安装和使用 安装篇: 很不幸, ...
- TensorFlow学习记录(一)
windows下的安装: 首先访问https://storage.googleapis.com/tensorflow/ 找到对应操作系统下,对应python版本,对应python位数的whl,下载. ...
- 莫烦scikit-learn学习自修第四天【内置训练数据集】
1. 代码实战 #!/usr/bin/env python #!_*_ coding:UTF-8 _*_ from sklearn import datasets from sklearn.linea ...
- 莫烦scikit-learn学习自修第一天【scikit-learn安装】
1. 机器学习的分类 (1)有监督学习(包括分类和回归) (2)无监督学习(包括聚类) (3)强化学习 2. 安装 (1)安装python (2)安装numpy >=1.6.1 (3)安装sci ...
- 莫烦keras学习自修第二天【backend配置】
keras的backend包括tensorflow和theano,tensorflow只能在macos和linux上运行,theano可以在windows,macos及linux上运行 1. 使用配置 ...
- 莫烦theano学习自修第九天【过拟合问题与正规化】
如下图所示(回归的过拟合问题):如果机器学习得到的回归为下图中的直线则是比较好的结果,但是如果进一步控制减少误差,导致机器学习到了下图中的曲线,则100%正确的学习了训练数据,看似较好,但是如果换成另 ...
随机推荐
- sql 语句系列(更新系列)[八百章之第六章]
使用另一个表更新记录 有时候我们的数据不会立即去更新,而是存在另外一张表中等待更新,这是在日常开发中常见的操作. update e set e.SAL=ns.SAL+e.SAL, e.COMM=ns. ...
- c# MCV 实现跨域
前言 core跨域严格来说是要分为两步的,因为分为简单跨域和复杂跨域,第一种为直接允许跨域,第二种因为存在某些框架本身不允许put,delete这两个,那么这就是一个问题了.对的,那么mvc这种重量级 ...
- 使用Quorum Journal Manager(QJM)的HDFS NameNode高可用配置
前面的一篇文章写到了hadoop hdfs 3.2集群的部署,其中是部署的单个namenode的hdfs集群,一旦其中namenode出现故障会导致整个hdfs存储不可用,如果是要求比较高的集群,有必 ...
- ArcPy自动绘制大量地图并设置地图要素:Python
本文介绍基于Python语言中ArcPy模块,实现ArcMap自动批量出图,并对地图要素进行自定义批量设置的方法. 1 任务需求 首先,我们来明确一下本文所需实现的需求. 现有通过Pyth ...
- 千万级可观测数据采集器--iLogtail代码完整开源
简介: 2022年6月29日,阿里云iLogtail开源后迎来首次重大更新,正式发布完整功能的iLogtail社区版.本次更新开源全部C++核心代码,该版本在内核能力上首次对齐企业版,开发者可以构建出 ...
- Dubbo-go v3.0 正式发布 ——打造国内一流开源 Go 服务框架
简介:Dubbo-go 是常新的,每年都在不断进化.介绍 Dubbo-go 3.0 工作之前,先回顾其过往 6 年的发展历程,以明晰未来的方向. 作者 | 李志信 来源 | 阿里技术公众号 作者 ...
- VSCode和PhpStorm配置进行PHP断点调试
本文环境:php版本:5.4.45 (phpstudy),Xdebug 2.4.1(phpstudy文件夹中自带),phpstorm 2021.3 目录 PHP配置 关于Xdebug 浏览器配置(插件 ...
- k8s问题解决
问题1: 问题描述:k8s中Terminating状态pod不能删除 [root@master ~]# kubectl get pods -n ms NAME READY STATUS RESTART ...
- PyTorch的安装与使用
技术背景 PyTorch是一个非常常用的AI框架,主要归功于其简单易用的特点,深受广大科研人员的喜爱.在前面的一篇文章中我们介绍过制作PyTorch的Singularity镜像的方法,这里我们单独抽出 ...
- 如何在Ubuntu 20.04上安装Pyenv 管理多版本Python
目录 ubuntu安装pyenv 管理多版本Python 参考文档: 安装pyenv: pyenv 命令列表 pycharm配置 ubuntu安装pyenv 管理多版本Python 参考文档: htt ...