tensorflow100天-第4天:逻辑回归

代码

# coding:utf-8
# zhong
import  tensorflow as tf

# Import MINST data
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

learning_rate = 0.01
training_epochs = 25
batch_size = 100
display_step = 1

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))

pred = tf.nn.softmax(tf.matmul(x, w) + b)
cost = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_indices=1))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    for epoch in range(training_epochs):
        avg_cost = 0
        total_batch = int(mnist.train.num_examples/batch_size)
        for i in range(total_batch):
            xs, ys = mnist.train.next_batch(batch_size)
            _,c = sess.run([optimizer, cost], feed_dict={x: xs, y:ys})

            avg_cost += c/total_batch
        
        if (epoch + 1) % display_step == 0:
            print('epoch:', '%04d'%(epoch+1),'cost:','{:.9f}'.format(avg_cost))
    
    print('finished')

    # Test model
    correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
    # Calculate accuracy for 3000 examples
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    print("Accuracy:", accuracy.eval({x: mnist.test.images[:3000], y: mnist.test.labels[:3000]}))

总结

  1. tensorflow的交叉熵的写法
  2. pred应该是一个静态图,可以直接进行验证,eval,比pytorch灵活
  3. 声明输入变量占位符的形状,tf.Variable(tf.float32,[None, 784])

猜你喜欢

转载自blog.csdn.net/u011622208/article/details/85270926
今日推荐