zoukankan      html  css  js  c++  java
  • tensorflow weight_variable going

     1 # coding: utf-8
     2 import tensorflow as tf
     3 from tensorflow.examples.tutorials.mnist import input_data
     4 
     5 
     6 def weight_variable(shape):
     7     initial = tf.truncated_normal(shape, stddev=0.1)
     8     return tf.Variable(initial)
     9 
    10 
    11 def bias_variable(shape):
    12     initial = tf.constant(0.1, shape=shape)
    13     return tf.Variable(initial)
    14 
    15 
    16 def conv2d(x, W):
    17     return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
    18 
    19 
    20 def max_pool_2x2(x):
    21     return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
    22                           strides=[1, 2, 2, 1], padding='SAME')
    23 
    24 
    25 if __name__ == '__main__':
    26     # 读入数据
    27     mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    28     # x为训练图像的占位符、y_为训练图像标签的占位符
    29     x = tf.placeholder(tf.float32, [None, 784])
    30     y_ = tf.placeholder(tf.float32, [None, 10])
    31 
    32     # 将单张图片从784维向量重新还原为28x28的矩阵图片
    33     x_image = tf.reshape(x, [-1, 28, 28, 1])
    34 
    35     # 第一层卷积层
    36     W_conv1 = weight_variable([5, 5, 1, 32])
    37     b_conv1 = bias_variable([32])
    38     h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
    39     h_pool1 = max_pool_2x2(h_conv1)
    40 
    41     # 第二层卷积层
    42     W_conv2 = weight_variable([5, 5, 32, 64])
    43     b_conv2 = bias_variable([64])
    44     h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
    45     h_pool2 = max_pool_2x2(h_conv2)
    46 
    47     # 全连接层,输出为1024维的向量
    48     W_fc1 = weight_variable([7 * 7 * 64, 1024])
    49     b_fc1 = bias_variable([1024])
    50     h_pool2_flat = tf.reshape(h_pool2, [-1, 7 * 7 * 64])
    51     h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
    52     # 使用Dropout,keep_prob是一个占位符,训练时为0.5,测试时为1
    53     keep_prob = tf.placeholder(tf.float32)
    54     h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
    55 
    56     # 把1024维的向量转换成10维,对应10个类别
    57     W_fc2 = weight_variable([1024, 10])
    58     b_fc2 = bias_variable([10])
    59     y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2
    60 
    61     # 我们不采用先Softmax再计算交叉熵的方法,而是直接用tf.nn.softmax_cross_entropy_with_logits直接计算
    62     cross_entropy = tf.reduce_mean(
    63         tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y_conv))
    64     # 同样定义train_step
    65     train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
    66 
    67     # 定义测试的准确率
    68     correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1))
    69     accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    70 
    71     sess = tf.InteractiveSession()
    72     sess.run(tf.global_variables_initializer())
    73 
    74     for i in range(20000):
    75         batch = mnist.train.next_batch(50)
    76         # 每100步报告一次在验证集上的准确度
    77         if i % 100 == 0:
    78             train_accuracy = accuracy.eval(feed_dict={
    79                 x: batch[0], y_: batch[1], keep_prob: 1.0})
    80             print("step %d, training accuracy %g" % (i, train_accuracy))
    81         train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
    82 
    83     # 训练结束后报告在测试集上的准确度
    84     print("test accuracy %g" % accuracy.eval(feed_dict={
    85         x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))

    #coding: utf-8
    from tensorflow.examples.tutorials.mnist import input_data
    import scipy.misc
    import os

    # 读取MNIST数据集。如果不存在会事先下载。
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

    # 我们把原始图片保存在MNIST_data/raw/文件夹下
    # 如果没有这个文件夹会自动创建
    save_dir = 'MNIST_data/raw/'
    if os.path.exists(save_dir) is False:
    os.makedirs(save_dir)

    # 保存前20张图片
    for i in range(20):
    # 请注意,mnist.train.images[i, :]就表示第i张图片(序号从0开始)
    image_array = mnist.train.images[i, :]
    # TensorFlow中的MNIST图片是一个784维的向量,我们重新把它还原为28x28维的图像。
    image_array = image_array.reshape(28, 28)
    # 保存文件的格式为 mnist_train_0.jpg, mnist_train_1.jpg, ... ,mnist_train_19.jpg
    filename = save_dir + 'mnist_train_%d.jpg' % i
    # 将image_array保存为图片
    # 先用scipy.misc.toimage转换为图像,再调用save直接保存。
    scipy.misc.toimage(image_array, cmin=0.0, cmax=1.0).save(filename)

    print('Please check: %s ' % save_dir)

  • 相关阅读:
    Java实现各种内部排序算法
    Java实现堆排序(大根堆)
    Java对象的序列化和反序列化
    Java实现链式存储的二叉查找树(递归方法)
    337. House Robber III(包含I和II)
    318. Maximum Product of Word Lengths
    114. Flatten Binary Tree to Linked List
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    96. Unique Binary Search Trees(I 和 II)
  • 原文地址:https://www.cnblogs.com/Asuphy/p/10975925.html
Copyright © 2011-2022 走看看