使用TensorFlow构建神经网络

模型:单层多神经元的结构

1.查看一下版本号

import tensorflow as tf
print(tf.__version__)

版本号:
    

2.调入官方数据集

from tensorflow.examples.tutorials.mnist import input_data
#onehot=True 使用展开的onehot
mnist=input_data.read_data_sets('.',one_hot=True)

3.定义模型

#float14 半精度 ;float64双精度
learning_rate=tf.placeholder(tf.float32)

4.模型结构定义(计算图的定义)

#维度为784
x=tf.placeholder(tf.float32,[None,784],name='x')

#定义模型权重
W=tf.Variable(tf.truncated_normal([784,10]),name='weight')

#定义偏置  使用全0
b=tf.Variable(tf.zeros([10]),name='bias')

#未经激活的输出 matmul:矩阵乘法
logits=tf.matmul(x,W)+b

#label
y=tf.placeholder(tf.float32,[None,10],name='y')

#交叉熵损失  激活函数为softmax,做操作之前先对一批数据取一下平均
cross_entropy=tf.reduce_mean(
    tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=logits))


#定义优化器  train_step前向运算一次 反向运算一次
train_step=tf.train.GradientDescentOptimizer(learning_rate).minimize(
                cross_entropy)


#对模型评估 arg_max某一维最大值的索引
correct_prediction=tf.equal(tf.arg_max(y,1),tf.arg_max(logits,1))


#计算准确率 reduce_mean--去掉batch,cast--将bool类型值转换为float32
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

5.获取定义的计算图

graph=tf.get_default_graph()
print(graph)

print(graph.as_graph_def())

运行结果:

    

print(graph.as_graph_def()):

    

 

6.启动运行

#实例
sess=tf.Session()

#初始化计算图
sess.run(tf.global_variables_initializer())


7.批次输入数据

lr=1.0
for step in range(3000):
    #动态调整学习率
    if step>1000:
        lr=0.3
    if step>2000:
        lr=0.1

    batch_x,batch_y=mnist.train.next_batch(32)

    #将train_stepp cross_entropy一起运行,也可以分开
    _,loss=session.run(
            [train_step,cross_entropy],
            feed_dict={
                    x:batch_x,
                    y:batch_y,
                    learning_rate:lr
                        })
    if(step+1)%100==0:
        print('#'*10)
        print('step [{}],entropy loss:[{}]'.format(step+1,loss))
        
        #查看训练集上的准确率
        print(sess.run(accuracy,feed_dict={x:batch_x,y:batch_y}))
        
        #查看验证集上的准确率
        print(sess.run(accuracy,feed_dict={x:mnist.test.images,
                    y:mnist.test.labels}))

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值