上篇文章介绍了用Squential搭建BP神经网络,Squential可以搭建出上层输出就是下层输入的顺序神经网络结构,无法搭出一些带有跳连的非顺序网络结构,这个时候我们可以选择类class搭建封装神经网络结构。
第一步:import tensorflow as tf:导入模块
第二步:制定输入网络的训练集和测试集
第三步:搭建网络结构
第四步:model.compile():配置训练方法
第五步:model.fit():执行训练过程
第六步:model.summary():打印网络结构
- import tensorflow as tf
- from sklearn.datasets import load_iris
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import StandardScaler
-
- class NeuralNetwork(tf.keras.Model):
- def __init__(self, input_size, hidden_size, output_size):
- super(NeuralNetwork, self).__init__()
- self.dense1 = tf.keras.layers.Dense(hidden_size, activation='relu')
- self.dense2 = tf.keras.layers.Dense(hidden_size, activation='relu')
- self.dense3 = tf.keras.layers.Dense(output_size, activation='softmax')
-
- def call(self, inputs):
- x = self.dense1(inputs)
- x = self.dense2(x)
- x = self.dense3(x)
- return x
- # 加载鸢尾花数据集
- iris = load_iris()
- X = iris.data
- y = iris.target
-
- # 数据预处理
- scaler = StandardScaler()
- X = scaler.fit_transform(X)
-
- # 划分训练集和测试集
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
-
- # 创建模型实例
- input_size = X.shape[1]
- hidden_size = 64
- output_size = len(set(y))
- model = NeuralNetwork(input_size, hidden_size, output_size)
-
- # 编译模型
- model.compile(optimizer='adam',
- loss='sparse_categorical_crossentropy',
- metrics=['accuracy'])
-
- # 训练模型
- model.fit(X_train, y_train, epochs=10, batch_size=32)
- model.summary()
-
- # 评估模型
- test_loss, test_accuracy = model.evaluate(X_test, y_test)

作者简介:
本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据挖掘相关科研工作,对数据挖掘有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习基础知识与案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。关注V订阅号:数据杂坛,即可在后台联系我获取相关数据集和源码,送有关数据分析、数据挖掘、机器学习、深度学习相关的电子书籍。