Python深度学习笔记04——tensorflow实现神经网络(壹)
文章目录
前言
一、神经网络基础
1、感知机模型
2、神经网络
二、简单神经网络的实现
1、API介绍
2、简单的神经网络实现手写数字图片识别
总结
前言
关于python深度学习(tensorflow 1.x版本)学习笔记04——神经网络(壹)
一、神经网络基础
1、感知机模型
感知机解决的是分类问题;线性回归解决的是回归问题。
应用:很容易解决与,或,非问题。
x1,x2两个特征值,w1,w2两个权值。
与:所有输入为1,输出为1,否则为0。w1=1,w2=1,阈值为1.5,只有输入(1,1)的输出值为1。
或:只要有一个为1,输出就为1。
异或问题:相同为0,不同为1,使用一个感知机无法很好的划分。(单个感知机解决不了的问题,可以增加感知机)
逻辑回归:sigmoid,激活函数,进行分类。
2、神经网络
神经网络是一种数学模型,是存在于计算机的神经系统,由大量的神经元相连接并进行计算,在外界信息的基础上,改变内部的结构,常用来对输入和输出间复杂的关系进行建模。神经网络由大量的节点和之间的联系构成,负责传递信息和加工信息,神经元也可以通过训练而被强化。
- 感知机-->神经元-->多个-->神经网络
- 特点:
- 输入向量的维度和输入神经元的个数相同
- 每个连接都有权值
- 同一层神经元之间没有连接
- 由输入层,隐层,输出层组成
- 第N层和N-1层的所有神经元连接,也叫全连接层。
- 组成:
- 结构:神经网络中的变量可以是神经元连接的权重
- 激活函数:大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值。
- 学习规则:学习规则制定了网络中的权值如何随着时间推进而调整。(反向传播算法)
神经网络被用于多分类问题:
某一个样本-->得出属于全部类别的每一个概率。(softmax).有多少个类别,输出就是多少个值。
- 神经网络API
- tf.nn:提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation。(能体会到一步一步怎么做的。)*(基础)
- tf.layers:主要提供的高层的神经网络,主要和卷积相关的,对tf.nn的进一步封装。
- tf.contrib:tf.contrib.layers提供能够将计算图中的网络层、正则化、摘要操作、是构建计算图的高级操作,但是tf.contrib包不稳定以及一些实验代码。
算法介绍:
算法 | 策略 | 优化 |
---|---|---|
线性回归 | 均方误差 | 梯度下降 |
逻辑回归 | 对数似然损失 | 梯度下降 |
神经网络 | 交叉熵损失 | 梯度下降,反向传播算法 |
正向传播:输入经过一层层的计算得出输出;
反向传播:从损失计算开始,梯度下降更新权重。
二、简单神经网络的实现
1、API介绍
全连接-从输入直接到输出:
- 特征加权:tf.matmul(a, b, name=None)+bias
- return:全连接结果,供交叉损失运算
- 不需要激活函数(因为是最后的输出)
SoftMax计算、交叉熵:
- tf.nn.softmax_cross_entropy_with_logits(labels=None,logits=None,name=None)
- 计算logits和labels之间的交叉熵损失熵
- labels:标签值(真实值)
- logits:样本加权之后的值
- return:返回损失值列表
损失值列表平均值计算:
- tf.reduce_mean(input_tensor) 计算张量的尺寸的元素平均值
其他方法-损失下降API:
- tf.train.GradientDescentOptimizer(learning_rate) 梯度下降优化
- learning_rate:学习率
- minimize(loss):最小化损失
- return:梯度下降op
2、简单的神经网络实现手写数字图片识别
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
def full_connected():# 获取真实数据mnist = input_data.read_data_sets("./data/mnist/input_data", one_hot=True)# 1、建立数据的占位符 x [None,78] y_ture[NONE,10]with tf.variable_scope("data"):x = tf.placeholder(tf.int32, [None, 784])y_true = tf.placeholder(tf.int32, [None, 10])# 2、建立一个全连接层的神经网络 w [784,10] b[10]with tf.variable_scope("fc_model"):# 随机初始化权重与偏置weight = tf.Variable(tf.random.normal([784, 10], mean=0.0, stddev=1.0), name="W")bias = tf.Variable(tf.constant(0.0, shape=[10]))# 预测none个样本的输出结果matrix[None,784]*[784,10]+[10]=[None,10]y_predict = tf.matmul(x, weight) + bias# 3、求出所有样本的损失,然后求平均值with tf.variable_scope("soft_cross"):# 求平均交叉熵损失loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_true, logits=y_predict))# 4. 梯度下降求出损失with tf.variable_scope("optimizer"):train_on = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 5. 计算准确率with tf.variable_scope("acc"):equal_list = tf.equal(tf.argmax(y_true, 1), tf.argmax(y_predict, 1))# equal_list None个样本 [1,0,1,0,1,1,......]accuracy = tf.reduce_mean(tf.cast(equal_list, tf.float32))# 收集变量 单个数字值收集tf.summary.scalar("losses", loss)tf.summary.scalar("acc", accuracy)# 高纬度变量收集tf.summary.histogram("weights", weight)tf.summary.histogram("biases", bias)# 定义一个初始化变量的opinit_op = tf.global_variables_initializer()# 定义一个合并变量的opmerged = tf.summary.merge_all()# 开启会话去训练with tf.Session() as sess:# 初始化变量sess.run(init_op)# 建立events文件, 然后写入filewriter = tf.summary.FileWriter("./data/tmp/test", graph=sess.graph)# 迭代步数去训练,更新参数for i in range(2000):# 取出真实的特征值和目标值mnist_x, mnist_y = mnist.train.next_batch(50)# 运行train_on训练sess.run(train_on, feed_dict={x: mnist_x, y_true: mnist_y})# 写入每步训练的值summery = sess.run(merged, feed_dict={x: mnist_x, y_true: mnist_y})filewriter.add_summary(summery, i)print("训练第%d步, 准确率为:%f" % (i, sess.run(accuracy, feed_dict={x: mnist_x, y_true: mnist_y})))return Noneif __name__ == "__main__":full_connected()
总结
以上是通过学习视频《Python深度学习(tensorflow)》整理学习笔记(附:视频学习地址https://www.bilibili.com/video/BV1Wt411C75s/),关于利用tensorflow实现神经网络,本篇主要记录了感知机、神经网络的基本结构并利用代码实现简单的神经网络实现手写数字图片识别。
Python深度学习笔记04——tensorflow实现神经网络(壹)相关推荐
- Kera之父Python深度学习笔记(二)神经网络的数学基础
目录 神经网络的数据表示 标量(0D张量) 向量(1D张量) 矩阵(2D张量) 3D张量以及更高维张量 关键属性 在Numpy中操作张量 数据批量的概念 现实世界中的数据张量 向量数据 时间序列数据和 ...
- 深度学习笔记(2) 神经网络基础
深度学习笔记(2) 神经网络基础 1. 二分类 2. 逻辑回归 3. 逻辑回归的代价函数 4. 梯度下降法 5. 逻辑回归中的梯度下降 6. 简化的代价函数 1. 二分类 逻辑回归是一个用于二分类(b ...
- Python深度学习:基于TensorFlow
作者:吴茂贵,王冬,李涛,杨本法 出版社:机械工业出版社 品牌:机工出版 出版时间:2018-10-01 Python深度学习:基于TensorFlow
- 深度学习笔记其五:卷积神经网络和PYTORCH
深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...
- Python深度学习之搭建小型卷积神经网络(Kaggle网站Dogs-vs-Cats数据集)
完全来源与<Python深度学习>中的例子,仅供学习只用. Cats vs. Dogs(猫狗大战)是Kaggle大数据竞赛的数据集,数据集由训练数据和测试数据组成,训练数据包含猫和狗各12 ...
- 深度学习笔记:Tensorflow手写mnist数字识别
文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...
- 深度学习笔记(五)——神经网络工具箱nn
神经网络工具箱 神经网络工具箱nn nn.Module nn.functional 优化器 动态修改学习率参数 优化器比较 参考文献 神经网络工具箱nn 在nn工具箱中有两个重要模块:nn.Model ...
- 《Python 深度学习》6.3 循环神经网络的高级用法 (代码)
# 6.3 循环神经网络的高级用法 本节将介绍提高循环神经网络的性能和泛化能力的三种高级技巧.学完本节,你将会掌握 用 Keras 实现循环网络的大部分内容.我们将在温度预测问题中介绍这三个概念.在这 ...
- 《Python 深度学习》5.4 卷积神经网络的可视化(代码)
Visualizing what convnets learn 卷积神经网络的可视化 人们常说,深度学习模型是"黑盒",即模型学到的表示很难用人类可以理解的方式来提取和呈现.虽然对 ...
- Kera之父Python深度学习笔记(一)什么是深度学习
目录 机器学习 深度学习 其他机器学习(简史) 概率建模 早期神经网络 核方法 决策树.随机森林与梯度提升机 机器学习 学习:寻找数据自动搜索的优化过程 假设空间:一组实现定义好的操作(机器学习寻找变 ...
最新文章
- Exchange2003 OWA访问,IIS权限设置
- feign调用soap_Spring Cloud 组件 —— feign
- 08 域控 架构主机 转移_论无服务器架构的特征
- 算法设计7—哈希表1
- pycharm 怎么对代码进行性能分析,消耗时间time (Run -- Profile 'xxxx')
- VTK:图表之InEdgeIterator
- 【app.json】配置说明,不断更新中
- Charles+安卓模拟器 抓取https请求
- 南京张治中故居违规重建后标价6400万元出售
- 怎么在Ubuntu下设置程序的快捷键
- python 操作 saltstack Api(二) 示例
- 《暗黑破坏神2》关于d2loader的使用说明
- phx.gen.html 生成器
- 数据结构C语言代码实战
- html布局属性,hTML之FLEX布局属性
- 市场的霸主:对冲基金世界的超额回报大师
- 由freemarker毫秒级时间谈固定日期格式
- python编程:从入门到实践习题第五章5-8~5-11
- Yjs + quill:快速实现支持协同编辑的富文本编辑器
- android 百度地图禁止双击放大缩小,百度地图API 在使用点聚合时,如果放大、缩小或移动地图时,添加的文字标签会消失...
热门文章
- android 地址选择下载,选择走开下载-选择走开(吃饭位置选择)下载v1.0.4 安卓版-西西软件下载...
- 图片黑底漂白 PicGrayRemover
- Air for ios横版格斗过关项目技术整理
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(四)
- 朴实无华!注意力机制神经网络解析
- 华为HCNA实验操作之常用操作命令1-10
- python数据分析热力图怎么看_数据分析实战—热力图
- 线性代数 --- Gauss消元的部分主元法和完全主元法(补充)
- 树莓派中的 IM 私有云支持多少并发?
- Nginx 基础配置