tensorflow学习序列——多层感知机实现MNIST数字识别

利用tensorflow实现多层感知机,如下:

1. 主程序:

#  实现多层感知机

import input_data
import tensorflow as tf


mnist = input_data.read_data_sets("MNIST_data/", one_hot = True);
in_units = 784;
h1_units = 300;

W1 = tf.Variable(tf.truncated_normal([in_units, h1_units], stddev = 0.1));
b1 = tf.Variable(tf.zeros([h1_units]));
W2 = tf.Variable(tf.zeros([h1_units,10]));
b2 = tf.Variable(tf.zeros([10]));

x = tf.placeholder(tf.float32, [None, in_units]);
keep_prob = tf.placeholder(tf.float32);

# 第一层
hidden1 = tf.nn.relu(tf.matmul(x,W1) + b1);
hidden1_drop = tf.nn.dropout(hidden1, keep_prob);
y = tf.nn.softmax(tf.matmul(hidden1_drop,W2) + b2);

# 第二层
y_ = tf.placeholder(tf.float32, [None,10]);
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices = [1]));


correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1));
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32));

train_step = tf.train.AdagradOptimizer(0.3).minimize(cross_entropy);

init = tf.global_variables_initializer()

# 启动会话
sess = tf.Session()
sess.run(init)

for i in range(3000):
    batch_xs, batch_ys = mnist.train.next_batch(100);
    sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys, keep_prob:0.75});

    
print(sess.run(accuracy,feed_dict={x:mnist.test.images,y_:mnist.test.labels, keep_prob:1.0})) # 准确率的执行阶段    

2. input_data.py

# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================

"""Functions for downloading and reading MNIST data."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import gzip
import os
import tempfile

import numpy
from six.moves import urllib
from six.moves import xrange  # pylint: disable=redefined-builtin
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets

你可能感兴趣的:(机器学习,tensorflow,深度学习)