第一讲:人工智能概述


第三讲:Tensorflow框架



前向传播:


反向传播:



总的代码:
#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))
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv14617