zoukankan      html  css  js  c++  java
  • 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")

  • 相关阅读:
    Netty回调与Channel执行流程分析
    Netty执行流程分析与重要组件介绍
    HBase 介绍
    Java文件上传下载原理
    ngxtop安装和使用
    开启Nginx监控 with-http_stub_status_module
    Spring 事务模板方法设计模式
    Spring 事务管理
    JdkDynamicAopProxy 拦截器链的获得与递归执行
    CgLib实现AOP
  • 原文地址:https://www.cnblogs.com/xrj-/p/14460797.html
Copyright © 2011-2022 走看看