訓練時使用固定大小, 方便編程實現和速度優化
部署時使用任意大小, 提高體驗
但是採用固定大小輸入做訓練, 部署時採用任意大小, 可能效果有點差別吧....
pb文件的網絡結構
-
import tensorflow as tf
-
output_graph_def = tf.GraphDef()
-
PB_PATH = r"./pb/feathers.pb"
-
with open(PB_PATH, "rb") as f:
-
output_graph_def.ParseFromString(f.read())
-
tf.import_graph_def(
-
output_graph_def,
-
name='', # 默認name爲import,類似scope
-
)
-
with tf.Session() as sess:
-
sess.run(tf.global_variables_initializer())
-
tf.summary.FileWriter('./log/', sess.graph)
tensorboard.exe --logdir .
將固定輸入大小的pb文件,轉化爲任意輸入大小的tfjs格式
-
import tensorflow as tf
-
from tensorflow.python.framework import graph_util
-
import tensorflowjs as tfjs
-
sess = tf.Session()
-
output_graph_def = tf.GraphDef()
-
# feathers starry candy
-
PB_PATH = r"./pb/candy.pb"
-
TFJS_PATH = r'./tfjs/candy'
-
in_image = tf.placeholder(tf.float32, (None, None, None, 3), name='in_x')
-
with open(PB_PATH, "rb") as f:
-
output_graph_def.ParseFromString(f.read())
-
tf.import_graph_def(
-
output_graph_def,
-
input_map={
-
'in_x:0': in_image
-
},
-
name='', # 默認name爲import,類似scope
-
# return_elements=['generator/mul:0']
-
)
-
sess.run(tf.global_variables_initializer())
-
output = sess.graph.get_tensor_by_name("generator/output:0")
-
with tf.Session() as sess:
-
sess.run(tf.global_variables_initializer())
-
constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['generator/output'])
-
with tf.gfile.FastGFile("./pb/tmp.pb", mode='wb') as f:
-
f.write(constant_graph.SerializeToString())
-
tfjs.converters.tf_saved_model_conversion_pb.convert_tf_frozen_model(
-
"./pb/tmp.pb",
-
'generator/output',
-
TFJS_PATH
-
)