在本文中,我们将查看DBN是什么,它们的组件是什么,以及它们在Python中的小应用程序,以解决手写识别问题(MNIST数据集)。
在了解DBN是什么之前,我们先来看看RBM,Restricted Boltzmann Machines。
受限玻尔兹曼机(restricted Boltzmann machine, RBM)
如果您知道什么是因子分析,RBM可以被看作是因子分析的二进制版本。所以我们不需要有很多因素来决定输出,我们可以用0或1的形式来表示二元变量。
举个例子:如果你读了一本书,然后以两种标准来评判这本书:要么你喜欢这本书,要么你不喜欢这本书。在这种情况下,我们可以使用rbm,这将帮助我们确【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.定做出这些选择背后的原因
RBM对神经网络采用概率方法,因此也称为随机神经网络。
如果我们分解RBMs,它们有三个部分:-
一个输入层即可见单元一个隐藏层,即隐藏单元一个偏差单元在我上面给出的例子中,可见单位只是你是否喜欢这本书。隐藏单元帮助你找到你喜欢那本书的原因。偏差被加入到不同书籍的不同属性中。
让我们想象一下RBM:
红色是可见的单元,蓝色是隐藏的单位
让我们看看RBN在学习决策过程中所采取的步骤:-
计算Activation Energy计算Activation Energy的Sigmoid这将给出一个概率。使用这个概率隐藏单元可以打开或关闭可见单元中的任何节点。既然我们已经有了受限玻尔兹曼机的基【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.本概念,让我们继续深入到深度信念网络
深度信念网络
DBNs有两个阶段:-
Pre-train阶段Fine-tune阶段Pre-train阶段只不过是RBN的多层,而Fine-tune阶段则是前馈神经网络。让我们想象这两个步骤:-
DBN如何工作的呢?
利用对比散度算法求出可见单元的特征找到隐藏的单元特征,以及上面步骤中发现的特征当隐藏层学习阶段结束时,我们称之为训练后的DBNMNIST数据集的实际应用
第1步是加载所需的库。dbn.tensorflow是一个github版本,您必须克隆存储库并将dbn文件夹粘贴到存在代码文件的文件夹中。链接到代码存储库在
https://github.com/albert【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.bup/deep-belief-network/。from dbn.tensorflow import SupervisedDBNClassification
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics.classification import accuracy_score
第2步是读取可以从kaggle下载的csv文件(
https://www.kaggle.com/c/digit-recognizer)。digits =【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业. pd.read_csv(“train.csv”)
第3步,让我们定义我们的自变量,它们只是像素值,并以变量X的numpy数组格式存储。我们将目标变量(实际数字)存储在变量Y中。
X = np.array(digits.drop([“label”], axis=1))
Y = np.array(digits[“label”])
第4步,让我们使用sklearn预处理类的方法:standardscaler。这用于转换正态分布格式的数字。
from sklearn.preprocessing import standardscaler
ss=standardscaler()
X = ss.fit_transfo【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.rm(X)
第5步,现在我们已经对数据进行了归一化,我们可以将它分成训练和测试集: –
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
第6步,现在我们将初始化我们的监督DBN分类器,以训练数据。
classifier = SupervisedDBNClassification(hidden_layers_structure = [256, 256],
learning_rate_rbm=0.05,
learning_rate=0.1,
n_epochs_rbm=10,
n_ite【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.r_backprop=100,
batch_size=32,
activation_function=relu,
dropout_p=0.2)
第7步,现在我们将来到训练部分,我们将使用拟合函数进行训练:
classifier.fit(X_train,Y_train)
在数据集上训练可能需要10分钟到1小时。培训完成后,我们必须检查准确性:
Y_pred = classifier.predict(X_test)
print(Done.\nAccuracy: %f % accuracy_score(Y_test, Y_pred))
我得到的输出是:
因此,在本文中,我们看到了DBN和RBM的简要介绍,然后我们查看了【我.爱.线.报.网.】52xbw .cn 每日持.续更新.可.实操.的副.业.实际应用的代码。希望它有用!
推荐阅读
友情提醒: 请尽量登录购买,防止付款了不发货!
QQ交流群:226333560 站长微信:qgzmt2