Tensorflow学习笔记(第三天)—卷积神经网络

     对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组大小为32x32的RGB图像进行分类,这些图像涵盖了10个类别: 飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船以及卡车。
一、cifar10.py代码:

# Copyright 2015 Google Inc. 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. 
# ============================================================================== 
"""Builds the CIFAR-10 network.
Summary of available functions:
 # Compute input images and labels for training. If you would like to run
 # evaluations, use input() instead.
 inputs, labels = distorted_inputs()
 # Compute inference on the model inputs to make a prediction.
 predictions = inference(inputs)
 # Compute the total loss of the prediction with respect to the labels.
 loss = loss(predictions, labels)
 # Create a graph to run one step of training with respect to the loss.
 train_op = train(loss, global_step)
""" 
# pylint: disable=missing-docstring 
from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 
import gzip 
import os 
import re 
import sys 
import tarfile 
import tensorflow.python.platform 
from six.moves import urllib 
import tensorflow as tf 
import cifar10_input 
FLAGS = tf.app.flags.FLAGS 
# Basic model parameters. 
tf.app.flags.DEFINE_integer('batch_size', 128, 
                            """Number of images to process in a batch.""") 
tf.app.flags.DEFINE_string('data_dir', '/tmp/cifar10_data', 
                           """Path to the CIFAR-10 data directory.""") 
# Global constants describing the CIFAR-10 data set. 
IMAGE_SIZE = cifar10_input.IMAGE_SIZE 
NUM_CLASSES = cifar10_input.NUM_CLASSES 
NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN = cifar10_input.NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN 
NUM_EXAMPLES_PER_EPOCH_FOR_EVAL = cifar10_input.NUM_EXAMPLES_PER_EPOCH_FOR_EVAL 
# Constants describing the training process. 
MOVING_AVERAGE_DECAY = 0.9999     # The decay to use for the moving average. 
NUM_EPOCHS_PER_DECAY = 350.0      # Epochs after which learning rate decays. 
LEARNING_RATE_DECAY_FACTOR = 0.1  # Learning rate decay factor. 
INITIAL_LEARNING_RATE = 0.1       # Initial learning rate. 
# If a model is trained with multiple GPU's prefix all Op names with tower_name 
# to differentiate the operations. Note that this prefix is removed from the 
# names of the summaries when visualizing a model. 
TOWER_NAME = 'tower' 
DATA_URL = 'http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz' 
def _activation_summary(x): 
  """Helper to create summaries for activations.
  Creates a summary that provides a histogram of activations.
  Creates a summary that measure the sparsity of activations.
  Args:
    x: Tensor
  Returns:
    nothing
  """ 
  # Remove 'tower_[0-9]/' from the name in case this is a multi-GPU training 
  # session. This helps the clarity of presentation on tensorboard. 
  tensor_name = re.sub('%s_[0-9]*/' % TOWER_NAME, '', x.op.name) 
  tf.summary.histogram(tensor_name + '/activations', x) 
  tf.summary.scalar(tensor_name + '/sparsity', tf.nn.zero_fraction(x)) 
def _variable_on_cpu(name, shape, initializer): 
  """Helper to create a Variable stored on CPU memory.
  Args:
    name: name of the variable
    shape: list of ints
    initializer: initializer for Variable
  Returns:
    Variable Tensor
  """ 
  with tf.device('/cpu:0'): 
    var = tf.get_variable(name, shape, initializer=initializer) 
  return var 
def _variable_with_weight_decay(name, shape, stddev, wd): 
  """Helper to create an initialized Variable with weight decay.
  Note that the Variable is initialized with a truncated normal distribution.
  A weight decay is added only if one is specified.
  Args:
    name: name of the variable
    shape: list of ints
    stddev: standard deviation of a truncated Gaussian
    wd: add L2Loss weight decay multiplied by this float. If None, weight
        decay is not added for this Variable.
  Returns:
    Variable Tensor
  """ 
  var = _variable_on_cpu(name, shape, 
                         tf.truncated_normal_initializer(stddev=stddev)) 
  if wd: 
    weight_decay = tf.multiply(tf.nn.l2_loss(var), wd, name='weight_loss') 
    tf.add_to_collection('losses', weight_decay) 
  return var 
def distorted_inputs(): 
  """Construct distorted input for CIFAR training using the Reader ops.
  Returns:
    images: Images. 4D tensor of [batch_size, IMAGE_SIZE, IMAGE_SIZE, 3] size.
    labels: Labels. 1D tensor of [batch_size] size.
  Raises:
    ValueError: If no data_dir
  """ 
  if not FLAGS.data_dir: 
    raise ValueError('Please supply a data_dir') 
  data_dir = os.path.join(FLAGS.data_dir, 'cifar-10-batches-bin') 
  return cifar10_input.distorted_inputs(data_dir=data_dir, 
                                        batch_size=FLAGS.batch_size) 
def inputs(eval_data): 
  """Construct input for CIFAR evaluation using the Reader ops.
  Args:
    eval_data: bool, indicating if one should use the train or eval data set.
  Returns:
    images: Images. 4D tensor of
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值