tensorflow.keras中对模型输出应用层的操作作用是什么?
代码作用说明
这行是Keras函数式API的标准写法,可以拆为两个步骤理解:
- 首先执行
layers.Flatten():仅完成Flatten层的实例化,此时没有绑定输入、也不会执行实际运算,只是初始化了一个具备「张量压平」能力的层对象。 - 之后执行
(base_cnn.output):调用层实例的__call__魔术方法,将ResNet50的输出张量作为输入传入,调用过程会自动完成两个逻辑:- 触发层的
build()方法,根据输入张量的维度完成层内部参数的适配初始化 - 执行层内置的
call()方法,将输入的高维卷积特征张量压平为一维张量
- 触发层的
最终返回的压平后张量会赋值给flatten变量,作为后续全连接层的输入。
场景补充
你当前代码中调用的ResNet50关闭了顶部全连接层,输出的是四维卷积特征图(格式为(batch_size, 特征图高度, 特征图宽度, 通道数)),Flatten层的作用就是把后三个维度的所有数值展开拼接为一维向量,满足后续Dense全连接层对输入维度的要求。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

