我在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
。
如何为我的图层添加自定义名称?
答案 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']
您能否添加整个代码,问题可能出在其他地方。
您还可以添加张量流版本吗?