资源简介
文件中原始代码利用CNN对CIFAR10数据集进行分类,准确度达到0.67,优化代码通过权重正则化、数据增强,增加全连接层等方式进行优化,准确度达到0.85。
代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Tue Jan 8 14:04:20 2019
@author: shihui
“““
import tensorflow as tf
import numpy as np
import cifar10cifar10_input
import time
‘‘‘
初始化权重函数
‘‘‘
def variable_with_weight_loss(shapestdw1):
var = tf.Variable(tf.truncated_normal(shapestddev=std)dtype=tf.float32)
if w1 is not None:
weight_loss = tf.multiply(tf.nn.l2_loss(var)w1name=“weight_loss“)
tf.add_to_collection(“losses“weight_loss)
return var
‘‘‘
损失函数
‘‘‘
def loss_func(logitslabels):
labels = tf.cast(labelstf.int32)
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits
labels=labelsname=“cross_entropy_per_example“)
cross_entropy_mean = tf.reduce_mean(tf.reduce_sum(cross_entropy))
tf.add_to_collection(“losses“cross_entropy_mean)
return tf.add_n(tf.get_collection(“losses“)name=“total_loss“)
if __name__ == “__main__“:
#设置最大迭代次数
max_steps = 10000
#设置每次训练的数据大小
batch_size = 128
#下载解压数据
cifar10.maybe_download_and_extract()
# 设置数据的存放目录
cifar10_dir = “C:/Users/29811/Desktop/cifar10/dataset/cifar-10-batches-bin“
#获取数据增强后的训练集数据
images_trainlabels_train = cifar10_input.distorted_inputs(cifar10_dirbatch_size)
#获取裁剪后的测试数据
images_testlabels_test = cifar10_input.inputs(eval_data=Truedata_dir=cifar10_dir
batch_size=batch_size)
#定义模型的输入和输出数据
image_holder = tf.placeholder(dtype=tf.float32shape=[batch_size24243])
label_holder = tf.placeholder(dtype=tf.int32shape=[batch_size])
#设计第一层卷积
weight1 = variable_with_weight_loss(shape=[55364]std=5e-2w1=0)
kernel1 = tf.nn.conv2d(image_holderweight1[1111]padding=“SAME“)
bais1 = tf.Variable(tf.constant(0.0dtype=tf.float32shape=[64]))
conv1 = tf.nn.relu(tf.nn.bias_add(kernel1bais1))
pool1 = tf.nn.max_pool(conv1[1331][1221]padding=“SAME“)
norm1 = tf.nn.lrn(pool14bias=1.0alpha=0.001 / 9beta=0.75)
#设计第二层卷积
weight2 = variable_with_weight_loss(shape=[556464]std=5e-2w1=0)
kernel2 = tf.nn.conv2d(norm1weight2[1111]padding=“SAME“)
bais2 = tf.Variable(tf.constant(0.1dtype=tf.float32shape=[64]))
conv2 = tf.nn.relu(tf.nn.bias_add(kernel2bais2))
norm2 = tf.nn.lrn(conv24bias=1.0alpha=0.01 / 9beta=0.75)
pool2 = tf.nn.max_pool(norm2[1331][1221]padding=“SAME“)
#第一层全连接层
reshape = tf.reshape(pool2[batch_size-1])
dim = reshape.get_shape()[1].value
weight3 = variable_with_weight_loss([dim384]std=0.04w1=0.004)
bais3 = tf.Variable(tf.constant(0.1shape=[384]dtype=tf.float32))
local3 = tf.nn.relu(tf.matmul(reshapeweight3)+bais3)
#第二层全连接层
weight4 = variable_with_weight_loss([384192]std=0.04w1=0.004)
bais4 = tf.Variable(tf.constant(0.1shape=[192]dtype=tf.float32))
local4 = tf.nn.relu(tf.matm
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5367 2020-05-14 18:03 优化后.py
文件 5751 2020-05-14 19:18 原始.py
----------- --------- ---------- ----- ----
11118 2
相关资源
- cython_bbox.so
- TensorFlow实战中实现word2vec代码含中文
- 适合的新手-CNN代码
- opencv_tensorflow
- tensorflow2.0实现mnist手写数字识别代码
- Python-TensorFlow语义分割组件
- tensorflow_random_forest_demo.py
- CNN网络识别Mnist的源码,有详细注释,
- CNN_源代码
- faster rcnn end-to-end loss曲线的绘制
- 卷积神经网络回归模型
- Tensorflow-BiLSTM分类
- TensorFlow实现人脸识别(3)--------对人
- Python-手势识别使用在TensorFlow中卷积神
- Python+Tensorflow+CNN实现车牌识别的
- 基于TensorFlow实现的闲聊机器人
- CBAM_MNIST.py
- 利用keras实现的cnn卷积神经网络对手写
- AI智能五子棋Python代码
- TensorFlow 实现 Yolo
- 基于tensorflow的遥感影像分类
- 安装步骤。提取码也在里面
- 神经网络模型python模板
- autoencoder自编码器tensorflow代码
- CNN卷积神经网络TensorFlow代码
- Tensorflow笔记-中国大学全部讲义源代码
- DeepLab-ResNet-101
- 用自己的数据制作python版本cifar10数据
- 基于tensorflow的二分类的python实现注释
- tensorflow的ckpt文件转pb模型文件
评论
共有 条评论