第一讲:人工智能概述

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_随机数

   

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_数据_02

 

第三讲:Tensorflow框架

 

 Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_数据集_03

 

 Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_反向传播_04

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_反向传播_05

前向传播:

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_反向传播_06

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_数据集_07

反向传播:

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_随机数_08

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_随机数_09

Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股_数据_10

总的代码:

#coding:utf-8
#1.导入模块,生成模拟数据集
import tensorflow as tf
import numpy as np #np为科学计算模块
BATCH_SIZE = 8#表示一次喂入NN多少组数据,不能过大,会噎着
seed = 23455

#基于seed产生随机数
rng = np.random.RandomState(seed)
#随机数返回32*2列的矩阵,每行2个表示属性(体积和质量),作为输入数据集
X = rng.rand(32,2)
#从x这个矩阵中,取出每一行,判断如果和<1,y=1,否则,y=0
#作为输入数据集的标签(正确答案)
Y=[[int(x0+x1<1)] for (x0,x1) in X]
print("X:\n",X)
print("Y:\n",Y)

#2.定义神经网络的输入,参数和输出,定义前向传播过程
x = tf.placeholder(tf.float32,(None,2))
y_ = tf.placeholder(tf.float32,(None,1))

w1 = tf.Variable(tf.random_normal([2,3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3,1], stddev=1, seed=1))

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

#3.定义损失函数及反向传播方法
loss = tf.reduce_mean(tf.square(y-y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)#梯度下降
#train_step = tf.train.MomentumOptimizer(0.001,0.9).minimize(loss)
#train_step = tf.train.AdamOptimizer(0.001,0.9).minimize(loss)

#4.生成会话,训练STEPS轮
with tf.Session() as sess:
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    #输出目前还未训练的参数取值
    print("w1:\n", sess.run(w1))
    print("w2:\n", sess.run(w2))
    print("\n")

#训练模型
    STEPS=3000
    #训练3000轮,每次从训练集中挑选strart到end的数据,喂入数据
    for i in range(STEPS):
        start = (i*BATCH_SIZE)%32
        end = start + BATCH_SIZE
        sess.run(train_step, feed_dict={x:X[start:end], y_:Y[start:end]})
        if i%500 == 0:#每500次打印一轮
            total_loss = sess.run(loss,feed_dict={x:X,y_:Y})
            print("After %d training steps,loss on all data is %g" % (i,total_loss))


    #输出训练后的参数取值
    print("\n")
    print("w1:\n", sess.run(w1))
    print("w2:\n", sess.run(w2))

更多文章请关注《万象专栏》