tensorflow:实战Google深度学习框架(3.4.5完整的神经网络样例程序)

mac2026-09-21  8

import tensorflow as tf import numpy as np #定义训练数据batch的大小(就是一次放入多少数据) batch_size=8 #定义神经网络的参数 w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1)) w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) """ 在shape 的一个维度上使用None 可以方便使用不同的batch 大小。在训练时需要把数据分 #成比较小的batch , 但是在测试时,可以一次性使用全部的数据。当数据集比较小时这样比较 #方便测试,但数据集比较大时,将大量数据放入一个batch 吁能会导致内存溢出。 """ x=tf.placeholder(tf.float32,shape=[None,2],name='x_input') y_=tf.placeholder(tf.float32,shape=[None,1],name='y_input') #定义神经网络前向传播的过程 a=tf.matmul(x,w1) y=tf.matmul(a,w2) #定义损失函数和反向传播的算法 y=tf.sigmoid(y) 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=tf.train.AdamOptimizer(0.001).minimize(cross_entropy) #通过随机数生成一个模拟数据集 dataset_size=128 X=np.random.rand(dataset_size,2) print("x:",X) #若x1+x2<1则是正的 y=[[int(x1+x2<1)] for (x1,x2) in X] print("y:",y) #初始化变量 init=tf.global_variables_initializer() #创建一个会话来运行tensorflow程序 with tf.Session() as sess: #初始化变量 sess.run(init) print("最初w1",sess.run(w1)) print("最初w2",sess.run(w2)) #设定训练的轮数 step=5000 for i in range(step): #每次取batch_size个样本进行训练 start=(i*batch_size)%dataset_size end=min(start+batch_size,dataset_size) print("start:",start,"end:",end) #通过选取的样本训练神经网络并更新参数 sess.run(train,feed_dict={x:X[start:end],y_:y[start:end]}) if i%100==0: total_cross_entropy=sess.run(cross_entropy,feed_dict={x:X[start:end],y_:y[start:end]}) print("误差:",total_cross_entropy)

 

 

最新回复(0)