使用Tensorflow训练神经网络模型

最近正在入坑机器学习,前期以读代码为主。买了一本才云科技郑泽宇的书,叫做《Tensorflow,实战Google深度学习框架》,觉得很适合入门的小菜鸟,拿出来跟大家分享下。

下面是第一个完整的训练神经网络模型的代码,里面综合了作者和我在网上查到的其他人关于代码的解读。整理之后如下:

 1 #-*-coding:UTF-8-*-
 2 import tensorflow as tf
 3 #通过numpy工具包生成模拟数据集
 4 from numpy.random import RandomState
 5
 6 #BATCH_SIZE这是定义的一个数量,即一次训练模型,投入的样例数,按理说应该是一次投入所有训练数据的
 7 #但是实际操作中一次投入太多数据,会导致电脑死机,因此只好对投入样例数,进行限制
 8 batch_size = 8
 9
10 #定义神经网络的参数:权重w ,stddev=1代表标准差=1,seed随机数种子,设置后每次产生的数字都相同
11 w1= tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
12 w2= tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
13
14 #我们使用 tf.placeholder() 创建占位符(占位符并没有初始值,它只会分配必要的内存),
15 #在 session.run()过程中再投递数据,可以使用 feed_dict 馈送数据。
16 #在shape的一个维度上使用none,不能确定值的形状时,用None表示
17 x = tf.placeholder(tf.float32, shape=(None, 2), name="x-input")
18 y_= tf.placeholder(tf.float32, shape=(None, 1), name=‘y-input‘)
19
20 #定义前向传播过程
21 a = tf.matmul(x, w1)
22 y = tf.matmul(a, w2)
23 #定义损失函数(交叉熵)
24 #tf.clip_by_value(A, min, max):输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。
25 #小于min的让它等于min,大于max的元素的值等于max。
26 cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))
27 #反向传播算法tf.train.AdamOptimizer实现了Adam算法的优化器(随机梯度下降算法的扩展式)
28 train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
29
30 #生成模拟数据
31 #randomState 函数中数字1,相当于一个seed种子,每次产生的随机数都是相同的
32 rdm=RandomState(1)
33 #产生一个128行×2列的随机矩阵
34 X=rdm.rand(128,2)
35 #产生一个布尔型结果矩阵128×1 ,定义规则来给出样本的标签。在这里所有x1+x2<1的样例都被视为正样本
36 #在这里1代表正样本,0代表负样本,大部分的分类问题的神经网络都采用0和1的表示方法
37 Y=[[int(x0+x1)<1] for(x0,x1)in X]
38
39 #创建一个会话来运行Tensorflow程序,反复运行反向传播
40 #tf中运行必须放在session对象中,且运行过后,要关闭session
41 with tf.Session()as sess:
42     #初始化变量,也就是上面的Variable变量
43     init_op=tf.initialize_all_variables()
44     sess.run(init_op)
45     # 输出目前(未经训练)的参数取值
46     #这里为何还要使用sess.run(w1)来进行操作?
47     #因为此时w1还是个变量,是个对象,直接打印出来是对象的地址
48     print "w1:\n",sess.run(w1)
49     print "w2:\n",sess.run(w2)
50     print "\n"
51
52     # 训练模型。
53     #设定训练的轮数
54     STEPS = 5000
55     for i in range(STEPS):
56     #每次选取batch_size个样本进行训练
57         start = (i*batch_size) % 128
58         end = (i*batch_size) % 128 + batch_size
59     #通过选取的样本训练神经网络并更新参数
60         sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
61     #每隔一段时间计算在所有数据上的交叉熵并输出
62         if i % 1000 == 0:
63             total_cross_entropy = sess.run(cross_entropy, feed_dict={x: X, y_: Y})
64             print("After %d training step(s), cross entropy on all data is %g" % (i, total_cross_entropy))
65
66     # 输出训练后的参数取值。
67     print "\n"
68     print "w1:", sess.run(w1)
69     print "w2:", sess.run(w2)  

原文地址:https://www.cnblogs.com/Superorange/p/8133819.html

时间: 2024-10-29 03:56:44

使用Tensorflow训练神经网络模型的相关文章

利用Tensorflow实现神经网络模型

首先看一下神经网络模型,一个比较简单的两层神经. 代码如下: # 定义参数 n_hidden_1 = 256 #第一层神经元 n_hidden_2 = 128 #第二层神经元 n_input = 784 #输入大小,28*28的一个灰度图,彩图没有什么意义 n_classes = 10 #结果是要得到一个几分类的任务 # 输入和输出 x = tf.placeholder("float", [None, n_input]) y = tf.placeholder("float&q

记一次使用Tensorflow搭建神经网络模型经历

隐去背景, 作者最近第一次用Tensorflow实现训练了几个模型, 其中遇到了一些错误, 把它记录下来 前言 以下提到的所有代码, 都可以在github上面找到. 仓库地址 https://github.com/spxcds/neural_network_code/ 这个仓库里提到的几段代码, 分别实现在从最简单的lr, 到全连接神经网络, 再到卷积神经网络. 从最简单的自己实现交叉熵损失函数, 计算L2正则化, 到后来直接调用库函数, 由简到难, 由浅入深, 截止目前为止, 只实现了MLR,

基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型

一.卷积神经网络模型知识要点卷积卷积 1.卷积 2.池化 3.全连接 4.梯度下降法 5.softmax 本次就是用最简单的方法给大家讲解这些概念,因为具体的各种论文网上都有,连推导都有,所以本文主要就是给大家做个铺垫,如有错误请指正,相互学习共同进步. 二.卷积神经网络讲解 2.1卷积神经网络作用 大家应该知道大名鼎鼎的傅里叶变换,即一个波形,可以有不同的正弦函数和余弦函数进行叠加完成,卷积神经网络也是一样,可以认为一张图片是由各种不同特征的图片叠加而成的,所以它的作用是用来提取特定的特征,举

利用Tensorflow实现卷积神经网络模型

首先看一下卷积神经网络模型,如下图: 卷积神经网络(CNN)由输入层.卷积层.激活函数.池化层.全连接层组成,即INPUT-CONV-RELU-POOL-FC池化层:为了减少运算量和数据维度而设置的一种层. 代码如下: n_input = 784 # 28*28的灰度图 n_output = 10 # 完成一个10分类的操作 weights = { #'权重参数': tf.Variable(tf.高期([feature的H, feature的W, 当前feature连接的输入的深度, 最终想得到

【TensorFlow/简单网络】MNIST数据集-softmax、全连接神经网络,卷积神经网络模型

初学tensorflow,参考了以下几篇博客: soft模型 tensorflow构建全连接神经网络 tensorflow构建卷积神经网络 tensorflow构建卷积神经网络 tensorflow构建CNN[待学习] 全连接+各种优化[待学习] BN层[待学习] 先解释以下MNIST数据集,训练数据集有55,000 条,即X为55,000 * 784的矩阵,那么Y为55,000 * 10的矩阵,每个图片是28像素*28像素,带有标签,Y为该图片的真实数字,即标签,每个图片10个数字,1所在位置

Tensorflow 对上一节神经网络模型的优化

本节涉及的知识点: 1.在程序中查看变量的取值 2.张量 3.用张量重新组织输入数据 4.简化的神经网络模型 5.标量.多维数组 6.在TensorFlow中查看和设定张量的形态 7.用softmax函数规范可变参数 8.小结:线性问题 一.在程序中查看变量的取值 x = 1 y = 2.2 z = "adc" print("x is: %d" % x) print("y is: %f" % y) print("z is: %s&quo

tensorflow 神经网络模型概览;熟悉Eager 模式;

典型神经网络模型:(图片来源:https://github.com/madalinabuzau/tensorflow-eager-tutorials) 保持更新,更多内容请关注 cnblogs.com/xuyaowen; 原文地址:https://www.cnblogs.com/xuyaowen/p/tensorflow-nn-Eager.html

自然语言处理的神经网络模型初探

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 深度学习(Deep Learning)技术对自然语言处理(NLP,Natural Language Processing)领域有着巨大的影响. 但作为初学者,您要从何处开始学习呢? 深度学习和自然语言处理都是较为广阔的领域,但每个领域重点研究些什么?在自然语言处理领域中,又是哪一方面最受深度学习的影响呢? 通过阅读本文,您会对自然语言处理中的深度学习有一个初步的认识. 阅读这篇文章后,您可以知道: 对自然语言处理领域影响最为深远的神经网络结

BP神经网络模型与学习算法

一,什么是BP "BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程.它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小.BP神经网络模型拓扑结构包括输入层(input).隐层(hide layer)和输出层(output