Keras Jupyter笔记本中运行的奇怪层后缀问题

Keras Jupyter笔记本中运行的奇怪层后缀问题,keras,jupyter,Keras,Jupyter,model1的输出: from keras import layers as KL def create_model(): inp = KL.Input(shape=(None,), name='input') embedding = KL.Embedding(input_dim=10, output_dim=10)(inp) out = KL.Dense(1, activation='sigmoid', name='dense')(embedding) mode

model1的输出:

from keras import layers as KL
def create_model():
    inp = KL.Input(shape=(None,), name='input')
    embedding = KL.Embedding(input_dim=10, output_dim=10)(inp)
    out = KL.Dense(1, activation='sigmoid', name='dense')(embedding)
    model = KM.Model(inputs=[inp], outputs=[out])

    return model

model1 = create_model()
model1.summary()
model2 = create_model()
model2.summary()
模式2:

embedding_1 (Embedding) 
为什么图层的名称不固定?如果我再次运行
create_model()
,名称的后缀将是
\u 3


有什么想法吗?这和在Jupyter跑步有关系吗?Jupyter内核是否以某种方式缓存变量?谢谢

每个层都有一个名为
名称
的参数,用于设置层名称。您可以使用它将自己的固定名称放入图层,以便以后可以对其进行操作

例如:

embedding_2 (Embedding) 

每个层都有一个名为
name
的参数,用于设置层名称。您可以使用它将自己的固定名称放入图层,以便以后可以对其进行操作

例如:

embedding_2 (Embedding) 

Keras这样做是因为图层名必须是唯一的。Keras是否全局维护图层名
create_model()
每次调用时都定义一个新模型。它会创建新模型,使它们全局唯一,但不必如此。请注意,这与变量名无关。是否有方法重置计数器?我需要固定层名,因为我需要将模型移植为tensforflow格式,并在C#中使用它。如果每次训练模型时都更改图层名称,我必须更新代码。可能会有帮助:Keras这样做,因为图层名称必须是唯一的。Keras是否全局维护图层名称
create_model()
每次调用时都定义一个新模型。它会创建新模型,使它们全局唯一,但不必如此。请注意,这与变量名无关。是否有方法重置计数器?我需要固定层名,因为我需要将模型移植为tensforflow格式,并在C#中使用它。如果每次训练模型时图层的名称都改变了,我就必须更新代码。可能会有帮助:这行不通。移植为Tensorflow后,名称将为
embedding_1/embedding
embedding_2/embedding
format@zsong我觉得我们这里有一个XY问题,因为你没有解释到底是什么问题,但你正在努力使你的解决方案起作用。请说明全部问题。这行不通。移植为Tensorflow后,名称将为
embedding_1/embedding
embedding_2/embedding
format@zsong我觉得我们这里有一个XY问题,因为你没有解释到底是什么问题,但你正在努力使你的解决方案起作用。请说明全部问题。