【发布时间】:2021-02-26 19:29:05
【问题描述】:
我有一个使用 Swish (SiLU) 激活的预训练模型:
from tensorflow.keras.applications import EfficientNetB0
e_net = EfficientNetB0(weights='imagenet', include_top=False)
我想用 LeakyReLU 替换它的所有激活。对于 ReLU 或 Sigmoid 等基本函数,可以像这样轻松替换:
from tensorflow.python.keras.layers import Activation
from tensorflow.keras import activations
for layer in e_net.layers:
if isinstance(layer, Activation):
layer.activation = activations.get('relu')
但是这个模块中没有 LeakyRelu 函数。相反,它被实现为单独的层,我不知道如何替换它。直接修改无效(即使在重新编译模型或从文件保存/加载后):
from tensorflow.keras.layers import LeakyReLU
for i, layer in enumerate(e_net.layers):
if isinstance(layer, Activation):
name = layer.name
model.layers[i] = LeakyReLU(name=name) # does not work
【问题讨论】:
标签: python tensorflow keras deep-learning