gpt4 book ai didi

Tensorflow SavedModel 在加载时忽略 Assets 文件

转载 作者:行者123 更新时间:2023-12-04 17:22:16 27 4
gpt4 key购买 nike

我微调了来自 Tensorflow hub 的 BERT 模型,以构建一个简单的情绪分析器。该模型训练并运行良好。在导出时,我简单地使用了:

tf.saved_model.save(模型, export_dir='models')

这工作得很好......直到我重新启动。

重启后,模型不再加载。我试过使用 Keras 加载器和 Tensorflow 服务器,但我遇到了同样的错误。

我收到以下错误消息:

Not found: /tmp/tfhub_modules/09bd4e665682e6f03bc72fbcff7a68bf879910e/assets/vocab.txt; No such file or directory

该模型正在尝试从 tfhub 模块缓存中加载 Assets ,该缓存会因重启而被删除。我知道我可以保留缓存,但我不想这样做,因为我希望能够生成模型,然后将它们复制到单独的应用程序中,而不必担心缓存。

关键是我认为根本没有必要在缓存中查找 Assets 。该模型保存在 Assets 文件夹中,其中生成了 vocab.txt,因此为了找到 Assets ,它只需要在其自己的 Assets 文件夹中查找(我认为)。然而,它似乎并没有这样做。

有什么办法可以改变这种行为吗?


添加了构建和导出模型的代码(这不是一个聪明的模型,只是对我的工作流程进行原型(prototype)设计):

bert_model_name = "bert_en_uncased_L-12_H-768_A-12"

BATCH_SIZE = 64
EPOCHS = 1 # Initial

def build_bert_model(bert_model_name):
input_layer = tf.keras.layers.Input(shape=(), dtype=tf.string, name="inputs")
preprocessing_layer = hub.KerasLayer(
map_model_to_preprocess[bert_model_name], name="preprocessing"
)

encoder_inputs = preprocessing_layer(input_layer)
bert_model = hub.KerasLayer(
map_name_to_handle[bert_model_name], name="BERT_encoder"
)
outputs = bert_model(encoder_inputs)

net = outputs["pooled_output"]
net = tf.keras.layers.Dropout(0.1)(net)
net = tf.keras.layers.Dense(1, activation=None, name="classifier")(net)
return tf.keras.Model(input_layer, net)

def main():
train_ds, val_ds = load_sentiment140(batch_size=BATCH_SIZE, epochs=EPOCHS)
steps_per_epoch = tf.data.experimental.cardinality(train_ds).numpy()
init_lr = 3e-5

optimizer = tf.keras.optimizers.Adam(learning_rate=init_lr)
model = build_bert_model(bert_model_name)

model.compile(optimizer=optimizer, loss='mse', metrics='mse')
model.fit(train_ds, validation_data=val_ds, steps_per_epoch=steps_per_epoch)

tf.saved_model.save(model, export_dir='models')

最佳答案

此问题来自由 bug 的/1 和/2 版本触发的 TensorFlow https://tfhub.dev/tensorflow/bert_en_uncased_preprocess。更新后的模型 tensorflow/bert_*_preprocess/3(上周五发布)避免了这个错误。请更新到最新版本。

Classify Text with BERT 教程已相应更新。

感谢您提出这个问题!

关于Tensorflow SavedModel 在加载时忽略 Assets 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65511729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com