import tensorflow as tf
import numpy as np
#tf.reset_default_graph()
#定义测试集
def train_data():
x = [[0.2],[0.4],[0.7],[1.2],[1.4],[1.8],[1.9],[2],[0.11],[0.16],[0.5]];
y = [[1,0],[1,0],[1,0],[0,1],[0,1],[0,1],[0,1],[1,0],[1,0],[1,0],[1,0]];
return (x,y);
def test_data():
x = [[0.3],[0.6],[0.8],[1.3],[1.5]]
y = [[1,0],[1,0],[1,0],[0,1],[0,1]]
return (x,y)
#定义生成权重W的函数,形参为W的维度,权重采用正态分布初始化
num_w=0
def weight_variable(shape):
#定义全局变量,方便连续为权重命名
global num_w
name = 'weight'+str(num_w)
w = tf.get_variable(name,shape=shape,initializer=tf.random_normal_initializer(stddev=1,dtype=tf.float32))
num_w+=1
return w
#定义生成偏置b的函数,形参为b的形状,偏执采用正态分布初始化
num_b = 0
def bias_variable(shape):
global num_b
name = 'biase'+str(num_b)
b = tf.get_variable(name,shape=shape,initializer=tf.random_normal_initializer(stddev=1,dtype=tf.float32))
num_b+=1
return b
#定义输入输出占位符
x = tf.placeholder(dtype=tf.float32,shape=[None,1],name='x-imput')
y_= tf.placeholder(dtype=tf.float32,shape=[None,2],name='y-input')
#定义两层网络的权重和偏置
#隐层
w1 = weight_variable([1,3])
b1 = bias_variable([3])
w2 = weight_variable([3,2])
b2 = bias_variable([2])
#定义计算过程,第一层权重w1和偏置b1,激活函数为sigmoid(输出层权重w2和偏置b2,无激活函数)
layer1 = tf.nn.sigmoid(tf.matmul(x,w1)+b1)
y = tf.matmul(layer1,w2)+b2
#定义损失函数为l2损失
loss = tf.nn.l2_loss(y-y_)
#定义优化方法为梯度下降,学习率为0.001,优化目标为最小化损失函数
train_op = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(loss)
#以分类正确率作为评价标准
correct_predition = tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_predition,tf.float32))
#训练模型
with tf.Session() as sess:
#变量初始化
sess.run(tf.global_variables_initializer())
#定义训练数据与标签
x_train = train_data()[0]
y_train = train_data()[1]
#给占位符喂数据并进行10000轮训练
for i in range(10000):
sess.run(train_op,feed_dict = {x:x_train,y_:y_train})
if i%1000 == 0:
print('epoch:',i,'test accuracy:',sess.run(accuracy,feed_dict={x:test_data()[0],y_:test_data()[1]}))
#在测试集上做预测并输出正确率
print(sess.run(accuracy,feed_dict={x:test_data()[0],y_:test_data()[1]}))
TensorFlow编程基础4(小白笔记)(全连接神经网络)
最新推荐文章于 2024-10-21 00:00:00 发布
该博客展示了如何利用TensorFlow构建一个两层神经网络,包括定义输入输出占位符,权重和偏置初始化,前向传播,损失函数,梯度下降优化器以及训练过程。在训练过程中,模型在测试集上的准确率被监控和打印。
摘要由CSDN通过智能技术生成