TensorFlow実現論理回帰分類器
1893 ワード
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;