尧图精选

HoRain云--Keras 第一个神经网络

🕒 发布时间:2026/9/4 5:33:11 📁 来源:尧图网络
Keras 是一个高级神经网络 API用 Python 编写能够在 TensorFlow、CNTK 或 Theano 之上运行。它的开发重点是支持快速实验能够以最少的代码实现从想法到结果的快速转换。Keras 的主要特点用户友好Keras 具有简单一致的接口模块化神经网络的各种组件层、优化器、初始化方案等都是可组合的模块易扩展性可以轻松添加新模块来表达新的研究想法支持多后端可以无缝切换 TensorFlow、Theano 和 CNTK 作为计算后端安装 Keras在开始之前我们需要先安装 Keras 及其后端引擎这里我们使用 TensorFlowpip install tensorflow keras注意Keras 2.4.0 及以后版本已集成到 TensorFlow 中可以直接通过tensorflow.keras使用构建第一个神经网络让我们从一个简单的全连接神经网络开始解决经典的 MNIST 手写数字识别问题。1. 导入必要的库实例import numpy as npfrom tensorflow import kerasfrom tensorflow.keras import layers2. 准备数据MNIST 数据集包含 60,000 张训练图像和 10,000 张测试图像每张都是 28x28 像素的手写数字灰度图。实例# 加载数据(x_train, y_train), (x_test, y_test) keras.datasets.mnist.load_data()# 预处理数据x_train x_train.reshape(60000, 784).astype(float32) / 255x_test x_test.reshape(10000, 784).astype(float32) / 255# 将标签转换为 one-hot 编码y_train keras.utils.to_categorical(y_train, 10)y_test keras.utils.to_categorical(y_test, 10)3. 构建模型我们将构建一个简单的全连接网络包含一个输入层、一个隐藏层和一个输出层。实例model keras.Sequential([layers.Dense(512, activationrelu, input_shape(784,)),layers.Dense(10, activationsoftmax)])模型结构解析实例graph TDA[输入层 784个神经元] -- B[隐藏层 512个神经元, ReLU激活]B -- C[输出层 10个神经元, Softmax激活]4. 编译模型在训练模型之前我们需要配置学习过程实例model.compile(optimizerrmsprop,losscategorical_crossentropy,metrics[accuracy])编译参数说明参数说明常用值optimizer优化器用于更新权重rmsprop, adam, sgdloss损失函数衡量模型预测与真实值的差距categorical_crossentropy (分类), mse (回归)metrics评估指标用于监控训练[accuracy]5. 训练模型现在我们可以开始训练模型了实例history model.fit(x_train, y_train,batch_size128,epochs10,validation_split0.2)训练参数说明参数说明建议值batch_size每次梯度更新使用的样本数32-256epochs训练轮数根据数据复杂度调整validation_split用作验证集的训练数据比例0.1-0.36. 评估模型训练完成后我们可以在测试集上评估模型性能实例test_loss, test_acc model.evaluate(x_test, y_test)print(f测试准确率: {test_acc:.4f})完整代码示例实例import numpy as npfrom tensorflow import kerasfrom tensorflow.keras import layers# 1. 加载数据(x_train, y_train), (x_test, y_test) keras.datasets.mnist.load_data()# 2. 预处理x_train x_train.reshape(60000, 784).astype(float32) / 255x_test x_test.reshape(10000, 784).astype(float32) / 255y_train keras.utils.to_categorical(y_train, 10)y_test keras.utils.to_categorical(y_test, 10)# 3. 构建模型model keras.Sequential([layers.Dense(512, activationrelu, input_shape(784,)),layers.Dense(10, activationsoftmax)])# 4. 编译模型model.compile(optimizerrmsprop,losscategorical_crossentropy,metrics[accuracy])# 5. 训练模型history model.fit(x_train, y_train,batch_size128,epochs10,validation_split0.2)# 6. 评估模型test_loss, test_acc model.evaluate(x_test, y_test)print(f测试准确率: {test_acc:.4f})模型改进建议1、添加 Dropout 层防止过拟合实例model.add(layers.Dropout(0.5))2、使用更先进的优化器如 Adam实例model.compile(optimizeradam, ...)3、增加隐藏层构建更深网络实例model.add(layers.Dense(256, activationrelu))4、使用卷积层对于图像数据更有效实例model.add(layers.Conv2D(32, (3, 3), activationrelu))常见问题解答Q1: 为什么我的模型准确率很低检查数据预处理是否正确尝试调整学习率增加网络容量更多层或更多神经元Q2: 训练过程中 loss 不下降怎么办检查数据是否有问题尝试不同的优化器调整学习率通常减小学习率Q3: 如何保存和加载训练好的模型实例# 保存模型model.save(mnist_model.h5)# 加载模型loaded_model keras.models.load_model(mnist_model.h5)
上一篇/下一篇内容由系统自动关联 返回资讯列表 →