如何将名称添加到Keras顺序模型的图层

如何将名称添加到Keras顺序模型的图层,keras,tensorflow2.0,Keras,Tensorflow2.0,我在Tensorflow 2.0中使用Keras创建了一个顺序模型: def create_model(): model = keras.Sequential([ keras.layers.Flatten(input_shape=(28,28), name="bla"), keras.layers.Dense(128, kernel_regularizer=keras.regularizers.l2(REGULARIZE), activation="rel

我在Tensorflow 2.0中使用Keras创建了一个顺序模型:

def create_model():
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(28,28), name="bla"),
        keras.layers.Dense(128, kernel_regularizer=keras.regularizers.l2(REGULARIZE), activation="relu",),
        keras.layers.Dropout(DROPOUT_RATE),
        keras.layers.Dense(128, kernel_regularizer=keras.regularizers.l2(REGULARIZE), activation="relu"),
        keras.layers.Dropout(DROPOUT_RATE),
        keras.layers.Dense(10, activation="softmax")
    ])
    model.compile(optimizer="adam",
                  loss="sparse_categorical_crossentropy",
                  metrics=["accuracy"])
    return model

model = create_model()

# Checkpoint callback
cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
                                                 save_weights_only=True)

# Train model
model.fit(train_images,
          train_labels,
          epochs=EPOCHS,
          callbacks=[cp_callback])
如果在将模型加载到单独的文件后提取名称,则会得到以下结果:

# Create model instance
model = create_model()

# Load  weights of pre-trained model
model.load_weights(checkpoint_path)

output_names = [layer.name for layer in model.layers]
print(output_names) = ['flatten', 'dense', 'dropout', 'dense_1', 'dropout_1', 'dense_2']
在这种情况下,我希望
bla
而不是
flatten


如何将自定义名称添加到图层

你做得对,直接从我的jupyter开始:

来自tensorflow导入keras的

模型=keras.连续([
keras.layers.Flatten(输入_shape=(28,28),name=“bla”),
keras.layers.致密(128,activation=“relu”,),
keras.层压降(0.5),
keras.layers.Dense(128,activation=“relu”),
keras.层压降(0.5),
keras.层密度(10,活化=“softmax”)
])
model.compile(optimizer=“adam”,
loss=“稀疏\分类\交叉熵”,
指标=[“准确度”])
模型
0x2b6ecf083c18处的tensorflow.python.keras.engine.sequential.sequential>

[‘bla’、‘密集’、‘辍学’、‘密集1’、‘辍学1’、‘密集2’]

编辑添加加载/保存零件:

model.save('my_model.h5'))
第二个模型=keras.models.load\u模型(“my\u model.h5”)
输出\u名称=[第二个\u模型中的层的layer.name.layers]
输出名称
[‘bla’、‘密集’、‘辍学’、‘密集1’、‘辍学1’、‘密集2’]

如果您能添加整个代码,问题可能出在其他地方


您还可以添加tensorflow版本吗?

我需要重置模型吗?有命令吗?我使用PyCharm和Tensorflow 2.0。只要使用
模型,就不必重置代码。save
keras.models.load\u model
即可
cp\u callback=tf.keras.callbacks.modelscheckpoint(filepath=checkpoint\u path,save\u weights\u only=True)
如果只保存权重,则不会添加图层名称,将其设置为
False
output_names = [layer.name for layer in model.layers]
output_names