Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
ml-mastery-zh
提交
20276090
M
ml-mastery-zh
项目概览
OpenDocCN
/
ml-mastery-zh
9 个月 前同步成功
通知
2
Star
556
Fork
158
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
ml-mastery-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
20276090
编写于
9月 12, 2019
作者:
ElamDavies
提交者:
GitHub
9月 12, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #25 from ElmaDavies/master
格式校验,翻译校正
上级
0cede96a
46816ef0
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
227 addition
and
227 deletion
+227
-227
docs/dl-keras/evaluate-performance-deep-learning-models-keras.md
...-keras/evaluate-performance-deep-learning-models-keras.md
+227
-227
未找到文件。
docs/dl-keras/evaluate-performance-deep-learning-models-keras.md
浏览文件 @
20276090
...
...
@@ -2,13 +2,13 @@
> 原文: [https://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/](https://machinelearningmastery.com/evaluate-performance-deep-learning-models-keras/)
Keras 是一个易于使用且功能强大
的 Python 库,用于深度学习。
Keras 是一个易于使用且功能强大
被用于深度学习的 Python 库。
在设计和配置深度学习模型时,需要做出
很多决定。大多数决策必须通过试验和错误凭经验解决,并根据实际数据进行评估。
在设计和配置深度学习模型时,需要做出
许多决策,这些决策大多必须通过反复试验和根据真实数据进行评估,以经验方式解决。
因此,有一种强大的方法来评估神经网络和深度学习模型的
表现至关重要。
因此,有一种强大的方法来评估神经网络和深度学习模型的
性能至关重要。
在这篇文章中,您将发现使用 Keras 评估模型
表现的几种方法。
在这篇文章中,您将发现使用 Keras 评估模型
性能的几种方法。
让我们开始吧。
...
...
@@ -18,26 +18,26 @@ Keras 是一个易于使用且功能强大的 Python 库,用于深度学习。
![
Evaluate the Performance Of Deep Learning Models in Keras
](
img/e1c3b3955f7f82b7e5b64209a3825ab4.png
)
评估 Keras 中深度学习模型的表现
照片由
[
Thomas Leuthard
](
https://www.flickr.com/photos/thomasleuthard/7273077758/
)
拍摄,保留
一些权利。
照片由
[
Thomas Leuthard
](
https://www.flickr.com/photos/thomasleuthard/7273077758/
)
拍摄,保留
所属权利
## 根据经验评估网络配置
在设计和配置深度学习模型时,必须做出
无数决定。
在设计和配置深度学习模型时,必须做出
很多决策。
其中许多决策可以通过复制其他人的网络结构并使用启发式方法来解
决。最终,最好的技术是实际设计小型实验并使用实际数据凭经验评估选项。
其中许多决策可以通过复制其他人的网络结构并使用启发式方法来解
。最终,最好的技术是根据实际设计小型实验并使用实际数据凭经验评估相关选项。
这包括高级决策,例如网络中层的数量,大小和类型
。它还包括较低级别的决策,如损失函数的选择,激活函数,优化过程和时期数。
这包括高级决策,例如网络中层的数量,大小和类型
,它还包括较低级别的决策,如损失函数的选择,激活函数,优化过程和迭代次数。
深度学习通常用于具有非常大的数据集的问题
。那就是数万或数十万个实例。
深度学习通常用于具有非常大的数据集的问题
,例如有数万或数十万个实例。
因此,您需要拥有一个强大的测试工具,可以让您
估计给定配置在看不见的数据上的表现,并可靠地将表现与其他配置进行比较。
因此,您需要拥有一个强大的测试工具,可以让您
评估给定配置在不可见的数据上的性能,并将较为可靠的性能表现与其他配置进行比较。
## 数据拆分
大量数据和
模型的复杂性需要非常长的训练时间。
大量数据和
复杂的模型需要非常长的训练时间。
因此,通常
使用简单的数据分离到训练和测试数据集或训练和验证数据集中。
因此,通常
将数据分为测试数据集和验证数据集。
Keras 提供了两种方便的方式来评估您的深度学习算法:
...
...
@@ -46,34 +46,34 @@ Keras 提供了两种方便的方式来评估您的深度学习算法:
### 使用自动验证数据集
Keras 可以将训练数据的一部分
分离为验证数据集,并在每个时期评估模型在该验证数据集上的表现。
Keras 可以将训练数据的一部分
划分为为验证数据集,并在每个迭代中评估模型在该验证数据集上的性能。
您可以通过将
**fit**
()函数上的
**validation_split**
参数设置为训练数据集大小的百分比来完成此操作。
您可以通过将
`fit()`
函数上的
**validation_split**
参数设置为训练数据集大小的百分比来完成此操作。
例如,20%的合理值可能是 0.2 或 0.33,或者为了验证而
保留的训练数据的 33%。
例如,20%的合理值可能是 0.2 或 0.33,或者为了验证而
将验证数据集的数量选择的训练数据集的 33%。
下面的示例演示了如何在小二元分类问题上使用自动验证数据集。本文中的所有实例均使用
[
皮马印第安人糖尿病数据集
](
http://archive.ics.uci.edu/ml/datasets/Pima+Indians+Diabetes
)
。您可以
[
从 UCI 机器学习库下载
](
http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data
)
,并使用文件名
**pima-indians-diabetes.csv**
将数据文件保存到当前工作目录中(更新:
[
从这里
](
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv
)
)。
```
py
#
MLP with automatic validation set
#
使用自动验证集的MLP
from
keras.models
import
Sequential
from
keras.layers
import
Dense
import
numpy
#
fix random seed for reproducibility
#
固定随机种子再现性
numpy
.
random
.
seed
(
7
)
#
load pima indians dataset
#
加载数据集
dataset
=
numpy
.
loadtxt
(
"pima-indians-diabetes.csv"
,
delimiter
=
","
)
#
split into input (X) and output (Y) variables
#
将数据集划分为输入变量和输出变量
X
=
dataset
[:,
0
:
8
]
Y
=
dataset
[:,
8
]
#
create model
#
创建模型
model
=
Sequential
()
model
.
add
(
Dense
(
12
,
input_dim
=
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
1
,
activation
=
'sigmoid'
))
#
Compile model
#
编译模型
model
.
compile
(
loss
=
'binary_crossentropy'
,
optimizer
=
'adam'
,
metrics
=
[
'accuracy'
])
#
Fit the model
#
拟合模型
model
.
fit
(
X
,
Y
,
validation_split
=
0.33
,
epochs
=
150
,
batch_size
=
10
)
```
...
...
@@ -99,38 +99,38 @@ Epoch 150/150
Keras 还允许您手动指定在训练期间用于验证的数据集。
在这个例子中,我们使用 Python
[
scikit-learn
](
http://scikit-learn.org/stable/index.html
)
机器学习库中
的方便
[
train_test_split
](
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html
)
()函数将我们的数据分成训练和测试数据集。我们使用 67%用于训练,剩余 33%用于验证。
在这个例子中,我们使用 Python
[
scikit-learn
](
http://scikit-learn.org/stable/index.html
)
机器学习库中
方便的
[
train_test_split
](
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html
)(
)函数将我们的数据分成训练和测试数据集。我们使用
67%用于训练,剩余 33%用于验证。
可以通过
**validation_data**
参数将验证数据集指定给 Keras 中的
**fit**
()函数。它需要输入和输出数据集的元组。
可以通过
**validation_data**
参数将验证数据集指定给 Keras 中的
`fit()`
函数,该函数输出和输入的数据类型是数据集中的元组类型。
```
py
#
MLP with manual validation set
#
使用手动验证集的MLP
from
keras.models
import
Sequential
from
keras.layers
import
Dense
from
sklearn.model_selection
import
train_test_split
import
numpy
#
fix random seed for reproducibility
#
固定随机种子再现性
seed
=
7
numpy
.
random
.
seed
(
seed
)
#
load pima indians dataset
#
加载数据集
dataset
=
numpy
.
loadtxt
(
"pima-indians-diabetes.csv"
,
delimiter
=
","
)
#
split into input (X) and output (Y) variables
#
将数据集划分为输入变量X和输出变量Y
X
=
dataset
[:,
0
:
8
]
Y
=
dataset
[:,
8
]
#
split into 67% for train and 33% for test
#
将数据集划分为67%的训练集和33%的测试集
X_train
,
X_test
,
y_train
,
y_test
=
train_test_split
(
X
,
Y
,
test_size
=
0.33
,
random_state
=
seed
)
#
create model
#
创建模型
model
=
Sequential
()
model
.
add
(
Dense
(
12
,
input_dim
=
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
1
,
activation
=
'sigmoid'
))
#
Compile model
#
编译模型
model
.
compile
(
loss
=
'binary_crossentropy'
,
optimizer
=
'adam'
,
metrics
=
[
'accuracy'
])
#
Fit the model
#
拟合模型
model
.
fit
(
X_train
,
y_train
,
validation_data
=
(
X_test
,
y_test
),
epochs
=
150
,
batch_size
=
10
)
```
与之前一样,运行该示例提供了详细的训练输出
,其中包括模型在每个时期的训练和验证数据集上的丢失和准确性。
与之前一样,运行该示例提供了详细的训练输出
数据,其中包括模型在每个迭代期间在训练集和验证数据集上的损失和精确度。
```
py
...
...
...
@@ -150,48 +150,48 @@ Epoch 150/150
## 手动 k-fold 交叉验证
机器学习模型评估的黄金标准是
[
k
倍交叉验证
](
https://en.wikipedia.org/wiki/Cross-validation_(statistics
)
)。
机器学习模型评估的黄金标准是
[
k
折交叉验证
](
https://en.wikipedia.org/wiki/Cross-validation_(statistics
)
。
它提供了
对未见数据模型表现的可靠估计。它通过将训练数据集分成 k 个子集并在所有子集上轮流训练模型(除了一个被保持的外部)并在所保持的验证数据集上评估模型表现来实现这一点。重复该过程,直到所有子集都有机会成为保持的验证集。然后在所有创建的模型中对表现度量进行平均。
它提供了
模型对不可见数据的性能的可靠估计,它通过将训练数据集拆分为 k 子集来实现此,并对所有子集(除保留的子集外)轮流训练模型,并评估已保留验证数据集上的模型性能,该过程将重复,直到所有子集都有机会成为已执行的验证集。然后,在创建的所有模型中对性能度量值进行平均。
由于计算费用较高,交叉验证通常不用于评估深度学习模型。例如,k 倍交叉验证通常使用 5 或 10 倍。因此,必须构建和评估 5 或 10 个模型,这大大增加了模型的评估时间。
交叉验证通常不用于评估深度学习模型,因为计算的花费会更高。例如,k 折交叉验证通常用于 5 或 10 折,因此,必须构造和评估 5 或 10 个模型,从而大大增加了模型的评估时间。
然而,当问题足够小或者你有足够的计算资源时,k-fold 交叉验证可以让你对模型的表现进行较少的偏差估计。
在下面的例子中,我们使用来自
[
scikit-learn
](
http://scikit-learn.org/stable/index.html
)
Python 机器学习库的方便的
[
StratifiedKFold
](
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedKFold.html
)
类将训练数据集分成 10
倍。折叠是分层的,这意味着算法试图平衡每个折叠中每个类的实例数。
在下面的例子中,我们使用来自
[
scikit-learn
](
http://scikit-learn.org/stable/index.html
)
Python 机器学习库的方便的
[
StratifiedKFold
](
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.StratifiedKFold.html
)
类将训练数据集分成 10
折,折叠是分层的,这意味着算法试图平衡每个折叠中每个类的实例数。
该示例使用
10 个数据分割创建和评估 10 个模型,并收集所有分数。通过将 verbose = 0 传递给模型上的
**fit()**
和
**evaluate()**
函数来关闭每个迭代的详细输出。
该示例使用
数据的 10 个拆分创建评估 10 个模型,并收集所有的性能分数,并通过将
`verbose=0`
传递给模型上的
`fit()`
函数和
`evaluate()`
函数,并将每个迭代期间的详细输出关闭。
为每个
型号打印表现并将其存储。然后在运行结束时打印模型表现的平均值和标准偏差,以提供模型精度的稳健估计。
为每个
模型存储和打印相关的性能数据,然后,在运行结束时打印模型性能的平均差和标准差,以提供对模型精度的可靠估计。
```
py
#
MLP for Pima Indians Dataset with 10-fold cross validation
#
为Pima Indians 数据集使用10折交叉验证的MLP
from
keras.models
import
Sequential
from
keras.layers
import
Dense
from
sklearn.model_selection
import
StratifiedKFold
import
numpy
#
fix random seed for reproducibility
#
固定随机种子再现性
seed
=
7
numpy
.
random
.
seed
(
seed
)
#
load pima indians dataset
#
加载数据集
dataset
=
numpy
.
loadtxt
(
"pima-indians-diabetes.csv"
,
delimiter
=
","
)
#
split into input (X) and output (Y) variables
#
将数据集划分为输入数据X和输出数据Y
X
=
dataset
[:,
0
:
8
]
Y
=
dataset
[:,
8
]
#
define 10-fold cross validation test harness
#
定义10折交叉验证测试线束
kfold
=
StratifiedKFold
(
n_splits
=
10
,
shuffle
=
True
,
random_state
=
seed
)
cvscores
=
[]
for
train
,
test
in
kfold
.
split
(
X
,
Y
):
#
create model
#
创建模型
model
=
Sequential
()
model
.
add
(
Dense
(
12
,
input_dim
=
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
8
,
activation
=
'relu'
))
model
.
add
(
Dense
(
1
,
activation
=
'sigmoid'
))
#
Compile model
#
编译模型
model
.
compile
(
loss
=
'binary_crossentropy'
,
optimizer
=
'adam'
,
metrics
=
[
'accuracy'
])
#
Fit the model
#
拟合模型
model
.
fit
(
X
[
train
],
Y
[
train
],
epochs
=
150
,
batch_size
=
10
,
verbose
=
0
)
#
evaluate the model
#
评估模型
scores
=
model
.
evaluate
(
X
[
test
],
Y
[
test
],
verbose
=
0
)
print
(
"%s: %.2f%%"
%
(
model
.
metrics_names
[
1
],
scores
[
1
]
*
100
))
cvscores
.
append
(
scores
[
1
]
*
100
)
...
...
@@ -216,12 +216,12 @@ acc: 72.37%
## 摘要
在这篇文章中,您发现了使用一种强大的方法来估计深度学习模型在
看不见的数据上的表现的重要性。
在这篇文章中,您发现了使用一种强大的方法来估计深度学习模型在
不可见数据集上的模型性能的重要性。
您发现了三种使用 Keras 库在 Python 中估计深度学习模型
表现的方法:
您发现了三种使用 Keras 库在 Python 中估计深度学习模型
性能的方法:
*
使用自动验证数据集。
*
使用手动验证数据集。
*
使用手动 k-fold 交叉验证。
您对 Keras 或此帖的深度学习有任何疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
您对 Keras 深度学习或者此文章还有疑问吗?在评论中提出您的问题,我会尽力回答。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录