# 《实战》tensorflow搭建神经网络完成图像分类任务

### 《实战》tensorflow搭建神经网络完成图像分类任务

1.模型概述

Mnist的数据集的数据维度为28 _28_1的一个图像数据，将数据传入到一个基础的神经网络中，通过前向和反向传播，修正模型的参数，将最终结果映射到一个一个softmax的函数中，输出对当前10个类别的预测的概率值。

; 2 基本参数设置

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("data/", one_hot=True)


numClasses = 10
inputSize = 784
numHiddenUnits = 50
trainingIterations = 10000
batchSize = 100


X = tf.placeholder(tf.float32, shape = [None, inputSize])
y = tf.placeholder(tf.float32, shape = [None, numClasses])


W1 = tf.Variable(tf.truncated_normal([inputSize, numHiddenUnits], stddev=0.1))
B1 = tf.Variable(tf.constant(0.1), [numHiddenUnits])
W2 = tf.Variable(tf.truncated_normal([numHiddenUnits, numClasses], stddev=0.1))
B2 = tf.Variable(tf.constant(0.1), [numClasses])

1. 基本模型构建

## 3.1 神经网络模型

[En]

After the basic parameter settings are built, the basic network model architecture can be built.

hiddenLayerOutput = tf.matmul(X, W1) + B1
hiddenLayerOutput = tf.nn.relu(hiddenLayerOutput)
finalOutput = tf.matmul(hiddenLayerOutput, W2) + B2
finalOutput = tf.nn.relu(finalOutput)


## 3.2 优化器与损失函数

[En]

The loss function is given to the optimizer with gradient decline, and the learning rate is 0.1, in which the loss value is calculated to be the minimum.

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels = y, logits = finalOutput))
opt = tf.train.GradientDescentOptimizer(learning_rate = .1).minimize(loss)



[En]

The prediction results of the model and the real results are calculated to obtain the accuracy of the current model.

correct_prediction = tf.equal(tf.argmax(finalOutput,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))



## 3.3 迭代优化

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

for i in range(trainingIterations):
batch = mnist.train.next_batch(batchSize)
batchInput = batch[0]
batchLabels = batch[1]
_, trainingLoss = sess.run([opt, loss], feed_dict={X: batchInput, y: batchLabels})
if i%1000 == 0:
trainAccuracy = accuracy.eval(session=sess, feed_dict={X: batchInput, y: batchLabels})
print ("step %d, training accuracy %g"%(i, trainAccuracy))



step 0, training accuracy 0.13
step 1000, training accuracy 0.79
step 2000, training accuracy 0.83
step 3000, training accuracy 0.88
step 4000, training accuracy 0.91
step 5000, training accuracy 0.87
step 6000, training accuracy 0.89
step 7000, training accuracy 0.84
step 8000, training accuracy 0.89
step 9000, training accuracy 1

1. 双层的神经网络

[En]

Similarly, we can also add a corresponding middle layer to the above network to complete the extraction of the current data features.

[En]

In general, the more layers of the neural network, the more information can be obtained from the feature extraction of the data, but generally the effect of less than 8 layers is better.

numHiddenUnitsLayer2 = 100
trainingIterations = 10000

X = tf.placeholder(tf.float32, shape = [None, inputSize])
y = tf.placeholder(tf.float32, shape = [None, numClasses])

W1 = tf.Variable(tf.random_normal([inputSize, numHiddenUnits], stddev=0.1))
B1 = tf.Variable(tf.constant(0.1), [numHiddenUnits])
W2 = tf.Variable(tf.random_normal([numHiddenUnits, numHiddenUnitsLayer2], stddev=0.1))
B2 = tf.Variable(tf.constant(0.1), [numHiddenUnitsLayer2])
W3 = tf.Variable(tf.random_normal([numHiddenUnitsLayer2, numClasses], stddev=0.1))
B3 = tf.Variable(tf.constant(0.1), [numClasses])

hiddenLayerOutput = tf.matmul(X, W1) + B1
hiddenLayerOutput = tf.nn.relu(hiddenLayerOutput)
hiddenLayer2Output = tf.matmul(hiddenLayerOutput, W2) + B2
hiddenLayer2Output = tf.nn.relu(hiddenLayer2Output)
finalOutput = tf.matmul(hiddenLayer2Output, W3) + B3

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels = y, logits = finalOutput))
opt = tf.train.GradientDescentOptimizer(learning_rate = .1).minimize(loss)

correct_prediction = tf.equal(tf.argmax(finalOutput,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

for i in range(trainingIterations):
batch = mnist.train.next_batch(batchSize)
batchInput = batch[0]
batchLabels = batch[1]
_, trainingLoss = sess.run([opt, loss], feed_dict={X: batchInput, y: batchLabels})
if i%1000 == 0:
train_accuracy = accuracy.eval(session=sess, feed_dict={X: batchInput, y: batchLabels})
print ("step %d, training accuracy %g"%(i, train_accuracy))

testInputs = mnist.test.images
testLabels = mnist.test.labels
acc = accuracy.eval(session=sess, feed_dict = {X: testInputs, y: testLabels})
print("testing accuracy: {}".format(acc))


step 0, training accuracy 0.1
step 1000, training accuracy 0.97
step 2000, training accuracy 0.98
step 3000, training accuracy 1
step 4000, training accuracy 0.99
step 5000, training accuracy 1
step 6000, training accuracy 0.99
step 7000, training accuracy 1
step 8000, training accuracy 0.99
step 9000, training accuracy 1
testing accuracy: 0.9700999855995178

Original: https://blog.csdn.net/qq_44951759/article/details/124387350
Author: 驭风少年君
Title: 《实战》tensorflow搭建神经网络完成图像分类任务

(0)

### 大家都在看

• #### 遥感图像小目标检测算法

### 回答1： 遥感图像_变化检测是一种常见的 _遥感_应用，能够自动化地检测出地表覆盖类型和空间位置的变化。MATLAB在 _遥感图像_变化检测方面提供了多种 _算法_和工具，…

人工智能 2023年7月11日
0117
• #### 基于pytorch的图像识别基础完整教程

一、数据集爬取 现在的深度学习对数据集量的需求越来越大了，也有了许多现成的数据集可供大家查找下载，但是如果你只是想要做一下深度学习的实例以此熟练一下或者找不到好的数据集，那么你也可…

人工智能 2023年7月21日
0147
• #### （一) 双目立体视觉介绍

文章目录 1 针孔相机模型 2.双目相机模型 3.立体校正(共面行对准、极线校正) * 3.1极线约束 3.2Bouguet算法 3.3OpenCV API 介绍 4. 立体匹配与…

人工智能 2023年6月10日
0140
• #### 逻辑回归算法

目录 * – 引言 – 一、逻辑回归算法的原理 – + 1.1 预测函数 + 1.2 损失函数（代价函数） – 二、案例实现 &#8…

人工智能 2023年6月17日
0152
• #### 第十三周数据预处理实验

实验任务 准备工作 学习数据预处理描述性分析的内容 在学习通下载文件”insurance.csv”和”doc_sim.csv” 实验…

人工智能 2023年7月18日
0135
• #### 【数字图像处理课程设计】期中、期末综合考试题目整理总结（共四个图像处理算法应用题）

目录 一、下面两幅图像中有几处不同，编程把它们找出来、并在图中突出显示（关键步骤不能调用内置函数）。 1.算法原理 2.解题步骤 3.程序代码 4.处理结果 二、下图含有干扰条纹（…

人工智能 2023年6月17日
0118
• #### 对数据进行二项式逻辑回归分类（准确度百分之百），并将数据结果可视化

import numpy as np import matplotlib.pyplot as plt import sklearn from sklearn.linear_mode…

人工智能 2023年7月1日
0178
• #### 随笔记录——pandas 中 Dataframe.to_dict()

在工作中，使用pandas时，常常需要将dataframe中的数据按照指定的格式输出给下游使用，很多时候，下游指定的格式并不是很特别，而是比较常见的，这时，我们就不需要自己专门定义…

人工智能 2023年7月6日
0124
• #### pytorh变量的定义和访问，detatch（）作用

pytorch中的变量定义 import torch import numpy as np from torch.autograd import Variable as V n =…

人工智能 2023年6月29日
0127
• #### AI实战：用Transformer建立数值时间序列预测模型开源代码汇总

Transformer是一个利用注意力机制来提高模型训练速度的模型。，trasnformer可以说是完全基于自注意力机制的一个深度学习模型，因为它适用于并行化计算，和它本身模型的复…

人工智能 2023年7月27日
0146
• #### 分布式计算 MapReduce 究竟是怎么一回事？

前言 如果要对文件中的内容进行统计，大家觉得怎么做呢？一般的思路都是将不同地方的文件数据读取到内存中，最后集中进行统计。如果数据量少还好，但是面对海量数据、大数据的场景这样真的合适…

人工智能 2023年7月31日
0122
• #### 深度学习之目标检测小目标增强（SAHI）

小目标增强方法1： 对具有小目标的图像进行过采样，并通过复制多个小目标对其进行扩充。然而，这种增强需要分割注释，因此，它与目标检测数据集不兼容。有方法可以从原始图像中截取放大区域，…

人工智能 2023年6月24日
0170
• #### 制作一个简单HTML西安旅游网页(HTML+CSS)

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓，页面排版干净简洁。使用HTML+CSS页面布局设计,web大学生网页设计作业源码，这是一个不错的旅游网页制作，画面精明，排版整洁，内容…

人工智能 2023年6月26日
0152
• #### labelImg的使用教程，快捷键，用于标注voc或者yolo格式的数据

回答1： 将 标签xml文件转换为 标签txt文件，需要进行以下步骤： 1. 读取xml文件中的 信息，包括目标类别、位置坐标等。 2. 根据 的要求，将目标位置坐标转换为相对于图…

人工智能 2023年7月9日
0173
• #### 知识图谱之实体对齐一

知识融合一般分为两步,本体对齐和实体匹配两种的基本流程相似,如下: 一、实体对齐常见的步骤： 1.1 数据预处理 1) 语法正规化 2) 数据正规化 1.2 记录链接 把实体通过相…

人工智能 2023年6月4日
0181
• #### Transformer模型架构及PyTorch源码详解（基于AttentionisAllYouNeed）

文章目录 模型架构 源码 * torch.nn.Transformer – init + 调用及参数 源码 forward + 调用及参数 源码 torch.nn.Tr…

人工智能 2023年7月24日
0174