• tensorflow学习笔记14


    训练神经网络4

    import numpy as np
    import tensorflow as tf
    import matplotlib.pyplot as plt
    import input_data
    
    mnist = input_data.read_data_sets('data/',one_hot=True) #one_hot=True编码格式为01编码
    n_hidden_1 = 256
    n_hidden_2 = 128
    n_input = 784
    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)
    
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(pred,y)) #tensorflow中已有的交叉熵函数
    optm = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
    corr = tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
    accr = tf.reduce_mean(tf.cast(corr,"float"))
    
    init = tf.compat.v1.global_variables_initializer()
    print("FUNCTIONS READY")
    
    training_epochs = 20 #一共迭代20次
    batch_size = 100 #每一次迭代选择100个样本
    display_step = 4
    
    sess = tf.compat.v1.Session()
    sess.run(init)
    for epoch in range(training_epochs):
        avg_cost = 0
        num_batch = int(mnist.train.num_examples/batch_size)
        for i in range(num_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            sess.run(optm,feed_dict={x:batch_xs,y:batch_ys})
            feeds = {x:batch_xs,y:batch_ys}
            avg_cost += sess.run(cost,feed_dict=feeds)/num_batch
        if epoch % display_step == 0: #每四轮打印一次
            print("Epoch: %02d/%02d cost: %.6f" % (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("FINISHED")

  • 相关阅读:
    HDU 5334 Virtual Participation(2015多校第四场)
    HDU 1754 I Hate It(线段树+单点更新)
    HDU 5308 I Wanna Become A 24-Point Master(2015多校第二场)
    linux下socket调试
    linux驱动之hello_world源码与编译
    那些年优秀的HTML5活动页面
    近期Responsive web design项目经验分享-高分辨率图片处理篇
    近期Responsive web design项目经验分享
    var foo= {} ;foo.method() 和 单例模式有什么区别
    Web程序设计
  • 原文地址:https://www.cnblogs.com/xrj-/p/14460797.html
Copyright © 2020-2023  润新知