使用Keras构建7层CNN神经网络对随机数进行分类

本教程将演示如何使用Python的Keras库构建一个7层的卷积神经网络 (CNN),用于将0到30之间的随机数分类为1到10的类别。

代码示例pythonimport numpy as npfrom sklearn.model_selection import train_test_splitfrom keras.models import Sequentialfrom keras.layers import Conv1D, MaxPooling1D, Flatten, Dense

生成随机数据集X = np.random.randint(0, 31, size=(1000, 30))y = np.random.randint(1, 11, size=(1000,))

数据预处理X = X.reshape(X.shape + (1,))y = y - 1 # 将标签映射到0-9的范围

划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

构建CNN模型model = Sequential()model.add(Conv1D(32, 3, activation='relu', input_shape=(30, 1)))model.add(Conv1D(64, 3, activation='relu'))model.add(MaxPooling1D(2))model.add(Conv1D(128, 3, activation='relu'))model.add(Conv1D(256, 3, activation='relu'))model.add(MaxPooling1D(2))model.add(Flatten())model.add(Dense(256, activation='relu'))model.add(Dense(10, activation='softmax'))

编译和训练模型model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=32)

评估模型loss, accuracy = model.evaluate(X_test, y_test)print(f'测试集准确率:{accuracy * 100:.2f}%')

代码解释

  1. 生成随机数据集: - 使用numpy生成1000个长度为30的随机数作为输入数据 (X)。 - 生成1000个1到10之间的随机数作为标签 (y)。2. 数据预处理: - 将输入数据 X 调整为CNN输入所需的形状 (样本数, 特征数, 1)。 - 将标签 y 转换为0到9的范围,以匹配神经网络输出层的设置。3. 划分训练集和测试集: 使用train_test_split将数据集划分为训练集和测试集。4. 构建CNN模型: - 使用Sequential创建模型,并依次添加卷积层 (Conv1DMaxPooling1D)、扁平化层 (Flatten) 和全连接层 (Dense)。 - 使用relu激活函数引入非线性。 - 使用softmax激活函数将输出转换为概率分布,以便进行多类别分类。5. 编译和训练模型: - 使用compile方法配置模型的损失函数、优化器和评估指标。 - 使用fit方法在训练集上训练模型,并使用验证集监控模型性能。6. 评估模型: 使用evaluate方法评估模型在测试集上的性能,并打印准确率。

注意

  • 这只是一个基本的CNN模型示例,您可以根据实际需求进行调整和优化。- 在实际应用中,您可能需要使用更多的数据和更复杂的模型来获得更好的分类性能。
Python Keras教程:用CNN神经网络分类随机数

原文地址: https://www.cveoy.top/t/topic/lt3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录