Keras简介

文章目录

    • 一、简介
    • 二、使用
      • [2.1 模块导入](#2.1 模块导入)
      • [2.2 构建模型](#2.2 构建模型)
      • [2.3 创建,调用,评估](#2.3 创建,调用,评估)

一、简介

学习使用 Keras,这是一个用 Python 编写的高级神经网络 API(编程框架),能够运行在包括 TensorFlow 和 CNTK 在内的多个底层框架之上。Keras 的开发旨在让深度学习工程师能够快速构建和实验不同的模型。正如 TensorFlow 比 Python 更高级,Keras 更高级,提供更多抽象。能够以最小的延迟从想法到结果,是找到好模型的关键。不过,Keras 比底层框架更严格,所以有些非常复杂的模型可以在 TensorFlow 实现,但在 Keras 里(而且难度更大)就不行。话虽如此,Kera 对很多常见型号来说都能正常使用。

二、使用

2.1 模块导入

plain 复制代码
import numpy as np                # 1. 引入数值计算基础库
from keras import layers          # 2. 从 Keras 高层 API 引入"层"模块,方便直接 layers.Dense(...) 这种写法
from keras.layers import Input, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D
                                # 3. 显式把后面要用到的各种层一次性 import 进来,省得反复写前缀
from keras.layers import AveragePooling2D, MaxPooling2D, Dropout, GlobalMaxPooling2D, GlobalAveragePooling2D
                                # 4. 继续补充可能用到的池化、Dropout、全局池化层
from keras.models import Model    # 5. 引入函数式 API 的核心类 Model,用于最后把"层图"打包成可训练模型
from keras.preprocessing import image   # 6. 提供图片读取、缩放、转成 4D 张量等工具函数
from keras.utils import layer_utils     # 7. 工具集:打印层名、统计参数、冻结层等(本作业里主要用 print_summary)
from keras.utils.data_utils import get_file   # 8. 带进度条地下载外部文件(如预训练权重、数据集)
from keras.applications.imagenet_utils import preprocess_input
                                # 9. 把 RGB 图片转成 VGG、ResNet 等 ImageNet 模型所需的预处理格式(减均值、调通道顺序)
import pydot                      # 10. 绘图引擎,keras 可视化模型时生成 .dot 文件后需它转图片
from IPython.display import SVG   # 11. Jupyter 里直接把 SVG 图片嵌到 cell 输出中
from keras.utils.vis_utils import model_to_dot   # 12. 把 Keras 模型转成 pydot 的 Dot 对象
from keras.utils import plot_model               # 13. 一次性把模型结构保存成 png/pdf 文件
from kt_utils import *            # 14. 课程自定义工具:load_happy_house_dataset、img_to_tensor、happyModel 等
import keras.backend as K         # 15. 引入后端抽象层,用来写与后端无关的底层函数
K.set_image_data_format('channels_last')   # 16. 强制"张量形状 = (m, H, W, C)"而不是 Theano 的 (m, C, H, W)
import matplotlib.pyplot as plt   # 17. 常规绘图库
from matplotlib.pyplot import imshow   # 18. 直接拿 imshow 用,省写 plt.imshow
%matplotlib inline                # 19. Jupyter 魔法:让 plt.show() 结果直接嵌在 notebook 输出区

2.2 构建模型

plain 复制代码
# GRADED FUNCTION: HappyModel

def HappyModel(input_shape):
    """
    Implementation of the HappyModel.
    
    Arguments:
    input_shape -- shape of the images of the dataset

    Returns:
    model -- a Model() instance in Keras
    """
    
    ### START CODE HERE ###
    # 1. 定义输入张量,形状就是 input_shape(例如 (64,64,3))
    X_input = Input(input_shape)

    # 2. 零填充:在图像边缘各补 3 圈 0,保证后续 7×7 卷积后尺寸不会缩得太小
    X = ZeroPadding2D((3, 3))(X_input)

    # 3. 第一个卷积块:CONV -> BN -> RELU
    X = Conv2D(32, (7, 7), strides=(1, 1), name='conv0')(X)   # 32 个 7×7 卷积核
    X = BatchNormalization(axis=3, name='bn0')(X)             # 通道轴做批归一化
    X = Activation('relu')(X)                                 # ReLU 非线性激活

    # 4. 最大池化:窗口 2×2,步长 2,特征图尺寸减半
    X = MaxPooling2D((2, 2), name='max_pool')(X)

    # 5. 把三维特征图拉成一维向量,方便接全连接层
    X = Flatten()(X)

    # 6. 全连接 + sigmoid 输出:1 个神经元,给出"开心"概率
    X = Dense(1, activation='sigmoid', name='fc')(X)

    # 7. 用 Model 类把"从输入到输出"的完整计算图打包成可训练模型
    model = Model(inputs=X_input, outputs=X, name='HappyModel')

    ### END CODE HERE ###
    
    return model

2.3 创建,调用,评估

相关推荐
csdn_aspnet3 小时前
如何用 C# 和 Gemma 3 在本地构建一个真正能完成工作的 AI 代理的
人工智能·ai·c#·gemma
啊哈哈哈哈哈啊哈哈3 小时前
边缘计算与轮廓检测
人工智能·opencv·计算机视觉
cskywit3 小时前
从DFL到无NMS推理:一文拆解YOLO26背后的工程取舍与数学原理
人工智能·机器学习
PPHT-H3 小时前
【人工智能笔记】第四十四节:OpenClaw封神工具 openclaw-free-openai-proxy 免费AI模型批量调用,零token费+稳到不翻车!
人工智能·深度学习·openclaw·免费openai·ai服务代理
yiyu07163 小时前
3分钟搞懂深度学习AI:实操篇:RNN
人工智能·深度学习
uzong4 小时前
CoPaw是什么?-- 2026年开源的国产个人AI助手
人工智能·后端
海盗儿4 小时前
TensorRT-LLM 框架与源码分析
人工智能
无心水4 小时前
【任务调度:框架】11、分布式任务调度进阶:高可用、幂等性、性能优化三板斧
人工智能·分布式·后端·性能优化·架构·2025博客之星·分布式调度框架
码森林4 小时前
小龙虾居然比你更健忘?OpenClaw 记忆系统指南,让它永远记住你
人工智能·ai编程·全栈
ghie90904 小时前
维纳滤波器语音增强MATLAB实现
人工智能·matlab·语音识别