- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章深度学习tensorflow基础mnist由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
mnist数据集的识别使用了两个非常小的网络来实现,第一个是最简单的全连接网络,第二个是卷积网络,mnist数据集是入门数据集,所以不需要进行图像增强,或者用生成器读入内存,直接使用简单的fit()命令就可以一次性训练 。
全连接网络训练:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
"""多层感知机训练"""
from
tensorflow.examples.tutorials.mnist
import
input_data
from
keras.models
import
Sequential
from
keras.layers
import
Dense
#模拟原始灰度数据读入
img_size
=
28
num
=
10
mnist
=
input_data.read_data_sets(
"./data"
,one_hot
=
True
)
X_train,y_train,X_test,y_test
=
mnist.train.images,mnist.train.labels,mnist.test.images,mnist.test.labels
X_train
=
X_train.reshape(
-
1
,img_size,img_size)
X_test
=
X_test.reshape(
-
1
,img_size,img_size)
X_train
=
X_train
*
255
X_test
=
X_test
*
255
y_train
=
y_train.reshape(
-
1
,num)
y_test
=
y_test.reshape(
-
1
,num)
print
(X_train.shape)
print
(y_train.shape)
#全连接层只能输入一维
num_pixels
=
X_train.shape[
1
]
*
X_train.shape[
2
]
X_train
=
X_train.reshape(X_train.shape[
0
],num_pixels).astype(
'float32'
)
X_test
=
X_test.reshape(X_test.shape[
0
],num_pixels).astype(
'float32'
)
#归一化
X_train
=
X_train
/
255
X_test
=
X_test
/
255
# one hot编码,这里编好了,省略
#y_train = np_utils.to_categorical(y_train)
#y_test = np_utils.to_categorical(y_test)
#搭建网络
def
baseline():
"""
optimizer:优化器,如Adam
loss:计算损失,当使用categorical_crossentropy损失函数时,标签应为多类模式,例如如果你有10个类别,
每一个样本的标签应该是一个10维的向量,该向量在对应有值的索引位置为1其余为0
metrics: 列表,包含评估模型在训练和测试时的性能的指标
"""
model
=
Sequential()
#第一步是确定输入层的数目:在创建模型时用input_dim参数确定,例如,有784个个输入变量,就设成num_pixels。
#全连接层用Dense类定义:第一个参数是本层神经元个数,然后是初始化方式和激活函数,初始化方法有0到0.05的连续型均匀分布(uniform
#Keras的默认方法也是这个,也可以用高斯分布进行初始化normal,初始化实际就是该层连接上权重与偏置的初始化
model.add(Dense(num_pixels,input_dim
=
num_pixels,kernel_initializer
=
'normal'
,activation
=
'relu'
))
#softmax是一种用到该层所有神经元的激活函数
model.add(Dense(num,kernel_initializer
=
'normal'
,activation
=
'softmax'
))
#categorical_crossentropy适用于多分类问题,并使用softmax作为输出层的激活函数的情况
model.
compile
(loss
=
'categorical_crossentropy'
,optimizer
=
'adam'
,metrics
=
[
'accuracy'
])
return
model
#训练模型
model
=
baseline()
"""
batch_size
整数
每次梯度更新的样本数。
未指定,默认为32
epochs
整数
训练模型迭代次数
verbose
日志展示,整数
0:为不在标准输出流输出日志信息
1:显示进度条
2:每个epoch输出一行记录
对于一个有 2000 个训练样本的数据集,将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration
"""
model.fit(X_train,y_train,validation_data
=
(X_test,y_test),epochs
=
10
,batch_size
=
200
,verbose
=
2
)
#模型概括打印
model.summary()
#model.evaluate()返回的是 损失值和你选定的指标值(例如,精度accuracy)
"""
verbose:控制日志显示的方式
verbose = 0 不在标准输出流输出日志信息
verbose = 1 输出进度条记录
"""
scores
=
model.evaluate(X_test,y_test,verbose
=
0
)
print
(scores)
#模型保存
model_dir
=
"./Dense.h5"
model.save(model_dir)
|
CNN训练:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
"""
模型构建与训练
Sequential 模型结构: 层(layers)的线性堆栈,它是一个简单的线性结构,没有多余分支,是多个网络层的堆叠
多少个滤波器就输出多少个特征图,即卷积核(滤波器)的深度
3通道RGB图片,一个滤波器有3个通道的小卷积核,但还是只算1个滤波器
"""
import
numpy as np
from
tensorflow.examples.tutorials.mnist
import
input_data
from
keras.models
import
Sequential
from
keras.layers
import
Dense
from
keras.layers
import
Dropout
#Flatten层用来将输入“压平”,即把多维的输入一维化,
#常用在从卷积层到全连接层的过渡
from
keras.layers
import
Flatten
from
keras.layers.convolutional
import
Conv2D
from
keras.layers.convolutional
import
MaxPooling2D
#模拟原始灰度数据读入
img_size
=
28
num
=
10
mnist
=
input_data.read_data_sets(
"./data"
,one_hot
=
True
)
X_train,y_train,X_test,y_test
=
mnist.train.images,mnist.train.labels,mnist.test.images,mnist.test.labels
X_train
=
X_train.reshape(
-
1
,img_size,img_size)
X_test
=
X_test.reshape(
-
1
,img_size,img_size)
X_train
=
X_train
*
255
X_test
=
X_test
*
255
y_train
=
y_train.reshape(
-
1
,num)
y_test
=
y_test.reshape(
-
1
,num)
print
(X_train.shape)
#(55000, 28, 28)
print
(y_train.shape)
#(55000, 10)
#此处卷积输入的形状要与模型中的input_shape匹配
X_train
=
X_train.reshape(X_train.shape[
0
],
28
,
28
,
1
).astype(
'float32'
)
X_test
=
X_test.reshape(X_test.shape[
0
],
28
,
28
,
1
).astype(
'float32'
)
print
(X_train.shape)
#(55000,28,28,1)
#归一化
X_train
=
X_train
/
255
X_test
=
X_test
/
255
# one hot编码,这里编好了,省略
#y_train = np_utils.to_categorical(y_train)
#y_test = np_utils.to_categorical(y_test)
#搭建CNN网络
def
CNN():
"""
第一层是卷积层。该层有32个feature map,作为模型的输入层,接受[pixels][width][height]大小的输入数据。feature map的大小是1*5*5,其输出接一个‘relu'激活函数
下一层是pooling层,使用了MaxPooling,大小为2*2
Flatten压缩一维后作为全连接层的输入层
接下来是全连接层,有128个神经元,激活函数采用‘relu'
最后一层是输出层,有10个神经元,每个神经元对应一个类别,输出值表示样本属于该类别的概率大小
"""
model
=
Sequential()
model.add(Conv2D(
32
, (
5
,
5
), input_shape
=
(img_size,img_size,
1
), activation
=
'relu'
))
model.add(MaxPooling2D(pool_size
=
(
2
,
2
)))
model.add(Flatten())
model.add(Dense(
128
, activation
=
'relu'
))
model.add(Dense(num, activation
=
'softmax'
))
#编译
model.
compile
(loss
=
'categorical_crossentropy'
, optimizer
=
'adam'
, metrics
=
[
'accuracy'
])
return
model
#模型训练
model
=
CNN()
model.fit(X_train, y_train, validation_data
=
(X_test, y_test), epochs
=
5
, batch_size
=
200
, verbose
=
1
)
model.summary()
scores
=
model.evaluate(X_test,y_test,verbose
=
1
)
print
(scores)
#模型保存
model_dir
=
"./CNN.h5"
model.save(model_dir)<br
type
=
"_moz"
>
|
到此这篇关于mnist的文章就介绍到这了,希望可以帮到你们,更多相关深度学习内容请搜索我以前的文章或继续浏览下面的相关文章,希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_40943760/article/details/106183302 。
最后此篇关于深度学习tensorflow基础mnist的文章就讲到这里了,如果你想了解更多关于深度学习tensorflow基础mnist的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的机器学习算法已经学习了 MNIST 数据库中的 70000 张图像。我想在 MNIST 数据集中未包含的图像上对其进行测试。但是,我的预测函数无法读取我的测试图像的数组表示。 如何在外部图像上测试
我正在尝试创建我自己的 MNIST 数据版本。我已将训练和测试数据转换为以下文件; test-images-idx3-ubyte.gz test-labels-idx1-ubyte.gz train-
我通过 pip 在我的 Windows 设备上安装了 python-mnist 包,正如 Github 文档中所述,方法是在我的 Anaconda 终端中输入以下命令: pip install pyt
描述 Fashion Mnist 是一个类似于 Mnist 的图像数据集. 涵盖 10 种类别的 7 万 (6 万训练集 + 1 万测试集) 个不同商品的图片. Tensor
该模型现在只能使用 tf. 识别单个字母。我怎样才能让它识别连续的字母单词? 最佳答案 手写数字识别。 ... MNIST 是一个广泛用于手写数字分类任务的数据集。它由 70,000 个标记为 28x
我已经从 MNIST 训练集中解压了第一张图像,并且可以访问 (28,28) 矩阵。 [[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0
这是我学习的一部分。我知道标准化确实有助于提高准确性,因此将 mnist 值除以 255。这会将所有像素除以 255,因此 28*28 的所有像素的值将在 0.0 到 1.0 范围内. 现在我厌倦了将
我已成功将 MNIST 数据下载到扩展名为 .npy 的文件中。当我打印第一张图像的几列时。我得到以下结果。这里每个数字代表什么? a= np.load("training_set.npy") pri
我用tensorflow写了一个程序来处理Kaggle的数字识别问题。程序可以正常运行,但训练准确率总是很低,大约10%,如下: step 0, training accuracy 0.11 step
在 cnn_mnist.py例如,脚本首先加载训练和测试数据,如您从 120 行到 124 行中看到的那样。当我打印 print(train_data.shape) 时,我得到 (55000, 784
我研究神经网络有一段时间了,用python和numpy做了一个实现。我用 XOR 做了一个非常简单的例子,它运行良好。所以我想我更进一步尝试 MNIST 数据库。 这是我的问题。我正在使用具有 784
我目前正在研究手写数字识别问题。 首先,我针对 MNIST 数据集测试了示例手写数字。 我的准确率为 53%,我需要 90% 以上的准确率。 以下是我迄今为止为提高准确性所做的尝试。 创建了我自己的数
我正在尝试使用我自己的数字图像数据集测试 mnist。 我为此写了一个 python 脚本,但它给出了一个错误。错误在代码的第 16 行。实际上我无法发送图像进行测试。给我一些建议。提前致谢。 imp
我知道这可能是一个愚蠢的问题,但我真的不明白为什么。下面是我尝试从训练数据中打印单个图像和具有相同索引的标签的代码 import matplotlib.pyplot as plt from tenso
我尝试使用以下数据集在 python 中制作一个能够识别手写数字的脚本:http://deeplearning.net/data/mnist/mnist.pkl.gz . 关于这个问题和我试图实现的算
我正在尝试解决 Android 设备上的 MNIST 分类问题。我已经有一个经过训练的模型,现在我希望能够识别照片上的单个数字。 拍完照片后,我会进行一些预处理,然后再将图像传递给模型。这是原始图像的
MNIST 数据集介绍 MNIST 包含 0~9 的手写数字, 共有 60000 个训练集和 10000 个测试集. 数据的格式为单通道 28*28 的灰度图. LeNet 模型
我想导入 mnist digits 数字以在一个图中显示,并编写这样的代码, import keras from keras.datasets import mnist import matplotl
我目前正在研究数字手写识别问题。我发现很多state-of-art算法对mnist dateset采用了一些预处理方法,比如deskewing和jittering(我不知道'jittering'是什么
我到处找,但找不到我想要的。基本上,MNIST 数据集具有像素值在范围 [0, 255] 内的图像。 .人们说,一般来说,最好做到以下几点: 将数据缩放到 [0,1]范围。 将数据标准化为具有零均值和
我是一名优秀的程序员,十分优秀!