tenorflow - инструмент преобразования графиков remove_nodes не может удалить узлы Switch, но узлы Identity - PullRequest
0 голосов
/ 27 марта 2020

Я могу удалить все узлы Identity из моей модели .pb с помощью команд:

bazel build tensorflow/tools/graph_transforms:transform_graph
bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=../m.pb --out_graph=../new.pb --inputs='batch_size,phase_train' --outputs='label_batch,embeddings' --transforms='strip_unused_nodes(type=float, shape="1,299,299,3") remove_nodes(op=Identity) fold_old_batch_norms fold_constants(ignore_errors=true)'

Однако я не могу сделать то же самое, если изменить Identity на Switch. Это означает, что приведенная ниже команда не удаляет узлы.

bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=../m.pb --out_graph=../new.pb --inputs='batch_size,phase_train' --outputs='label_batch,embeddings' --transforms='strip_unused_nodes(type=float, shape="1,299,299,3") remove_nodes(op=Switch) fold_old_batch_norms fold_constants(ignore_errors=true)'

Вот как я проверяю узлы модели:

bazel-bin/tensorflow/tools/graph_transforms/summarize_graph --in_graph=../new.pb

Результат, как показано ниже:

Найдено 2 возможных входа: (name = phase_train, type = bool (10), shape =) (name = batch_size, type = int32 (3), shape =) Переменных не обнаружено. Найдено 2 возможных выхода: (name = label_batch, op = Identity) (name = embeddings, op = Mul) Найдено 23512506 (23.51M) постоянных параметров, 0 (0) переменных параметров и 676 control_edges используемых типов операций: 2019 Switch, 1105 Const, 566 Identity, 449 Merge, 448 Sub, 249 Mul, 224 FusedBatchNormV3, 132 Conv2D, 131 Relu, 23 ConcatV2, 21 BiasAdd, 21 AddV2, 3 Shape, 3 MaxPool, 3 Reshape, 2 Placeholder, 1 Maximum, 1 Pack, 1 MatMul, 1 QueueDequeueUpToV2, 1 RandomUniform, 1 GreaterEqual, 1 FIFOQueueV2, 1 Rsqrt, 1 AvgPool, 1 Square, 1 StridedSlice, 1 Cast, 1 Sum, 1 Добавить Чтобы использовать с tenorflow / tools / benchmark: benchmark_model, попробуйте следующие аргументы: b запустите тензор потока / tools / benchmark: benchmark_model - --graph = .. / new.pb --show_flops --input_layer = phase_train, batch_size --input_layer_type = bool, int32 --input_layer_shape =: --output_layer = label_batch, вложения

Мой вопрос, как я могу удалить узлы коммутатора?

...