我是靠谱客的博主 无辜蜡烛,这篇文章主要介绍TensorFlow 2.0 keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN),现在分享给大家,希望可以做个参考。

最近我们被客户要求撰写关于TensorFlow的研究报告,包括一些图形和统计输出。

在本文中,您将发现如何使用标准深度学习模型(包括多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN))开发,评估和做出预测。

开发多层感知器模型

多层感知器模型(简称MLP)是标准的全连接神经网络模型。

它由节点层组成,其中每个节点连接到上一层的所有输出,每个节点的输出连接到下一层节点的所有输入。

通过一个或多个密集层创建MLP 。此模型适用于表格数据,即表格或电子表格中的数据,每个变量一列,每个变量一行。您可能需要使用MLP探索三个预测建模问题;它们是二进制分类,多分类和回归。

让我们针对每种情况在真实数据集上拟合模型。

二进制分类的MLP

我们将使用二进制(两类)分类数据集来演示用于二进制分类的MLP。

该数据集涉及预测结构是否在大气中或不给定雷达回波。

数据集将使用Pandas自动下载。

  • 电离层数据集(csv) 
  • 电离层数据集描述(csv) 

我们将使用LabelEncoder将字符串标签编码为整数值0和1。该模型将适合67%的数据,其余的33%将用于评估,请使用train_test_split()函数进行拆分。

最好将' relu '激活与' he_normal '权重初始化一起使用。在训练深度神经网络模型时,这种组合可以大大克服梯度消失的问题。

该模型预测1类的可能性,并使用S型激活函数。 

下面列出了代码片段。

# mlp二分类包
from pandas import read_csv
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
# 加载数据
path = 'osph.csv'
df = read_csv(path, header=None)
# 分割输入和输出
X, y = df.values[:, :-1], df.values[:, -1]
# ensure all data are floating point values
X = X.astype('float32')
# 文本转换数字变量
y = LabelEncoder().fit_transform(y)
# 分割训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
# 定义输入变量维度
n_features = X_train.shape[1]
#定义模型
model = Sequential()
model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,)))
model.add(Dense(8, activation='relu', kernel_initializer='he_normal'))
model.add(Dense(1, activation='sigmoid'))
# compile the model
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 拟合模型
model.fit(X_train, y_train, epochs=150, batch_size=32, verbose=0)

运行示例将首先报告数据集的形状,然后拟合模型并在测试数据集上对其进行评估。最后,对单行数据进行预测。

鉴于学习算法的随机性,您的具体结果会有所不同。尝试运行该示例几次。

在这种情况下,我们可以看到该模型实现了约94%的分类准确度,然后预测单行数据属于1类的概率为0.9。

(235, 34) (116, 34) (235,) (116,)
Test Accuracy: 0.940
Predicted: 0.991

用于多类分类的MLP

我们将使用鸢尾花多类分类数据集来演示用于多类分类的MLP。

该问题涉及在给定花的度量的情况下预测鸢尾花的种类。

数据集将使用Pandas自动下载,但您可以在此处了解更多信息。

  • 鸢尾花数据集(csv) 
  • 鸢尾花数据集描述(csv) 

鉴于它是一个多类分类,因此该模型在输出层中的每个类必须具有一个节点,并使用softmax激活函数。损失函数是' sparse_categorical_crossentropy ',它适用于整数编码的类标签(例如,一个类为0,下一类为1,等等)

下面列出了在鸢尾花数据集上拟合和评估MLP的代码片段。


# 预测
row = [5.1,3.5,1.4,0.2]
yhat = model.predict([row])
print('Predicted: %s (class=%d)' % (yhat, argmax(yhat)))

运行示例将首先报告数据集的形状,然后拟合模型并在测试数据集上对其进行评估。最后,对单行数据进行预测。

鉴于学习算法的随机性,您的具体结果会有所不同。尝试运行该示例几次。

在这种情况下,我们可以看到该模型实现了约98%的分类精度,然后预测了属于每个类别的一行数据的概率,尽管类别0的概率最高。

(100, 4) (50, 4) (100,) (50,)
Test Accuracy: 0.980
Predicted: [[0.8680804 0.12356871 0.00835086]]

最后

以上就是无辜蜡烛最近收集整理的关于TensorFlow 2.0 keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)的全部内容,更多相关TensorFlow内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部