Keras重命名模型和图层

use*_*232 7 python keras

1)我尝试使用TF后端重命名模型和Keras中的图层,因为我在一个脚本中使用多个模型.类Model似乎具有属性model.name,但在更改它时我得到"AttributeError:无法设置属性".这里有什么问题?

2)此外,我正在使用顺序API,我想给图层命名,这似乎是功能API的可能,但我找不到顺序API的解决方案.anonye知道如何为顺序API做到这一点吗?

更新到2):命名图层工作,虽然它似乎没有记录.只需添加参数名称,例如model.add(Dense(...,...,name ="hiddenLayer1").注意,具有相同名称的图层共享权重!

小智 35

要使用 tf.keras 更改 model.layers 的名称,您可以使用以下几行:

for layer in model.layers:
    layer._name = layer.name + str("_2")
Run Code Online (Sandbox Code Playgroud)

我在一个双输入模型案例中需要这个,也遇到了“AttributeError: can't set attribute”。问题是有一个潜在的隐藏属性_name,这会导致冲突。


use*_*457 12

关于型号名称的第一个问题在我的机器上无法重现.我可以像这样设置它.很多时候这些错误都是由软件版本引起的.

model=Sequential()
model.add(Dense(2,input_shape=(....)))
model.name="NAME"
Run Code Online (Sandbox Code Playgroud)

至于命名图层,您可以在顺序模型中执行此操作

model=Sequential()
model.add(Dense(2,input_shape=(...),name="NAME"))
Run Code Online (Sandbox Code Playgroud)


小智 8

来自 user239457的答案仅适用于标准 keras

如果你想使用Tensorflow Keras,你可以这样做:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential(name='Name')
model.add(Dense(2,input_shape=(5, 1)))
Run Code Online (Sandbox Code Playgroud)


mar*_*mus 5

要在 TF2.2.0 中重命名 keras 模型:

model._name = "newname"

我不知道这是否是一个坏主意——他们似乎不想让你这样做,但它确实有效。要确认,请致电model.summary(),您应该会看到新名称。