• tensorflow入门(二)


    import numpy as np
    import tensorflow as tf
    import matplotlib.pyplot as plt
    
    #使用numpy生成200个随机点
    x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis]
    noise = np.random.normal(0,0.02,x_data.shape)
    y_data = np.square(x_data) + noise
    
    #定义两个placeholder
    x = tf.placeholder(tf.float32,[None,1])
    y = tf.placeholder(tf.float32,[None,1])
    
    #定义神经网络中间层
    Weights_L1 = tf.Variable(tf.random_normal([1,10]))
    biases_L1 = tf.Variable(tf.zeros([1,10]))
    Wx_plus_b_L1 = tf.matmul(x,Weights_L1) + biases_L1
    L1 = tf.nn.tanh(Wx_plus_b_L1)
    
    #定义神经网络输出层
    Weights_L2 = tf.Variable(tf.random_normal([10,1]))
    biases_L2 = tf.Variable(tf.zeros([1,1]))
    Wx_plus_b_L2 = tf.matmul(L1,Weights_L2) + biases_L2
    prediction = tf.nn.tanh(Wx_plus_b_L2)
    
    #二次代价函数
    loss = tf.reduce_mean(tf.square(y - prediction))
    #使用梯度下降法
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    with tf.Session() as sess:
        #变量初始化
        sess.run(tf.global_variables_initializer())
        for _ in range(2000):
            sess.run(train_step,feed_dict={x:x_data,y:y_data})
    
    
        #获得预测值
        prediction_value = sess.run(prediction,feed_dict={x:x_data})
        #画图
        plt.figure()
        plt.scatter(x_data,y_data)
        plt.plot(x_data,prediction_value,'r-',lw = 5)
        plt.show()

    得到结果:

    ——

    import tensorflow as tf
    from tensorflow.examples.tutorials.mnist import input_data
    
    #载入数据集
    mnist = input_data.read_data_sets("MNIST_data",one_hot=True)
    
    #每个批次的大小
    batch_size = 100
    #计算一共有多少个批次
    n_batch = mnist.train.num_examples // batch_size
    
    #定义两个placeholder
    x = tf.placeholder(tf.float32,[None,784]) #图片
    y = tf.placeholder(tf.float32,[None,10]) #标签
    
    #创建一个简单的神经网络
    w = tf.Variable(tf.zeros([784,10]))
    b = tf.Variable(tf.zeros([10]))
    prediction = tf.nn.softmax(tf.matmul(x,w)+b)
    
    #二次代价函数
    loss = tf.reduce_mean(tf.square(y-prediction))
    #梯度下降算法
    train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)
    
    #初始化变量
    init = tf.global_variables_initializer()
    
    #结果存放在一个bool类型的列表中,argmax()返回一维张量中最大值所在的位置,equal函数判断两者是否相等
    correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
    #求准确率,cast:将bool型转换为0,1然后求平均正好算到是准确率
    accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
    
    with tf.Session() as sess:
        sess.run(init)
        for epoch in range(21):
            for batch in range(batch_size):#next_batch:不断获取下一组数据
                batch_xs,batch_ys = mnist.train.next_batch(batch_size)
                sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys})
    
            acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})
            print("Iter "+str(epoch)+",Testing Accuracy "+str(acc))

    训练结果:

    Iter 0,Testing Accuracy 0.657
    Iter 1,Testing Accuracy 0.7063
    Iter 2,Testing Accuracy 0.7458
    Iter 3,Testing Accuracy 0.7876
    Iter 4,Testing Accuracy 0.8203
    Iter 5,Testing Accuracy 0.8406
    Iter 6,Testing Accuracy 0.8492
    Iter 7,Testing Accuracy 0.8586
    Iter 8,Testing Accuracy 0.8642
    Iter 9,Testing Accuracy 0.8678
    Iter 10,Testing Accuracy 0.8709
    Iter 11,Testing Accuracy 0.8736
    Iter 12,Testing Accuracy 0.8751
    Iter 13,Testing Accuracy 0.8784
    Iter 14,Testing Accuracy 0.88
    Iter 15,Testing Accuracy 0.8816
    Iter 16,Testing Accuracy 0.883
    Iter 17,Testing Accuracy 0.8841
    Iter 18,Testing Accuracy 0.8847
    Iter 19,Testing Accuracy 0.8855
    Iter 20,Testing Accuracy 0.8878

    可见,通过多次的训练,识别的准确值不断提高

    ——

  • 相关阅读:
    flask 非要将视图和app放在一个空间
    spring mvc 实用的思想
    不能在windows上使用但值得关注的项目
    AI 医疗
    我也是混乱了同步盘和网盘
    常用free文献数据库
    机器学习中如何处理不平衡数据?
    自己制作的学习笔记视屏,还有记录的代码。
    函数的指针(一)写一个能对任意数组排序的冒泡排序
    自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
  • 原文地址:https://www.cnblogs.com/cunyusup/p/8635309.html
Copyright © 2020-2023  润新知