#该神经网络有x1,x2两个输入 #隐藏层有3个神经元 所以w1为2*3矩阵 #输出只有一个y 所以w2为3*1 矩阵 import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import numpy as np BATCH_SIZE = 8 seed=23455 #基于seed产生随机数 rng =np.random.RandomState(seed) #随机数返回32行2列的矩阵 表示32组数据 X=rng.rand(32,2) Y=[[int(x0+x1 < 1)] for (x0,x1) in X] #x,y代表数据集的data和label #定义神经网络的输入、参数和输出,定义前向传播过程 x=tf.placeholder(tf.float32,shape=(None,2)) #placeholder 占位 y_=tf.placeholder(tf.float32,shape=(None,1)) w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1)) # 2*3 w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))#随机生产w值 3*1 a=tf.matmul(x,w1) #隐藏层神经元a y=tf.matmul(a,w2) #最终输出y值,只有一个1*1矩阵 #定义损失函数及反向传播方法 loss=tf.reduce_mean(tf.square(y-y_)) #loss函数 均方误差y-y_(预测值和训练集的差值) train_step=tf.train.GradientDescentOptimizer(0.001).minimize(loss) #选择梯度下降,定义学习率 优化 最小化损失函数 #生成会话,训练STEPS轮 with tf.Session() as sess: init_op=tf.global_variables_initializer() sess.run(init_op) #训练模型 STEPS=3000 #迭代次数,每500次打印一次loss值,loss会逐渐减小 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: total_loss=sess.run(loss,feed_dict={x:X,y_:Y}) print(i) print(total_loss) #得到优化后的参数 print(sess.run(w1)) #用训练集训练得到最好的w后,再输入需要预测的x1,x2数据 TensorFlow中: 张量、计算图、生成会话(三个步骤) 最后的神经网络实现需要一个迭代循环
TensorFlow—实现简单神经网络
猜你喜欢
转载自blog.csdn.net/qq_40602790/article/details/83046379
今日推荐
周排行