美文网首页
TensorFlow之简单神经网络架构

TensorFlow之简单神经网络架构

作者: 你要好好学习呀 | 来源:发表于2019-04-29 15:48 被阅读0次
import tensorflow as tf
from tensorflow .examples .tutorials .mnist import input_data
mnist=input_data .read_data_sets ('data/',one_hot= True)

#神经网络架构如下
n_input=784
n_hidden_1=256
n_hidden_2=128
n_classes=10

#输入和输出
x=tf.placeholder("float",[None,n_input ])
y=tf.placeholder ("float",[None,n_classes])

#神经网络中的各个参数
stddev=0.1 #指定方差项
weights ={
    'w1':tf.Variable(tf.random_normal([n_input,n_hidden_1],stddev=stddev )),
    'w2':tf.Variable(tf.random_normal([n_hidden_1,n_hidden_2],stddev=stddev )),
    'out':tf.Variable(tf.random_normal([n_hidden_2,n_classes],stddev=stddev ))
}
biases={
    'b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'b2': tf.Variable(tf.random_normal([n_hidden_2])),
    'out':tf.Variable(tf.random_normal([n_classes]))
}
print("NetWork Ready")

#跑模型
def multilayer_perceptron(_X,_weights,_biases):#前向传播
    layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(_X , _weights['w1']),_biases['b1']))
    layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, _weights['w2']), _biases['b2']))
    return (tf.matmul(layer_2,_weights['out'])+_biases['out'])#返回结果得分值

pred=multilayer_perceptron(x,weights,biases)#前向传播的结果

#定义损失函数
#使用交叉熵函数-tensorflow已经实现好的,第一个参数是前向传播的结果,第二个参数指的是实际的label
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))
#使用梯度下降优化器
optm =tf.train.GradientDescentOptimizer(learning_rate= 0.001).minimize(cost)
corr=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))#表现准确率
accr= tf.reduce_mean(tf.cast(corr,"float"))

init=tf.global_variables_initializer()
print("FUNCTIONS READY")

training_epochs=20#一共迭代多少次
batch_size=100
display_step=4
sess=tf.Session()
sess.run(init)
for epoch in range(training_epochs ):
    avg_cost=0
    total_batch=int(mnist.train.num_examples/batch_size)
    for i in range(total_batch):
        batch_xs,batch_ys=mnist.train.next_batch(batch_size )
        feeds = {x:batch_xs ,y:batch_ys }
        sess.run(optm,feed_dict= feeds)
        avg_cost+=sess.run(cost,feed_dict=feeds)
    avg_cost=avg_cost/total_batch
    if(epoch+1)%display_step==0:
        print("Ecopch: %03d/%03d cost: %.9f" %(epoch,training_epochs ,avg_cost))
        feeds = {x: batch_xs, y: batch_ys}
        train_acc=sess.run(accr,feed_dict= feeds )
        print("TRAIN ACCURACY: %.3f" % (train_acc ))
        feeds={x:mnist.test.images,y:mnist.test.labels}
        test_acc=sess.run(accr,feed_dict= feeds)
        print("TEST ACCURACY : %.3f" %(test_acc) )
print("OPTIMIZATION FINISHED")

相关文章

网友评论

      本文标题:TensorFlow之简单神经网络架构

      本文链接:https://www.haomeiwen.com/subject/ofglgqtx.html