Tensorflow의 FreezeGraph이 끝난 .pb 파일의 INPUT의 Placeholder를 바꾸면서 모델을 재생성하는 Tips
7224 단어 TensorFlow파이썬tipsDeepLearning
[1, ?, ?, 3]
의 입력 크기로 정의된 .pb 파일의 Placeholder
를 [1, 513, 513, 3]
의 Placeholder
name='image'
부분은 대체 후 Placeholder의 이름을 자유롭게 지정한다.input_map={'image:0': inputs}
의 image:0
부분은 변환 전 모델의 Placeholder 이름을 지정합니다.replacement_of_input_placeholder.py
import tensorflow as tf
from tensorflow.tools.graph_transforms import TransformGraph
with tf.compat.v1.Session() as sess:
# shape=[1, ?, ?, 3] -> shape=[1, 513, 513, 3]
# name='image' specifies the placeholder name of the converted model
inputs = tf.compat.v1.placeholder(tf.float32, shape=[1, 513, 513, 3], name='image')
with tf.io.gfile.GFile('./model-mobilenet_v1_101.pb', 'rb') as f:
graph_def = tf.compat.v1.GraphDef()
graph_def.ParseFromString(f.read())
# 'image:0' specifies the placeholder name of the model before conversion
tf.graph_util.import_graph_def(graph_def, input_map={'image:0': inputs}, name='')
print([n for n in tf.compat.v1.get_default_graph().as_graph_def().node if n.name == 'image'])
# Delete Placeholder "image" before conversion
# see: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms
# TransformGraph(
# graph_def(),
# input_op_name,
# output_op_names,
# conversion options
# )
optimized_graph_def = TransformGraph(
tf.compat.v1.get_default_graph().as_graph_def(),
'image',
['heatmap','offset_2','displacement_fwd_2','displacement_bwd_2'],
['strip_unused_nodes(type=float, shape="1,513,513,3")'])
tf.io.write_graph(optimized_graph_def, './', 'model-mobilenet_v1_101_513.pb', as_text=False)
Result
[name: "image"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 1
}
dim {
size: 513
}
dim {
size: 513
}
dim {
size: 3
}
}
}
}
]
변환 전
변환 후
Graph Transform Tool
htps : // 기주 b. 코 m / 천사 rf ぉ w / 천사 rf ぉ w / t ree / 뭐 r / 천사 rf ぉ w /
Reference
이 문제에 관하여(Tensorflow의 FreezeGraph이 끝난 .pb 파일의 INPUT의 Placeholder를 바꾸면서 모델을 재생성하는 Tips), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PINTO/items/fed7ec9f23f0b2dfd243텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)