Как заморозить конкретную c сохраненную модель устройства? - PullRequest
1 голос
/ 09 июля 2020

Мне нужно заморозить сохраненные модели для обслуживания, но некоторые из сохраненных моделей зависят от устройства c, как решить эту проблему? но экспортировать в сохраненную модель без четкой информации об устройствах.

1 Ответ

0 голосов
/ 09 июля 2020

Я не уверен, есть ли лучший способ решить эту проблему, но одна из возможностей - просто отредактировать сохраненную информацию о модели, чтобы удалить спецификации устройства. Приведенный ниже фрагмент должен сделать это, хотя вы должны сделать резервную копию сохраненной модели перед ее использованием на всякий случай.

from pathlib import Path
import tensorflow as tf
from tensorflow.core.protobuf.saved_model_pb2 import SavedModel

# Read the model file
model_path = saved_model_dir
graph_path = Path(model_path, 'saved_model.pb')
sm = SavedModel()
with graph_path.open('rb') as f:
    sm.ParseFromString(f.read())
# Go through graph and functions to remove every device specification
for mg in sm.meta_graphs:
    for node in mg.graph_def.node:
        node.device = ''
    for func in mg.graph_def.library.function:
        for node in func.node_def:
            node.device = ''
# Write over file
with graph_path.open('wb') as f:
    f.write(sm.SerializeToString())

# Now load model as usual
# ...
...