TensorFlow:实战Goole深度学习框架第三章学习笔记
2018-01-31 23:27
369 查看
import tensorflow as tf from numpy.random import RandomState # BATCH_SIZE这是定义的一个数量,即一次训练模型,投入的样例数,按理说应该是一次投入所有训练数据的 # 但是实际操作中一次投入太多数据,会导致电脑死机,因此只好对投入样例数,进行限制 BATCH_SIZE = 8 # 生成模拟数据 # randomState 函数中数字1,相当于一个seed种子,每次产生的随机数都是相同的 rdm = RandomState(1) # 产生一个128行×2列的随机矩阵 X = rdm.rand(128, 2) # 产生一个布尔型结果矩阵128×1 Y = [[int(x0 + x1) < 1] for (x0, x1) in X] # 定义神经网络的常量,参数,输入节点,输出节点,以及前向传播过程 # Variable定义一个变量,需要调用初始化,才能产生值 # random_normal 产生一个正太随机矩阵,shape=[2,3],stddev是正太分布的标准差,seed随机数种子,设置后每次产生的数字都相同 w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1)) w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) # placeholder占位符,执行时,在通过feed_dict将值传入,dtype:数据类型,shape:数据形状,name:名称 # 如果在定义占位符时,不能确定值的形状时,用None表示 x = tf.placeholder(tf.float32, shape=(None, 2), name="x-input") y_ = tf.placeholder(tf.float32, shape=(None, 1), name="y-input") # 前向传播的过程 # matmul就是矩阵相乘 a = tf.matmul(x, w1) y = tf.matmul(a, w2) # 定义损失函数及反向传播算法 # cross_entropy是交叉熵 # tf.clip_by_value(A, min, max):输入一个张量A,把A中的每一个元素的值都压缩在min和max之间。小于min的让它等于min,大于max的元素的值等于max cross_entropy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)) + (1 - y_) * tf.log(tf.clip_by_value(1 - y, 1e-10, 1.0))) # train_step 就是每次可训练出一组w就是一次反向传播 # 下面给出里三种反向传播的算法传入的是学习率 train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) # train_step=tf.train.GradientDescentOptimizer(0.001).minimize(cross_entropy) # train_step=tf.train.MomentumOptimizer(0.001,0.9).minimize(cross_entropy) # 创建一个会话来运行Tensorflow程序,反复运行反向传播 # tf中运行必须放在session对象中,且运行过后,要关闭session with tf.Session()as sess: # 初始化变量,也就是上面的Variable变量 init_op = tf.global_variables_initializer() sess.run(init_op) # 输出目前(未经训练)的参数取值 print("\n") print("w1:\n", sess.run(w1)) print("w2:\n", sess.run(w2)) # 训练模型 # 训练步数 STEPS = 5000 for i in range(STEPS): start = (i * BATCH_SIZE) % 128 end = (i * BATCH_SIZE) % 128 + BATCH_SIZE sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]}) if i % 1000 == 0: total_cross_entropy = sess.run(cross_entropy, feed_dict={x: X, y_: Y}) print("After %d training steps,cross entropy on all data is %g" % (i, total_cross_entropy)) # 输出训练后的参数模型 print("\n") print("w1:\n", sess.run(w1)) print("w2:\n", sess.run(w2))
相关文章推荐
- TensorFlow:实战Google深度学习框架(二)实现简单神经网络
- TensorFlow:实战Google深度学习框架(四)MINIST数据集识别问题
- [置顶] windows10 tensorflow(二)原理实战之回归分析,深度学习框架(梯度下降法求解回归参数)
- TensorFlow:实战Google深度学习框架(五)图像识别与卷积神经网络
- 【备忘】最新深度学习框架-Tensorflow案例实战视频课程下载
- Tensorflow 实战google深度学习框架 08 变量域
- TensorFlow:实战Google深度学习框架(六)图像数据处理
- Tensorflow 实战Google深度学习框架(完整版) 百度网盘
- Tensorflow 实战google深度学习框架 02
- Tensorflow 实战google深度学习框架 05 学习率设置
- (Tensorflow之八)MNIST数字识别源码--实战Google深度学习框架5.2小节
- Tensorflow 实战Google深度学习框架
- TensorFlow:实战Google深度学习框架(一)计算、数据、运行模型
- Tensorflow 实战google深度学习框架 01
- Tensorflow 实战google深度学习框架 03
- 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
- Tensorflow 实战google深度学习框架 04
- 迁移学习源码全注释 - 《Tensorflow 实战 Google 深度学习框架》源码注释
- Tensorflow 实战google深度学习框架 10 pb文件的保存&加载
- TensorFlow:实战Google深度学习框架,数据增强