如何保存和加载具有特征层的tensorflow模型?

2024-04-26 20:18:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用自己的数据集:https://www.tensorflow.org/tutorials/load_data/csv完成了本教程。 这是我对模型的看法:

model = keras.Sequential([
    keras.layers.Dense(128, activation='relu', input_shape=[1]),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(256, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')
    ])

现在,我想保存经过训练的模型,以便在不同的程序中使用该模型

我使用的第一种方法是使用检查点回调

checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)

cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
                                                 save_weights_only=True,
                                                 verbose=1, period=10)


def train():
    model.fit(train_data, epochs=50)#, callbacks=[cp_callback])
    test_loss, test_acc = model.evaluate([[0],[0.4],[0.6],[1],[4.56],[2.1]],  [[0],[0],[1],[1],[1],[0]])
    print('\nTest accuracy:', test_acc)

但是,这不起作用,因为在我想使用模型的另一个程序中,我无法复制模型的确切形状:

def create_model():
  model = keras.Sequential([
    keras.layers.Dense(128, activation='relu', input_shape=[1]),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(256, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')
    ])

我也试过:

numeric_column = tf.feature_column.numeric_column('numeric', shape=[1])
numeric_columns = [numeric_column]

preprocessing_layer = tf.keras.layers.DenseFeatures(numeric_columns)

def create_model():
  model = keras.Sequential([
    preprocessing_layer,
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(256, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')
    ])

。。。但它仍然不起作用

在那之后,我尝试使用model.save("myModel.h5"),但这根本无法保存,现在我迷路了

请帮忙。多谢各位