TensorFlow実現論理回帰分類器


TensorFlowはグーグルが発表した深い学習フレームワークで、以前も公式サイトの技術マニュアルを見たことがあるが、「紙には浅い」と思って、自分でプログラミングして実現し、実現過程で出会った問題を記録して、いつでもめくることにした.本文は論理回帰分類器の実現についてであり,関連する機械学習理論は比較的簡単であるが,ここでは後述しない.
コード:
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
 
    
def train(batch_size=100, lr=0.5, iter_num=1000):
    mnist = input_data.read_data_sets('MNIST_data', one_hot=True) #   (train, validation, test)
    
    x = tf.placeholder(tf.float32, shape=(None, 28*28))
    y = tf.placeholder(tf.float32, shape=(None, 10))
    
    w=tf.Variable(tf.truncated_normal(shape=(28*28, 10), stddev=0.5), name='Weight')
    b=tf.Variable(tf.zeros(shape=[10]), name='Bias')
    variable_initiation = tf.initialize_all_variables()
    
    probability = tf.nn.softmax(tf.matmul(x, w) + b)
    Loss = -tf.reduce_mean(y*tf.log(probability))
    trainer= tf.train.GradientDescentOptimizer(learning_rate=lr).minimize(loss=Loss)
    
    sess = tf.Session()
    sess.run(variable_initiation)
    
    for iter in range(iter_num):
        train_dataset = mnist.train.next_batch(batch_size=batch_size)
        trainer.run(session=sess, feed_dict={x:train_dataset[0], y:train_dataset[1]})()
    '''      '''
    comparision = tf.equal(tf.argmax(probability, dimension=1), tf.argmax(y, dimension=1))
    accuracy = tf.reduce_mean(tf.cast(comparision, dtype=tf.float32))
    accuracy = sess.run(fetches=accuracy, feed_dict={x:mnist.test.images, y:mnist.test.labels})
    print('The accuracy is %.3f' % accuracy)
    sess.close()
    
if __name__ == '__main__':
    train()

   :(1)             ,         eval()      ,    Session run()      ;
(2)  y=tensorflow.reduce_mean(x)  ,   y     x         ,  x  {0, 1} int32   ,    0;