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

时间:2020-01-30 13:58:56

标签: 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="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

如何为我的图层添加自定义名称?

1 个答案:

答案 0 :(得分:1)

直接从我的jupyter那里,您正在以正确的方式进行操作:

from tensorflow import keras

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28,28), name="bla"),
    keras.layers.Dense(128, activation="relu",),
    keras.layers.Dropout(0.5),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.5),
    keras.layers.Dense(10, activation="softmax")
])

model.compile(optimizer="adam",
              loss="sparse_categorical_crossentropy",
              metrics=["accuracy"])
model

tensorflow.python.keras.engine.sequential.Sequential at 0x2b6ecf083c18>

output_names = [layer.name for layer in model.layers]
output_names

['bla','dense','dropout','dense_1','dropout_1','dense_2']

编辑添加加载/保存部分:

model.save('my_model.h5')
second_model =  keras.models.load_model('my_model.h5')
output_names = [layer.name for layer in second_model.layers]
output_names

['bla','dense','dropout','dense_1','dropout_1','dense_2']

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

您还可以添加张量流版本吗?