diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-11-21 19:21:22 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-11-21 19:21:22 +0100 |
commit | 99ca9b2907ff637fc6e4e0a61860923ac1c9dee5 (patch) | |
tree | d5a5e408d56e9165cd716e9531ab9bcec6a29e4a /searchlib/src | |
parent | 61cae2609740b51c180b2f507b5e4d0eb399fedc (diff) |
Separate model integration into a separate module
This allows us to access model importers (such as TensorFlow)
in config models without loading one instance per config model
instance, which is not possible with TensorFlow because it depends
on JNI code.
Diffstat (limited to 'searchlib/src')
54 files changed, 35 insertions, 65983 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxImporter.java deleted file mode 100644 index e6bb5f40b3f..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxImporter.java +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.IntermediateGraph; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.onnx.GraphImporter; -import onnx.Onnx; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -/** - * Converts a ONNX model into a ranking expression and set of constants. - * - * @author lesters - */ -public class OnnxImporter extends ModelImporter { - - @Override - public boolean canImport(String modelPath) { - File modelFile = new File(modelPath); - if ( ! modelFile.isFile()) return false; - - return modelFile.toString().endsWith(".onnx"); - } - - @Override - public ImportedModel importModel(String modelName, String modelPath) { - try (FileInputStream inputStream = new FileInputStream(modelPath)) { - Onnx.ModelProto model = Onnx.ModelProto.parseFrom(inputStream); - IntermediateGraph graph = GraphImporter.importGraph(modelName, model); - return convertIntermediateGraphToModel(graph, modelPath); - } catch (IOException e) { - throw new IllegalArgumentException("Could not import ONNX model from '" + modelPath + "'", e); - } - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowImporter.java deleted file mode 100644 index 7c18e04bae7..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowImporter.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.IntermediateGraph; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow.GraphImporter; -import org.tensorflow.SavedModelBundle; - -import java.io.File; -import java.io.IOException; - -/** - * Converts a saved TensorFlow model into a ranking expression and set of constants. - * - * @author bratseth - * @author lesters - */ -public class TensorFlowImporter extends ModelImporter { - - @Override - public boolean canImport(String modelPath) { - File modelDir = new File(modelPath); - if ( ! modelDir.isDirectory()) return false; - - // No other model types are stored in protobuf files thus far - for (File file : modelDir.listFiles()) { - if (file.toString().endsWith(".pbtxt")) return true; - if (file.toString().endsWith(".pb")) return true; - } - return false; - } - - /** - * Imports a saved TensorFlow model from a directory. - * The model should be saved as a .pbtxt or .pb file. - * - * @param modelName the name of the model to import, consisting of characters in [A-Za-z0-9_] - * @param modelDir the directory containing the TensorFlow model files to import - */ - @Override - public ImportedModel importModel(String modelName, String modelDir) { - try (SavedModelBundle model = SavedModelBundle.load(modelDir, "serve")) { - return importModel(modelName, modelDir, model); - } - catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Could not import TensorFlow model from directory '" + modelDir + "'", e); - } - } - - /** Imports a TensorFlow model */ - ImportedModel importModel(String modelName, String modelDir, SavedModelBundle model) { - try { - IntermediateGraph graph = GraphImporter.importGraph(modelName, model); - return convertIntermediateGraphToModel(graph, modelDir); - } - catch (IOException e) { - throw new IllegalArgumentException("Could not import TensorFlow model '" + model + "'", e); - } - } - - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverter.java deleted file mode 100644 index 25bac27f315..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverter.java +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow.TensorConverter; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow.GraphImporter; -import com.yahoo.tensor.serialization.JsonFormat; -import com.yahoo.yolean.Exceptions; -import org.tensorflow.SavedModelBundle; - -import java.nio.charset.StandardCharsets; - -/** - * Converts TensorFlow Variables to the Vespa document format. - * Intended to be used from the command line to convert trained tensors to document form. - * - * @author bratseth - */ -public class VariableConverter { - - /** - * Reads the tensor with the given TensorFlow name at the given model location, - * and encodes it as UTF-8 Vespa document tensor JSON having the given ordered tensor type. - * Note that order of dimensions in the tensor type does matter as the TensorFlow tensor - * tensor dimensions are implicitly ordered. - */ - public static byte[] importVariable(String modelDir, String tensorFlowVariableName, String orderedTypeSpec) { - try (SavedModelBundle bundle = SavedModelBundle.load(modelDir, "serve")) { - return JsonFormat.encode(TensorConverter.toVespaTensor(GraphImporter.readVariable(tensorFlowVariableName, - bundle), - OrderedTensorType.fromSpec(orderedTypeSpec))); - } - catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Could not import TensorFlow model from directory '" + modelDir + "'", e); - } - } - - public static void main(String[] args) { - if ( args.length != 3) { - System.out.println("Converts a TensorFlow variable into Vespa tensor document field value JSON:"); - System.out.println("A JSON map containing a 'cells' array, see"); - System.out.println("http://docs.vespa.ai/documentation/reference/document-json-put-format.html#tensor)"); - System.out.println(""); - System.out.println("Arguments: modelDirectory tensorFlowVariableName orderedTypeSpec"); - System.out.println(" - modelDirectory: The directory of the TensorFlow SavedModel"); - System.out.println(" - tensorFlowVariableName: The name of the TensorFlow variable to convert"); - System.out.println(" - orderedTypeSpec: The tensor type, e.g tensor(b[],a[10]), where dimensions are "); - System.out.println(" ordered as given in the deployment log message starting by "); - System.out.println(" 'Importing TensorFlow variable'"); - return; - } - - try { - System.out.println(new String(importVariable(args[0], args[1], args[2]), StandardCharsets.UTF_8)); - } - catch (Exception e) { - System.err.println("Import failed: " + Exceptions.toMessageString(e)); - } - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/XGBoostImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/XGBoostImporter.java deleted file mode 100644 index 725f319a839..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/XGBoostImporter.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.xgboost.XGBoostParser; -import com.yahoo.searchlib.rankingexpression.parser.ParseException; - -import java.io.File; -import java.io.IOException; - -/** - * Converts a saved XGBoost model into a ranking expression. - * - * @author grace-lam - * @author bratseth - */ -public class XGBoostImporter extends ModelImporter { - - @Override - public boolean canImport(String modelPath) { - File modelFile = new File(modelPath); - if ( ! modelFile.isFile()) return false; - - return modelFile.toString().endsWith(".json"); // No other models ends by json yet - } - - @Override - public ImportedModel importModel(String modelName, String modelPath) { - try { - ImportedModel model = new ImportedModel(modelName, modelPath); - XGBoostParser parser = new XGBoostParser(modelPath); - RankingExpression expression = new RankingExpression(parser.toRankingExpression()); - model.expression(modelName, expression); - return model; - } catch (IOException e) { - throw new IllegalArgumentException("Could not import XGBoost model from '" + modelPath + "'", e); - } catch (ParseException e) { - throw new IllegalArgumentException("Could not parse ranking expression resulting from '" + modelPath + "'", e); - } - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ImportedModel.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ImportedModel.java index 59ec66b7209..854a5202916 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ImportedModel.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ImportedModel.java @@ -1,7 +1,6 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.yahoo.collections.Pair; import com.yahoo.searchlib.rankingexpression.ExpressionFunction; @@ -10,13 +9,11 @@ import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Optional; import java.util.regex.Pattern; @@ -64,8 +61,7 @@ public class ImportedModel { /** * Returns an immutable map of the small constants of this. - * These should have sizes up to a few kb at most, and correspond to constant - * values given in the TensorFlow or ONNX source. + * These should have sizes up to a few kb at most, and correspond to constant values given in the source model. */ public Map<String, Tensor> smallConstants() { return Collections.unmodifiableMap(smallConstants); } @@ -93,18 +89,18 @@ public class ImportedModel { public Map<String, Signature> signatures() { return Collections.unmodifiableMap(signatures); } /** Returns the given signature. If it does not already exist it is added to this. */ - Signature signature(String name) { + public Signature signature(String name) { return signatures.computeIfAbsent(name, Signature::new); } /** Convenience method for returning a default signature */ - Signature defaultSignature() { return signature(defaultSignatureName); } + public Signature defaultSignature() { return signature(defaultSignatureName); } - void input(String name, TensorType argumentType) { inputs.put(name, argumentType); } - void smallConstant(String name, Tensor constant) { smallConstants.put(name, constant); } - void largeConstant(String name, Tensor constant) { largeConstants.put(name, constant); } - void expression(String name, RankingExpression expression) { expressions.put(name, expression); } - void function(String name, RankingExpression expression) { functions.put(name, expression); } + public void input(String name, TensorType argumentType) { inputs.put(name, argumentType); } + public void smallConstant(String name, Tensor constant) { smallConstants.put(name, constant); } + public void largeConstant(String name, Tensor constant) { largeConstants.put(name, constant); } + public void expression(String name, RankingExpression expression) { expressions.put(name, expression); } + public void function(String name, RankingExpression expression) { functions.put(name, expression); } /** * Returns all the output expressions of this indexed by name. The names consist of one or two parts @@ -116,9 +112,9 @@ public class ImportedModel { List<Pair<String, ExpressionFunction>> expressions = new ArrayList<>(); for (Map.Entry<String, Signature> signatureEntry : signatures().entrySet()) { for (Map.Entry<String, String> outputEntry : signatureEntry.getValue().outputs().entrySet()) - expressions.add(new Pair<>(signatureEntry.getKey() + "." + outputEntry.getKey(), + expressions.add(new Pair<>(signatureEntry.getKey() + "" + outputEntry.getKey(), signatureEntry.getValue().outputExpression(outputEntry.getKey()) - .withName(signatureEntry.getKey() + "." + outputEntry.getKey()))); + .withName(signatureEntry.getKey() + "" + outputEntry.getKey()))); if (signatureEntry.getValue().outputs().isEmpty()) // fallback: Signature without outputs expressions.add(new Pair<>(signatureEntry.getKey(), new ExpressionFunction(signatureEntry.getKey(), diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ImportedModels.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ImportedModels.java index 40d1ca8030a..55f1eef741c 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ImportedModels.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ImportedModels.java @@ -1,7 +1,6 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.yahoo.path.Path; @@ -24,27 +23,26 @@ public class ImportedModels { /** All imported models, indexed by their names */ private final ImmutableMap<String, ImportedModel> importedModels; - private static final ImmutableList<ModelImporter> importers = - ImmutableList.of(new TensorFlowImporter(), new OnnxImporter(), new XGBoostImporter()); - /** Create a null imported models */ public ImportedModels() { importedModels = ImmutableMap.of(); } - public ImportedModels(File modelsDirectory) { + public ImportedModels(File modelsDirectory, Collection<ModelImporter> importers) { Map<String, ImportedModel> models = new HashMap<>(); // Find all subdirectories recursively which contains a model we can read - importRecursively(modelsDirectory, models); + importRecursively(modelsDirectory, models, importers); importedModels = ImmutableMap.copyOf(models); } - private static void importRecursively(File dir, Map<String, ImportedModel> models) { + private static void importRecursively(File dir, + Map<String, ImportedModel> models, + Collection<ModelImporter> importers) { if ( ! dir.isDirectory()) return; Arrays.stream(dir.listFiles()).sorted().forEach(child -> { - Optional<ModelImporter> importer = findImporterOf(child); + Optional<ModelImporter> importer = findImporterOf(child, importers); if (importer.isPresent()) { String name = toName(child); ImportedModel existing = models.get(name); @@ -54,12 +52,12 @@ public class ImportedModels { models.put(name, importer.get().importModel(name, child)); } else { - importRecursively(child, models); + importRecursively(child, models, importers); } }); } - private static Optional<ModelImporter> findImporterOf(File path) { + private static Optional<ModelImporter> findImporterOf(File path, Collection<ModelImporter> importers) { return importers.stream().filter(item -> item.canImport(path.toString())).findFirst(); } @@ -93,7 +91,7 @@ public class ImportedModels { } private static Path stripFileEnding(Path path) { - int dotIndex = path.last().lastIndexOf("."); + int dotIndex = path.last().lastIndexOf(""); if (dotIndex <= 0) return path; return path.withLast(path.last().substring(0, dotIndex)); } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ModelImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ModelImporter.java index 481b7f9397a..1b6494e8ce8 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/ModelImporter.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/ModelImporter.java @@ -1,11 +1,9 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; import com.yahoo.searchlib.rankingexpression.RankingExpression; import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; import com.yahoo.searchlib.rankingexpression.evaluation.Value; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.IntermediateGraph; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Constant; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.IntermediateOperation; import com.yahoo.searchlib.rankingexpression.parser.ParseException; @@ -47,7 +45,7 @@ public abstract class ModelImporter { * Takes an IntermediateGraph and converts it to a ImportedModel containing * the actual Vespa ranking expressions. */ - static ImportedModel convertIntermediateGraphToModel(IntermediateGraph graph, String modelSource) { + public static ImportedModel convertIntermediateGraphToModel(IntermediateGraph graph, String modelSource) { ImportedModel model = new ImportedModel(graph.name(), modelSource); graph.optimize(); diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/GraphImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/GraphImporter.java deleted file mode 100644 index 3fe92440cae..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/GraphImporter.java +++ /dev/null @@ -1,216 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.onnx; - -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.IntermediateGraph; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Argument; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.ConcatV2; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Constant; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Identity; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.IntermediateOperation; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Join; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Map; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.MatMul; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.NoOp; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Reshape; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Shape; -import com.yahoo.tensor.functions.ScalarFunctions; -import onnx.Onnx; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * Converts an ONNX graph to a Vespa IntermediateGraph which is the basis - * for generating Vespa ranking expressions. - * - * @author lesters - */ -public class GraphImporter { - - public static IntermediateOperation mapOperation(Onnx.NodeProto node, - List<IntermediateOperation> inputs, - IntermediateGraph graph) { - String nodeName = node.getName(); - String modelName = graph.name(); - - switch (node.getOpType().toLowerCase()) { - case "abs": return new Map(modelName, nodeName, inputs, ScalarFunctions.abs()); - case "add": return new Join(modelName, nodeName, inputs, ScalarFunctions.add()); - case "acos": return new Map(modelName, nodeName, inputs, ScalarFunctions.acos()); - case "asin": return new Map(modelName, nodeName, inputs, ScalarFunctions.asin()); - case "atan": return new Map(modelName, nodeName, inputs, ScalarFunctions.atan()); - case "ceil": return new Map(modelName, nodeName, inputs, ScalarFunctions.ceil()); - case "concat": return new ConcatV2(modelName, nodeName, inputs); - case "cos": return new Map(modelName, nodeName, inputs, ScalarFunctions.cos()); - case "div": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide()); - case "elu": return new Map(modelName, nodeName, inputs, ScalarFunctions.elu()); - case "equal": return new Join(modelName, nodeName, inputs, ScalarFunctions.equal()); - case "exp": return new Map(modelName, nodeName, inputs, ScalarFunctions.exp()); - case "floor": return new Map(modelName, nodeName, inputs, ScalarFunctions.floor()); - case "greater": return new Join(modelName, nodeName, inputs, ScalarFunctions.greater()); - case "identity": return new Identity(modelName, nodeName, inputs); - case "less": return new Join(modelName, nodeName, inputs, ScalarFunctions.less()); - case "log": return new Map(modelName, nodeName, inputs, ScalarFunctions.log()); - case "matmul": return new MatMul(modelName, nodeName, inputs); - case "max": return new Join(modelName, nodeName, inputs, ScalarFunctions.max()); - case "min": return new Join(modelName, nodeName, inputs, ScalarFunctions.min()); - case "mean": return new Join(modelName, nodeName, inputs, ScalarFunctions.mean()); - case "mul": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply()); - case "neg": return new Map(modelName, nodeName, inputs, ScalarFunctions.neg()); - case "pow": return new Join(modelName, nodeName, inputs, ScalarFunctions.pow()); - case "reshape": return new Reshape(modelName, nodeName, inputs); - case "reciprocal": return new Map(modelName, nodeName, inputs, ScalarFunctions.reciprocal()); - case "relu": return new Map(modelName, nodeName, inputs, ScalarFunctions.relu()); - case "selu": return new Map(modelName, nodeName, inputs, ScalarFunctions.selu()); - case "shape": return new Shape(modelName, nodeName, inputs); - case "sin": return new Map(modelName, nodeName, inputs, ScalarFunctions.sin()); - case "sqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.sqrt()); - case "sigmoid": return new Map(modelName, nodeName, inputs, ScalarFunctions.sigmoid()); - case "sub": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract()); - case "tan": return new Map(modelName, nodeName, inputs, ScalarFunctions.tan()); - case "tanh": return new Map(modelName, nodeName, inputs, ScalarFunctions.tanh()); - } - - IntermediateOperation op = new NoOp(modelName, node.getName(), inputs); - op.warning("Operation '" + node.getOpType() + "' is currently not implemented"); - return op; - } - - public static IntermediateGraph importGraph(String modelName, Onnx.ModelProto model) { - Onnx.GraphProto onnxGraph = model.getGraph(); - - IntermediateGraph intermediateGraph = new IntermediateGraph(modelName); - importOperations(onnxGraph, intermediateGraph); - verifyOutputTypes(onnxGraph, intermediateGraph); - - return intermediateGraph; - } - - private static void importOperations(Onnx.GraphProto onnxGraph, IntermediateGraph intermediateGraph) { - for (Onnx.ValueInfoProto valueInfo : onnxGraph.getOutputList()) { - importOperation(valueInfo.getName(), onnxGraph, intermediateGraph); - } - } - - private static IntermediateOperation importOperation(String name, - Onnx.GraphProto onnxGraph, - IntermediateGraph intermediateGraph) { - if (intermediateGraph.alreadyImported(name)) { - return intermediateGraph.get(name); - } - IntermediateOperation operation; - if (isArgumentTensor(name, onnxGraph)) { - Onnx.ValueInfoProto valueInfoProto = getArgumentTensor(name, onnxGraph); - if (valueInfoProto == null) - throw new IllegalArgumentException("Could not find argument tensor: " + name); - OrderedTensorType type = TypeConverter.fromOnnxType(valueInfoProto.getType()); - operation = new Argument(intermediateGraph.name(), valueInfoProto.getName(), type); - - intermediateGraph.inputs(intermediateGraph.defaultSignature()) - .put(IntermediateOperation.namePartOf(name), operation.vespaName()); - - } else if (isConstantTensor(name, onnxGraph)) { - Onnx.TensorProto tensorProto = getConstantTensor(name, onnxGraph); - OrderedTensorType defaultType = OrderedTensorType.fromDimensionList(tensorProto.getDimsList()); - operation = new Constant(intermediateGraph.name(), name, defaultType); - operation.setConstantValueFunction(type -> new TensorValue(TensorConverter.toVespaTensor(tensorProto, type))); - - } else { - Onnx.NodeProto node = getNodeFromGraph(name, onnxGraph); - List<IntermediateOperation> inputs = importOperationInputs(node, onnxGraph, intermediateGraph); - operation = mapOperation(node, inputs, intermediateGraph); - - if (isOutputNode(name, onnxGraph)) { - intermediateGraph.outputs(intermediateGraph.defaultSignature()) - .put(IntermediateOperation.namePartOf(name), operation.vespaName()); - } - } - intermediateGraph.put(operation.vespaName(), operation); - - return operation; - } - - private static boolean isArgumentTensor(String name, Onnx.GraphProto graph) { - Onnx.ValueInfoProto value = getArgumentTensor(name, graph); - Onnx.TensorProto tensor = getConstantTensor(name, graph); - return value != null && tensor == null; - } - - private static boolean isConstantTensor(String name, Onnx.GraphProto graph) { - Onnx.ValueInfoProto value = getArgumentTensor(name, graph); - Onnx.TensorProto tensor = getConstantTensor(name, graph); - return value != null && tensor != null; - } - - private static Onnx.ValueInfoProto getArgumentTensor(String name, Onnx.GraphProto graph) { - for (Onnx.ValueInfoProto valueInfo : graph.getInputList()) { - if (valueInfo.getName().equals(name)) { - return valueInfo; - } - } - return null; - } - - private static Onnx.TensorProto getConstantTensor(String name, Onnx.GraphProto graph) { - for (Onnx.TensorProto tensorProto : graph.getInitializerList()) { - if (tensorProto.getName().equals(name)) { - return tensorProto; - } - } - return null; - } - - private static boolean isOutputNode(String name, Onnx.GraphProto graph) { - return getOutputNode(name, graph) != null; - } - - private static Onnx.ValueInfoProto getOutputNode(String name, Onnx.GraphProto graph) { - for (Onnx.ValueInfoProto valueInfo : graph.getOutputList()) { - if (valueInfo.getName().equals(name)) { - return valueInfo; - } - String nodeName = IntermediateOperation.namePartOf(valueInfo.getName()); - if (nodeName.equals(name)) { - return valueInfo; - } - } - return null; - } - - private static List<IntermediateOperation> importOperationInputs(Onnx.NodeProto node, - Onnx.GraphProto onnxGraph, - IntermediateGraph intermediateGraph) { - return node.getInputList().stream() - .map(nodeName -> importOperation(nodeName, onnxGraph, intermediateGraph)) - .collect(Collectors.toList()); - } - - private static void verifyOutputTypes(Onnx.GraphProto onnxGraph, IntermediateGraph intermediateGraph) { - for (String outputName : intermediateGraph.outputs(intermediateGraph.defaultSignature()).values()) { - IntermediateOperation operation = intermediateGraph.get(outputName); - Onnx.ValueInfoProto onnxNode = getOutputNode(outputName, onnxGraph); - OrderedTensorType type = operation.type().orElseThrow( - () -> new IllegalArgumentException("Output of '" + outputName + "' has no type.")); - TypeConverter.verifyType(onnxNode.getType(), type); - } - } - - private static Onnx.NodeProto getNodeFromGraph(String nodeName, Onnx.GraphProto graph) { - boolean hasPortNumber = nodeName.contains(":"); - for (Onnx.NodeProto node : graph.getNodeList()) { - if (hasPortNumber) { - for (String outputName : node.getOutputList()) { - if (outputName.equals(nodeName)) { - return node; - } - } - } else if (node.getName().equals(nodeName)) { - return node; - } - } - throw new IllegalArgumentException("Node '" + nodeName + "' not found in ONNX graph"); - } -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TensorConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TensorConverter.java deleted file mode 100644 index 18856d4a25f..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TensorConverter.java +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.onnx; - -import com.google.protobuf.ByteString; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.tensor.IndexedTensor; -import com.yahoo.tensor.Tensor; -import onnx.Onnx; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; - -/** - * Converts Onnx tensors into Vespa tensors. - * - * @author lesters - */ -public class TensorConverter { - - public static Tensor toVespaTensor(Onnx.TensorProto tensorProto, OrderedTensorType type) { - Values values = readValuesOf(tensorProto); - IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder) Tensor.Builder.of(type.type()); - for (int i = 0; i < values.size(); i++) { - builder.cellByDirectIndex(type.toDirectIndex(i), values.get(i)); - } - return builder.build(); - } - - private static Values readValuesOf(Onnx.TensorProto tensorProto) { - if (tensorProto.hasRawData()) { - switch (tensorProto.getDataType()) { - case FLOAT: return new RawFloatValues(tensorProto); - } - } else { - switch (tensorProto.getDataType()) { - case FLOAT: return new FloatValues(tensorProto); - } - } - throw new IllegalArgumentException("Cannot convert a tensor with elements of type " + - tensorProto.getDataType() + " to a Vespa tensor"); - } - - /** Allows reading values from buffers of various numeric types as bytes */ - private static abstract class Values { - abstract double get(int i); - abstract int size(); - } - - private static abstract class RawValues extends Values { - ByteBuffer bytes(Onnx.TensorProto tensorProto) { - ByteString byteString = tensorProto.getRawData(); - return byteString.asReadOnlyByteBuffer().order(ByteOrder.LITTLE_ENDIAN); - } - } - - private static class RawFloatValues extends RawValues { - private final FloatBuffer values; - private final int size; - RawFloatValues(Onnx.TensorProto tensorProto) { - values = bytes(tensorProto).asFloatBuffer(); - size = values.remaining(); - } - @Override double get(int i) { return values.get(i); } - @Override int size() { return size; } - } - - private static class FloatValues extends Values { - private final Onnx.TensorProto tensorProto; - FloatValues(Onnx.TensorProto tensorProto) { - this.tensorProto = tensorProto; - } - @Override double get(int i) { return tensorProto.getFloatData(i); } - @Override int size() { return tensorProto.getFloatDataCount(); } - } - - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TypeConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TypeConverter.java deleted file mode 100644 index 715c55d8323..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/onnx/TypeConverter.java +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.onnx; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.tensor.TensorType; -import onnx.Onnx; - -/** - * Converts and verifies ONNX tensor types into Vespa tensor types. - * - * @author lesters - */ -public class TypeConverter { - - public static void verifyType(Onnx.TypeProto typeProto, OrderedTensorType type) { - Onnx.TensorShapeProto shape = typeProto.getTensorType().getShape(); - if (shape != null) { - if (shape.getDimCount() != type.rank()) { - throw new IllegalArgumentException("Onnx shape of does not match Vespa shape"); - } - for (int onnxIndex = 0; onnxIndex < type.dimensions().size(); ++onnxIndex) { - int vespaIndex = type.dimensionMap(onnxIndex); - Onnx.TensorShapeProto.Dimension onnxDimension = shape.getDim(onnxIndex); - TensorType.Dimension vespaDimension = type.type().dimensions().get(vespaIndex); - if (onnxDimension.getDimValue() != vespaDimension.size().orElse(-1L)) { - throw new IllegalArgumentException("Onnx dimensions of does not match Vespa dimensions"); - } - } - } - } - - public static OrderedTensorType fromOnnxType(Onnx.TypeProto type) { - return fromOnnxType(type, "d"); // standard naming convention: d0, d1, ... - } - - public static OrderedTensorType fromOnnxType(Onnx.TypeProto type, String dimensionPrefix) { - Onnx.TensorShapeProto shape = type.getTensorType().getShape(); - OrderedTensorType.Builder builder = new OrderedTensorType.Builder(); - for (int i = 0; i < shape.getDimCount(); ++ i) { - String dimensionName = dimensionPrefix + i; - Onnx.TensorShapeProto.Dimension onnxDimension = shape.getDim(i); - if (onnxDimension.getDimValue() >= 0) { - builder.add(TensorType.Dimension.indexed(dimensionName, onnxDimension.getDimValue())); - } else { - builder.add(TensorType.Dimension.indexed(dimensionName)); - } - } - return builder.build(); - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Argument.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Argument.java index 7fc2aae87d1..ab6a80a193a 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Argument.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Argument.java @@ -1,8 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; +import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.VariableTensor; import com.yahoo.tensor.functions.Rename; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/ConcatV2.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/ConcatV2.java index 1b8c62fe0e9..1f479cd2e0b 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/ConcatV2.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/ConcatV2.java @@ -1,8 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; +import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.functions.TensorFunction; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/IntermediateOperation.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/IntermediateOperation.java index 0eff8e8bc08..aab50f422be 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/IntermediateOperation.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/IntermediateOperation.java @@ -180,7 +180,7 @@ public abstract class IntermediateOperation { /** * An interface mapping operation attributes to Vespa Values. - * Adapter for differences in ONNX/TensorFlow. + * Adapter for differences in different model types. */ public interface AttributeMap { Optional<Value> get(String key); diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Join.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Join.java index 8413ed74118..2d401469e40 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Join.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Join.java @@ -1,8 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; +import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.functions.Reduce; import com.yahoo.tensor.functions.TensorFunction; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Mean.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Mean.java index 95a77c07590..6ce9abf2ec9 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Mean.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Mean.java @@ -3,8 +3,8 @@ package com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue; import com.yahoo.searchlib.rankingexpression.evaluation.Value; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; +import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.rule.ConstantNode; import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode; import com.yahoo.searchlib.rankingexpression.rule.GeneratorLambdaFunctionNode; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Reshape.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Reshape.java index e91c2305f7d..ff87412396d 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Reshape.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/operations/Reshape.java @@ -2,8 +2,8 @@ package com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations; import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; +import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import com.yahoo.searchlib.rankingexpression.rule.ArithmeticNode; import com.yahoo.searchlib.rankingexpression.rule.ArithmeticOperator; import com.yahoo.searchlib.rankingexpression.rule.ComparisonNode; @@ -24,8 +24,6 @@ import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; -import static com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType.tensorSize; - public class Reshape extends IntermediateOperation { public Reshape(String modelName, String nodeName, List<IntermediateOperation> inputs) { @@ -52,7 +50,7 @@ public class Reshape extends IntermediateOperation { int size = cell.getValue().intValue(); if (size < 0) { size = -1 * (int)shape.reduce(Reduce.Aggregator.prod).asDouble() / - tensorSize(inputType.type()).intValue(); + OrderedTensorType.tensorSize(inputType.type()).intValue(); } outputTypeBuilder.add(TensorType.Dimension.indexed( String.format("%s_%d", vespaName(), dimensionIndex), size)); @@ -82,7 +80,7 @@ public class Reshape extends IntermediateOperation { } public static TensorFunction reshape(TensorFunction inputFunction, TensorType inputType, TensorType outputType) { - if (!tensorSize(inputType).equals(tensorSize(outputType))) { + if (!OrderedTensorType.tensorSize(inputType).equals(OrderedTensorType.tensorSize(outputType))) { throw new IllegalArgumentException("New and old shape of tensor must have the same size when reshaping"); } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/package-info.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/package-info.java index 1530754cc43..bb55ed768a6 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/package-info.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/package-info.java @@ -1,8 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. /** - * ONNX integration + * Model integration */ @ExportPackage -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; import com.yahoo.osgi.annotation.ExportPackage; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/AttributeConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/AttributeConverter.java deleted file mode 100644 index 89b75e8e3e2..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/AttributeConverter.java +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow; - -import com.yahoo.searchlib.rankingexpression.evaluation.BooleanValue; -import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue; -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.searchlib.rankingexpression.evaluation.Value; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.IntermediateOperation; -import org.tensorflow.framework.AttrValue; -import org.tensorflow.framework.NodeDef; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * Converts TensorFlow node attributes to Vespa attribute values. - * - * @author lesters - */ -public class AttributeConverter implements IntermediateOperation.AttributeMap { - - private final Map<String, AttrValue> attributeMap; - - public AttributeConverter(NodeDef node) { - attributeMap = node.getAttrMap(); - } - - public static AttributeConverter convert(NodeDef node) { - return new AttributeConverter(node); - } - - @Override - public Optional<Value> get(String key) { - if (attributeMap.containsKey(key)) { - AttrValue attrValue = attributeMap.get(key); - if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) { - return Optional.empty(); // requires type - } - if (attrValue.getValueCase() == AttrValue.ValueCase.B) { - return Optional.of(new BooleanValue(attrValue.getB())); - } - if (attrValue.getValueCase() == AttrValue.ValueCase.I) { - return Optional.of(new DoubleValue(attrValue.getI())); - } - if (attrValue.getValueCase() == AttrValue.ValueCase.F) { - return Optional.of(new DoubleValue(attrValue.getF())); - } - } - return Optional.empty(); - } - - @Override - public Optional<Value> get(String key, OrderedTensorType type) { - if (attributeMap.containsKey(key)) { - AttrValue attrValue = attributeMap.get(key); - if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) { - return Optional.of(new TensorValue(TensorConverter.toVespaTensor(attrValue.getTensor(), type.type()))); - } - } - return get(key); - } - - @Override - public Optional<List<Value>> getList(String key) { - if (attributeMap.containsKey(key)) { - AttrValue attrValue = attributeMap.get(key); - if (attrValue.getValueCase() == AttrValue.ValueCase.LIST) { - AttrValue.ListValue listValue = attrValue.getList(); - if ( ! listValue.getBList().isEmpty()) { - return Optional.of(listValue.getBList().stream().map(BooleanValue::new).collect(Collectors.toList())); - } - if ( ! listValue.getIList().isEmpty()) { - return Optional.of(listValue.getIList().stream().map(DoubleValue::new).collect(Collectors.toList())); - } - if ( ! listValue.getFList().isEmpty()) { - return Optional.of(listValue.getFList().stream().map(DoubleValue::new).collect(Collectors.toList())); - } - // add the rest - } - } - return Optional.empty(); - } -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/GraphImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/GraphImporter.java deleted file mode 100644 index e1b292f9e61..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/GraphImporter.java +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow; - -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.IntermediateGraph; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Argument; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.ConcatV2; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Const; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Constant; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.ExpandDims; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Identity; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.IntermediateOperation; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Join; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Map; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.MatMul; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Mean; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Merge; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.NoOp; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.PlaceholderWithDefault; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Reshape; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Select; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Shape; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Squeeze; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.operations.Switch; -import com.yahoo.tensor.functions.ScalarFunctions; -import org.tensorflow.SavedModelBundle; -import org.tensorflow.Session; -import org.tensorflow.framework.GraphDef; -import org.tensorflow.framework.MetaGraphDef; -import org.tensorflow.framework.NodeDef; -import org.tensorflow.framework.SignatureDef; -import org.tensorflow.framework.TensorInfo; - -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Converts a TensorFlow graph to a Vespa IntermediateGraph which is the basis - * for generating Vespa ranking expressions. - * - * @author lesters - */ -public class GraphImporter { - - public static IntermediateOperation mapOperation(NodeDef node, - List<IntermediateOperation> inputs, - IntermediateGraph graph) { - String nodeName = node.getName(); - String modelName = graph.name(); - int nodePort = IntermediateOperation.indexPartOf(nodeName); - OrderedTensorType nodeType = TypeConverter.fromTensorFlowType(node); - AttributeConverter attributes = AttributeConverter.convert(node); - - switch (node.getOp().toLowerCase()) { - // array ops - case "concatv2": return new ConcatV2(modelName, nodeName, inputs); - case "const": return new Const(modelName, nodeName, inputs, attributes, nodeType); - case "expanddims": return new ExpandDims(modelName, nodeName, inputs); - case "identity": return new Identity(modelName, nodeName, inputs); - case "placeholder": return new Argument(modelName, nodeName, nodeType); - case "placeholderwithdefault": return new PlaceholderWithDefault(modelName, nodeName, inputs); - case "reshape": return new Reshape(modelName, nodeName, inputs); - case "shape": return new Shape(modelName, nodeName, inputs); - case "squeeze": return new Squeeze(modelName, nodeName, inputs, attributes); - - // control flow - case "merge": return new Merge(modelName, nodeName, inputs); - case "switch": return new Switch(modelName, nodeName, inputs, nodePort); - - // math ops - case "add": return new Join(modelName, nodeName, inputs, ScalarFunctions.add()); - case "add_n": return new Join(modelName, nodeName, inputs, ScalarFunctions.add()); - case "acos": return new Map(modelName, nodeName, inputs, ScalarFunctions.acos()); - case "div": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide()); - case "realdiv": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide()); - case "floor": return new Map(modelName, nodeName, inputs, ScalarFunctions.floor()); - case "matmul": return new MatMul(modelName, nodeName, inputs); - case "maximum": return new Join(modelName, nodeName, inputs, ScalarFunctions.max()); - case "mean": return new Mean(modelName, nodeName, inputs, attributes); - case "reducemean": return new Mean(modelName, nodeName, inputs, attributes); - case "mul": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply()); - case "multiply": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply()); - case "rsqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.rsqrt()); - case "select": return new Select(modelName, nodeName, inputs); - case "where3": return new Select(modelName, nodeName, inputs); - case "sigmoid": return new Map(modelName, nodeName, inputs, ScalarFunctions.sigmoid()); - case "squareddifference": return new Join(modelName, nodeName, inputs, ScalarFunctions.squareddifference()); - case "sub": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract()); - case "subtract": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract()); - - // nn ops - case "biasadd": return new Join(modelName, nodeName, inputs, ScalarFunctions.add()); - case "elu": return new Map(modelName, nodeName, inputs, ScalarFunctions.elu()); - case "relu": return new Map(modelName, nodeName, inputs, ScalarFunctions.relu()); - case "selu": return new Map(modelName, nodeName, inputs, ScalarFunctions.selu()); - - // state ops - case "variable": return new Constant(modelName, nodeName, nodeType); - case "variablev2": return new Constant(modelName, nodeName, nodeType); - - // evaluation no-ops - case "stopgradient":return new Identity(modelName, nodeName, inputs); - case "noop": return new NoOp(modelName, nodeName, inputs); - - } - - IntermediateOperation op = new NoOp(modelName, node.getName(), inputs); - op.warning("Operation '" + node.getOp() + "' is currently not implemented"); - return op; - } - - public static IntermediateGraph importGraph(String modelName, SavedModelBundle bundle) throws IOException { - MetaGraphDef tfGraph = MetaGraphDef.parseFrom(bundle.metaGraphDef()); - - IntermediateGraph intermediateGraph = new IntermediateGraph(modelName); - importSignatures(tfGraph, intermediateGraph); - importOperations(tfGraph, intermediateGraph, bundle); - verifyOutputTypes(tfGraph, intermediateGraph); - - return intermediateGraph; - } - - private static void importSignatures(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) { - for (java.util.Map.Entry<String, SignatureDef> signatureEntry : tfGraph.getSignatureDefMap().entrySet()) { - String signatureName = signatureEntry.getKey(); - java.util.Map<String, TensorInfo> inputInfoMap = signatureEntry.getValue().getInputsMap(); - for (java.util.Map.Entry<String, TensorInfo> input : inputInfoMap.entrySet()) { - String inputName = input.getKey(); - String nodeName = input.getValue().getName(); - intermediateGraph.inputs(signatureName).put(inputName, IntermediateOperation.namePartOf(nodeName)); - } - java.util.Map<String, TensorInfo> outputInfoMap = signatureEntry.getValue().getOutputsMap(); - for (java.util.Map.Entry<String, TensorInfo> output : outputInfoMap.entrySet()) { - String outputName = output.getKey(); - String nodeName = output.getValue().getName(); - intermediateGraph.outputs(signatureName).put(outputName, IntermediateOperation.namePartOf(nodeName)); - } - } - } - - private static void importOperations(MetaGraphDef tfGraph, - IntermediateGraph intermediateGraph, - SavedModelBundle bundle) { - for (String signatureName : intermediateGraph.signatures()) { - for (String outputName : intermediateGraph.outputs(signatureName).values()) { - importOperation(outputName, tfGraph.getGraphDef(), intermediateGraph, bundle); - } - } - } - - private static IntermediateOperation importOperation(String nodeName, - GraphDef tfGraph, - IntermediateGraph intermediateGraph, - SavedModelBundle bundle) { - if (intermediateGraph.alreadyImported(nodeName)) { - return intermediateGraph.get(nodeName); - } - NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(nodeName), tfGraph); - List<IntermediateOperation> inputs = importOperationInputs(node, tfGraph, intermediateGraph, bundle); - IntermediateOperation operation = mapOperation(node, inputs, intermediateGraph); - intermediateGraph.put(nodeName, operation); - - List<IntermediateOperation> controlInputs = importControlInputs(node, tfGraph, intermediateGraph, bundle); - if (controlInputs.size() > 0) { - operation.setControlInputs(controlInputs); - } - - if (operation.isConstant()) { - operation.setConstantValueFunction( - type -> new TensorValue(TensorConverter.toVespaTensor(readVariable(nodeName, bundle), type))); - } - - return operation; - } - - private static List<IntermediateOperation> importOperationInputs(NodeDef node, - GraphDef tfGraph, - IntermediateGraph intermediateGraph, - SavedModelBundle bundle) { - return node.getInputList().stream() - .filter(name -> ! isControlDependency(name)) - .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle)) - .collect(Collectors.toList()); - } - - private static List<IntermediateOperation> importControlInputs(NodeDef node, - GraphDef tfGraph, - IntermediateGraph intermediateGraph, - SavedModelBundle bundle) { - return node.getInputList().stream() - .filter(nodeName -> isControlDependency(nodeName)) - .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle)) - .collect(Collectors.toList()); - } - - private static boolean isControlDependency(String name) { - return name.startsWith("^"); - } - - private static NodeDef getTensorFlowNodeFromGraph(String name, GraphDef tfGraph) { - for (NodeDef node : tfGraph.getNodeList()) { - if (node.getName().equals(name)) { - return node; - } - } - throw new IllegalArgumentException("Could not find node '" + name + "'"); - } - - public static org.tensorflow.Tensor<?> readVariable(String name, SavedModelBundle bundle) { - Session.Runner fetched = bundle.session().runner().fetch(name); - List<org.tensorflow.Tensor<?>> importedTensors = fetched.run(); - if (importedTensors.size() != 1) - throw new IllegalStateException("Expected 1 tensor from fetching " + name + - ", but got " + importedTensors.size()); - return importedTensors.get(0); - } - - private static void verifyOutputTypes(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) { - for (String signatureName : intermediateGraph.signatures()) { - for (String outputName : intermediateGraph.outputs(signatureName).values()) { - IntermediateOperation operation = intermediateGraph.get(outputName); - NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(operation.name()), tfGraph.getGraphDef()); - OrderedTensorType type = operation.type().orElseThrow( - () -> new IllegalArgumentException("Output of '" + outputName + "' has no type.")); - TypeConverter.verifyType(node, type); - } - } - - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TensorConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TensorConverter.java deleted file mode 100644 index d2d0acfc964..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TensorConverter.java +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.tensor.IndexedTensor; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import org.tensorflow.framework.TensorProto; - -import java.nio.ByteBuffer; -import java.nio.DoubleBuffer; -import java.nio.FloatBuffer; -import java.nio.IntBuffer; -import java.nio.LongBuffer; - - -/** - * Converts TensorFlow tensors into Vespa tensors. - * - * @author bratseth - * @author lesters - */ -public class TensorConverter { - - public static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor) { - return toVespaTensor(tfTensor, "d"); - } - - public static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, String dimensionPrefix) { - TensorType type = toVespaTensorType(tfTensor.shape(), dimensionPrefix); - Values values = readValuesOf(tfTensor); - IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type); - for (int i = 0; i < values.size(); i++) - builder.cellByDirectIndex(i, values.get(i)); - return builder.build(); - } - - public static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, OrderedTensorType type) { - Values values = readValuesOf(tfTensor); - IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder) Tensor.Builder.of(type.type()); - for (int i = 0; i < values.size(); i++) { - builder.cellByDirectIndex(type.toDirectIndex(i), values.get(i)); - } - return builder.build(); - } - - public static Tensor toVespaTensor(TensorProto tensorProto, TensorType type) { - IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type); - Values values = readValuesOf(tensorProto); - for (int i = 0; i < values.size(); ++i) { - builder.cellByDirectIndex(i, values.get(i)); - } - return builder.build(); - } - - private static TensorType toVespaTensorType(long[] shape, String dimensionPrefix) { - TensorType.Builder b = new TensorType.Builder(); - int dimensionIndex = 0; - for (long dimensionSize : shape) { - if (dimensionSize == 0) dimensionSize = 1; // TensorFlow ... - b.indexed(dimensionPrefix + (dimensionIndex++), dimensionSize); - } - return b.build(); - } - - public static Long tensorSize(TensorType type) { - Long size = 1L; - for (TensorType.Dimension dimension : type.dimensions()) { - size *= dimensionSize(dimension); - } - return size; - } - - public static Long dimensionSize(TensorType.Dimension dim) { - return dim.size().orElseThrow(() -> new IllegalArgumentException("Dimension has no size")); - } - - private static Values readValuesOf(org.tensorflow.Tensor<?> tfTensor) { - switch (tfTensor.dataType()) { - case DOUBLE: return new DoubleValues(tfTensor); - case FLOAT: return new FloatValues(tfTensor); - case BOOL: return new BoolValues(tfTensor); - case UINT8: return new IntValues(tfTensor); - case INT32: return new IntValues(tfTensor); - case INT64: return new LongValues(tfTensor); - } - throw new IllegalArgumentException("Cannot convert a tensor with elements of type " + - tfTensor.dataType() + " to a Vespa tensor"); - } - - private static Values readValuesOf(TensorProto tensorProto) { - switch (tensorProto.getDtype()) { - case DT_BOOL: - return new ProtoBoolValues(tensorProto); - case DT_HALF: - return new ProtoHalfValues(tensorProto); - case DT_INT16: - case DT_INT32: - return new ProtoIntValues(tensorProto); - case DT_INT64: - return new ProtoInt64Values(tensorProto); - case DT_FLOAT: - return new ProtoFloatValues(tensorProto); - case DT_DOUBLE: - return new ProtoDoubleValues(tensorProto); - } - throw new IllegalArgumentException("Unsupported data type in attribute tensor import"); - } - - /** Allows reading values from buffers of various numeric types as bytes */ - private static abstract class Values { - abstract double get(int i); - abstract int size(); - } - - private static abstract class TensorFlowValues extends Values { - private final int size; - TensorFlowValues(int size) { - this.size = size; - } - @Override int size() { return this.size; } - } - - private static class DoubleValues extends TensorFlowValues { - private final DoubleBuffer values; - DoubleValues(org.tensorflow.Tensor<?> tfTensor) { - super(tfTensor.numElements()); - values = DoubleBuffer.allocate(tfTensor.numElements()); - tfTensor.writeTo(values); - } - @Override double get(int i) { - return values.get(i); - } - } - - private static class FloatValues extends TensorFlowValues { - private final FloatBuffer values; - FloatValues(org.tensorflow.Tensor<?> tfTensor) { - super(tfTensor.numElements()); - values = FloatBuffer.allocate(tfTensor.numElements()); - tfTensor.writeTo(values); - } - @Override double get(int i) { - return values.get(i); - } - } - - private static class BoolValues extends TensorFlowValues { - private final ByteBuffer values; - BoolValues(org.tensorflow.Tensor<?> tfTensor) { - super(tfTensor.numElements()); - values = ByteBuffer.allocate(tfTensor.numElements()); - tfTensor.writeTo(values); - } - @Override double get(int i) { - return values.get(i); - } - } - - private static class IntValues extends TensorFlowValues { - private final IntBuffer values; - IntValues(org.tensorflow.Tensor<?> tfTensor) { - super(tfTensor.numElements()); - values = IntBuffer.allocate(tfTensor.numElements()); - tfTensor.writeTo(values); - } - @Override double get(int i) { - return values.get(i); - } - } - - private static class LongValues extends TensorFlowValues { - private final LongBuffer values; - LongValues(org.tensorflow.Tensor<?> tfTensor) { - super(tfTensor.numElements()); - values = LongBuffer.allocate(tfTensor.numElements()); - tfTensor.writeTo(values); - } - @Override double get(int i) { - return values.get(i); - } - } - - private static abstract class ProtoValues extends Values { - protected final TensorProto tensorProto; - protected ProtoValues(TensorProto tensorProto) { this.tensorProto = tensorProto; } - } - - private static class ProtoBoolValues extends ProtoValues { - ProtoBoolValues(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getBoolVal(i) ? 1.0 : 0.0; } - @Override int size() { return tensorProto.getBoolValCount(); } - } - - private static class ProtoHalfValues extends ProtoValues { - ProtoHalfValues(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getHalfVal(i); } - @Override int size() { return tensorProto.getHalfValCount(); } - } - - private static class ProtoIntValues extends ProtoValues { - ProtoIntValues(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getIntVal(i); } - @Override int size() { return tensorProto.getIntValCount(); } - } - - private static class ProtoInt64Values extends ProtoValues { - ProtoInt64Values(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getInt64Val(i); } - @Override int size() { return tensorProto.getInt64ValCount(); } - } - - private static class ProtoFloatValues extends ProtoValues { - ProtoFloatValues(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getFloatVal(i); } - @Override int size() { return tensorProto.getFloatValCount(); } - } - - private static class ProtoDoubleValues extends ProtoValues { - ProtoDoubleValues(TensorProto tensorProto) { super(tensorProto); } - @Override double get(int i) { return tensorProto.getDoubleVal(i); } - @Override int size() { return tensorProto.getDoubleValCount(); } - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TypeConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TypeConverter.java deleted file mode 100644 index 67ad1edc312..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/tensorflow/TypeConverter.java +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow; - -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; -import com.yahoo.tensor.TensorType; -import org.tensorflow.framework.AttrValue; -import org.tensorflow.framework.NodeDef; -import org.tensorflow.framework.TensorShapeProto; - -import java.util.List; - -/** - * Converts and verifies TensorFlow tensor types into Vespa tensor types. - * - * @author lesters - */ -public class TypeConverter { - - public static void verifyType(NodeDef node, OrderedTensorType type) { - TensorShapeProto shape = tensorFlowShape(node); - if (shape != null) { - if (shape.getDimCount() != type.rank()) { - throw new IllegalArgumentException("TensorFlow shape of '" + node.getName() + "' " + - "does not match Vespa shape"); - } - for (int tensorFlowIndex = 0; tensorFlowIndex < type.dimensions().size(); ++tensorFlowIndex) { - int vespaIndex = type.dimensionMap(tensorFlowIndex); - TensorShapeProto.Dim tensorFlowDimension = shape.getDim(tensorFlowIndex); - TensorType.Dimension vespaDimension = type.type().dimensions().get(vespaIndex); - if (tensorFlowDimension.getSize() != vespaDimension.size().orElse(-1L)) { - throw new IllegalArgumentException("TensorFlow dimensions of '" + node.getName() + "' " + - "does not match Vespa dimensions"); - } - } - } - } - - private static TensorShapeProto tensorFlowShape(NodeDef node) { - AttrValue attrValueList = node.getAttrMap().get("_output_shapes"); - if (attrValueList == null) { - throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " + - "does not exist"); - } - if (attrValueList.getValueCase() != AttrValue.ValueCase.LIST) { - throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " + - "is not of expected type"); - } - List<TensorShapeProto> shapeList = attrValueList.getList().getShapeList(); - return shapeList.get(0); // support multiple outputs? - } - - public static OrderedTensorType fromTensorFlowType(NodeDef node) { - return fromTensorFlowType(node, "d"); // standard naming convention: d0, d1, ... - } - - public static OrderedTensorType fromTensorFlowType(NodeDef node, String dimensionPrefix) { - OrderedTensorType.Builder builder = new OrderedTensorType.Builder(); - TensorShapeProto shape = tensorFlowShape(node); - for (int i = 0; i < shape.getDimCount(); ++ i) { - String dimensionName = dimensionPrefix + i; - TensorShapeProto.Dim tensorFlowDimension = shape.getDim(i); - if (tensorFlowDimension.getSize() >= 0) { - builder.add(TensorType.Dimension.indexed(dimensionName, tensorFlowDimension.getSize())); - } else { - builder.add(TensorType.Dimension.indexed(dimensionName)); - } - } - return builder.build(); - } - -} diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostParser.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostParser.java deleted file mode 100644 index fef8bfec81d..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostParser.java +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.xgboost; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * @author grace-lam - */ -public class XGBoostParser { - - private List<XGBoostTree> xgboostTrees; - - /** - * Constructor stores parsed JSON trees. - * - * @param filePath XGBoost JSON output file. - * @throws JsonProcessingException Fails JSON parsing. - * @throws IOException Fails file reading. - */ - public XGBoostParser(String filePath) throws JsonProcessingException, IOException { - this.xgboostTrees = new ArrayList<>(); - ObjectMapper mapper = new ObjectMapper(); - JsonNode forestNode = mapper.readTree(new File(filePath)); - for (JsonNode treeNode : forestNode) { - this.xgboostTrees.add(mapper.treeToValue(treeNode, XGBoostTree.class)); - } - } - - /** - * Converts parsed JSON trees to Vespa ranking expressions. - * - * @return Vespa ranking expressions. - */ - public String toRankingExpression() { - StringBuilder ret = new StringBuilder(); - for (int i = 0; i < xgboostTrees.size(); i++) { - ret.append(treeToRankExp(xgboostTrees.get(i))); - if (i != xgboostTrees.size() - 1) { - ret.append(" + \n"); - } - } - return ret.toString(); - } - - /** - * Recursive helper function for toRankingExpression(). - * - * @param node XGBoost tree node to convert. - * @return Vespa ranking expression for input node. - */ - public String treeToRankExp(XGBoostTree node) { - if (node.isLeaf()) { - return Double.toString(node.getLeaf()); - } else { - assert node.getChildren().size() == 2; - String trueExp; - String falseExp; - if (node.getYes() == node.getChildren().get(0).getNodeid()) { - trueExp = treeToRankExp(node.getChildren().get(0)); - falseExp = treeToRankExp(node.getChildren().get(1)); - } else { - trueExp = treeToRankExp(node.getChildren().get(1)); - falseExp = treeToRankExp(node.getChildren().get(0)); - } - return "if (" + node.getSplit() + " < " + Double.toString(node.getSplit_condition()) + ", " + trueExp + ", " - + falseExp + ")"; - } - } - -}
\ No newline at end of file diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostTree.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostTree.java deleted file mode 100644 index 6bbc9abe8ae..00000000000 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/xgboost/XGBoostTree.java +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml.importer.xgboost; - -import java.util.List; - -/** - * Outlines the JSON representation used for parsing the XGBoost output file. - * - * @author grace-lam - */ -public class XGBoostTree { - - // ID of current node. - private int nodeid; - // Depth of current node w.r.t. the tree's root. - private int depth; - // Feature name used for split. - private String split; - // Feature value threshold to split on. - private double split_condition; - // Next node if feature value < split_condition. - private int yes; - // Next node if feature value >= split_condition. - private int no; - // Next node if feature value is missing. - private int missing; - // Response value for leaf node. - private double leaf; - // List of child nodes. - private List<XGBoostTree> children; - - public int getNodeid() { - return nodeid; - } - - public int getDepth() { - return depth; - } - - public String getSplit() { - return split; - } - - public double getSplit_condition() { - return split_condition; - } - - public int getYes() { - return yes; - } - - public int getNo() { - return no; - } - - public int getMissing() { - return missing; - } - - public double getLeaf() { - return leaf; - } - - public List<XGBoostTree> getChildren() { - return children; - } - - /** - * Check if current node is a leaf node. - * - * @return True if leaf, false otherwise. - */ - public boolean isLeaf() { - return children == null; - } - -}
\ No newline at end of file diff --git a/searchlib/src/main/protobuf/onnx.proto b/searchlib/src/main/protobuf/onnx.proto deleted file mode 100644 index dc6542867e0..00000000000 --- a/searchlib/src/main/protobuf/onnx.proto +++ /dev/null @@ -1,464 +0,0 @@ -// -// WARNING: This file is automatically generated! Please edit onnx.in.proto. -// - - -// Copyright (c) Facebook Inc. and Microsoft Corporation. -// Licensed under the MIT license. - -syntax = "proto2"; - -package onnx; - -// Overview -// -// ONNX is an open specification that is comprised of the following components: -// -// 1) A definition of an extensible computation graph model. -// 2) Definitions of standard data types. -// 3) Definitions of built-in operators. -// -// This document describes the syntax of models and their computation graphs, -// as well as the standard data types. Together, they are referred to as the ONNX -// Intermediate Representation, or 'IR' for short. -// -// The normative semantic specification of the ONNX IR is found in docs/IR.md. -// Definitions of the built-in neural network operators may be found in docs/Operators.md. - -// Notes -// -// Release -// -// We are still in the very early stage of defining ONNX. The current -// version of ONNX is a starting point. While we are actively working -// towards a complete spec, we would like to get the community involved -// by sharing our working version of ONNX. -// -// Protobuf compatibility -// -// To simplify framework compatibility, ONNX is defined using the subset of protobuf -// that is compatible with both protobuf v2 and v3. This means that we do not use any -// protobuf features that are only available in one of the two versions. -// -// Here are the most notable contortions we have to carry out to work around -// these limitations: -// -// - No 'map' (added protobuf 3.0). We instead represent mappings as lists -// of key-value pairs, where order does not matter and duplicates -// are not allowed. - - -// Versioning -// -// ONNX versioning is specified in docs/IR.md and elaborated on in docs/Versioning.md -// -// To be compatible with both proto2 and proto3, we will use a version number -// that is not defined by the default value but an explicit enum number. -enum Version { - // proto3 requires the first enum value to be zero. - // We add this just to appease the compiler. - _START_VERSION = 0; - // The version field is always serialized and we will use it to store the - // version that the graph is generated from. This helps us set up version - // control. We should use version as - // xx(major) - xx(minor) - xxxx(bugfix) - // and we are starting with 0x00000001 (0.0.1), which was the - // version we published on Oct 10, 2017. - IR_VERSION_2017_10_10 = 0x00000001; - - // IR_VERSION 0.0.2 published on Oct 30, 2017 - // - Added type discriminator to AttributeProto to support proto3 users - IR_VERSION_2017_10_30 = 0x00000002; - - // IR VERSION 0.0.3 published on Nov 3, 2017 - // - For operator versioning: - // - Added new message OperatorSetIdProto - // - Added opset_import in ModelProto - // - For vendor extensions, added domain in NodeProto - IR_VERSION = 0x00000003; -} - -// Attributes -// -// A named attribute containing either singular float, integer, string, graph, -// and tensor values, or repeated float, integer, string, graph, and tensor values. -// An AttributeProto MUST contain the name field, and *only one* of the -// following content fields, effectively enforcing a C/C++ union equivalent. -message AttributeProto { - - // Note: this enum is structurally identical to the OpSchema::AttrType - // enum defined in schema.h. If you rev one, you likely need to rev the other. - enum AttributeType { - UNDEFINED = 0; - FLOAT = 1; - INT = 2; - STRING = 3; - TENSOR = 4; - GRAPH = 5; - - FLOATS = 6; - INTS = 7; - STRINGS = 8; - TENSORS = 9; - GRAPHS = 10; - } - - // The name field MUST be present for this version of the IR. - optional string name = 1; // namespace Attribute - - // if ref_attr_name is not empty, ref_attr_name is the attribute name in parent function. - // In this case, this AttributeProto does not contain data, and it's a reference of attribute - // in parent scope. - // NOTE: This should ONLY be used in function (sub-graph). It's invalid to be used in main graph. - optional string ref_attr_name = 21; - - // A human-readable documentation for this attribute. Markdown is allowed. - optional string doc_string = 13; - - // The type field MUST be present for this version of the IR. - // For 0.0.1 versions of the IR, this field was not defined, and - // implementations needed to use has_field hueristics to determine - // which value field was in use. For IR_VERSION 0.0.2 or later, this - // field MUST be set and match the f|i|s|t|... field in use. This - // change was made to accomodate proto3 implementations. - optional AttributeType type = 20; // discriminator that indicates which field below is in use - - // Exactly ONE of the following fields must be present for this version of the IR - optional float f = 2; // float - optional int64 i = 3; // int - optional bytes s = 4; // UTF-8 string - optional TensorProto t = 5; // tensor value - optional GraphProto g = 6; // graph - // Do not use field below, it's deprecated. - // optional ValueProto v = 12; // value - subsumes everything but graph - - repeated float floats = 7; // list of floats - repeated int64 ints = 8; // list of ints - repeated bytes strings = 9; // list of UTF-8 strings - repeated TensorProto tensors = 10; // list of tensors - repeated GraphProto graphs = 11; // list of graph -} - -// Defines information on value, including the name, the type, and -// the shape of the value. -message ValueInfoProto { - // This field MUST be present in this version of the IR. - optional string name = 1; // namespace Value - // This field MUST be present in this version of the IR. - optional TypeProto type = 2; - // A human-readable documentation for this value. Markdown is allowed. - optional string doc_string = 3; -} - -// Nodes -// -// Computation graphs are made up of a DAG of nodes, which represent what is -// commonly called a "layer" or "pipeline stage" in machine learning frameworks. -// -// For example, it can be a node of type "Conv" that takes in an image, a filter -// tensor and a bias tensor, and produces the convolved output. -message NodeProto { - repeated string input = 1; // namespace Value - repeated string output = 2; // namespace Value - - // An optional identifier for this node in a graph. - // This field MAY be absent in ths version of the IR. - optional string name = 3; // namespace Node - - // The symbolic identifier of the Operator to execute. - optional string op_type = 4; // namespace Operator - // The domain of the OperatorSet that specifies the operator named by op_type. - optional string domain = 7; // namespace Domain - - // Additional named attributes. - repeated AttributeProto attribute = 5; - - // A human-readable documentation for this node. Markdown is allowed. - optional string doc_string = 6; -} - -// Models -// -// ModelProto is a top-level file/container format for bundling a ML model and -// associating its computation graph with metadata. -// -// The semantics of the model are described by the associated GraphProto. -message ModelProto { - // The version of the IR this model targets. See Version enum above. - // This field MUST be present. - optional int64 ir_version = 1; - - // The OperatorSets this model relies on. - // All ModelProtos MUST have at least one entry that - // specifies which version of the ONNX OperatorSet is - // being imported. - // - // All nodes in the ModelProto's graph will bind against the operator - // with the same-domain/same-op_type operator with the HIGHEST version - // in the referenced operator sets. - repeated OperatorSetIdProto opset_import = 8; - - // The name of the framework or tool used to generate this model. - // This field SHOULD be present to indicate which implementation/tool/framework - // emitted the model. - optional string producer_name = 2; - - // The version of the framework or tool used to generate this model. - // This field SHOULD be present to indicate which implementation/tool/framework - // emitted the model. - optional string producer_version = 3; - - // Domain name of the model. - // We use reverse domain names as name space indicators. For example: - // `com.facebook.fair` or `com.microsoft.cognitiveservices` - // - // Together with `model_version` and GraphProto.name, this forms the unique identity of - // the graph. - optional string domain = 4; - - // The version of the graph encoded. See Version enum below. - optional int64 model_version = 5; - - // A human-readable documentation for this model. Markdown is allowed. - optional string doc_string = 6; - - // The parameterized graph that is evaluated to execute the model. - optional GraphProto graph = 7; - - // Named metadata values; keys should be distinct. - repeated StringStringEntryProto metadata_props = 14; -}; - -// StringStringEntryProto follows the pattern for cross-proto-version maps. -// See https://developers.google.com/protocol-buffers/docs/proto3#maps -message StringStringEntryProto { - optional string key = 1; - optional string value= 2; -}; - -// Graphs -// -// A graph defines the computational logic of a model and is comprised of a parameterized -// list of nodes that form a directed acyclic graph based on their inputs and outputs. -// This is the equivalent of the "network" or "graph" in many deep learning -// frameworks. -message GraphProto { - // The nodes in the graph, sorted topologically. - repeated NodeProto node = 1; - - // The name of the graph. - optional string name = 2; // namespace Graph - - // A list of named tensor values, used to specify constant inputs of the graph. - // Each TensorProto entry must have a distinct name (within the list) that - // also appears in the input list. - repeated TensorProto initializer = 5; - - // A human-readable documentation for this graph. Markdown is allowed. - optional string doc_string = 10; - - // The inputs and outputs of the graph. - repeated ValueInfoProto input = 11; - repeated ValueInfoProto output = 12; - - // Information for the values in the graph. The ValueInfoProto.name's - // must be distinct. It is optional for a value to appear in value_info list. - repeated ValueInfoProto value_info = 13; - - // DO NOT USE the following fields, they were deprecated from earlier versions. - // repeated string input = 3; - // repeated string output = 4; - // optional int64 ir_version = 6; - // optional int64 producer_version = 7; - // optional string producer_tag = 8; - // optional string domain = 9; -} - -// Tensors -// -// A serialized tensor value. -message TensorProto { - enum DataType { - UNDEFINED = 0; - // Basic types. - FLOAT = 1; // float - UINT8 = 2; // uint8_t - INT8 = 3; // int8_t - UINT16 = 4; // uint16_t - INT16 = 5; // int16_t - INT32 = 6; // int32_t - INT64 = 7; // int64_t - STRING = 8; // string - BOOL = 9; // bool - - // Advanced types - FLOAT16 = 10; - DOUBLE = 11; - UINT32 = 12; - UINT64 = 13; - COMPLEX64 = 14; // complex with float32 real and imaginary components - COMPLEX128 = 15; // complex with float64 real and imaginary components - // Future extensions go here. - } - - // The shape of the tensor. - repeated int64 dims = 1; - - // The data type of the tensor. - optional DataType data_type = 2; - - // For very large tensors, we may want to store them in chunks, in which - // case the following fields will specify the segment that is stored in - // the current TensorProto. - message Segment { - optional int64 begin = 1; - optional int64 end = 2; - } - optional Segment segment = 3; - - // Tensor content must be organized in row-major order. - // - // Depending on the data_type field, exactly one of the fields below with - // name ending in _data is used to store the elements of the tensor. - - // For float and complex64 values - // Complex64 tensors are encoded as a single array of floats, - // with the real components appearing in odd numbered positions, - // and the corresponding imaginary component apparing in the - // subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] - // is encoded as [1.0, 2.0 ,3.0 ,4.0] - // When this field is present, the data_type field MUST be FLOAT or COMPLEX64. - repeated float float_data = 4 [packed = true]; - - // For int32, uint8, int8, uint16, int16, bool, and float16 values - // float16 values must be bit-wise converted to an uint16_t prior - // to writing to the buffer. - // When this field is present, the data_type field MUST be - // INT32, INT16, INT8, UINT16, INT8, BOOL, or FLOAT32 - repeated int32 int32_data = 5 [packed = true]; - - // For strings. - // Each element of string_data is a UTF-8 encoded Unicode - // string. No trailing null, no leading BOM. The protobuf "string" - // scalar type is not used to match ML community conventions. - // When this field is present, the data_type field MUST be STRING - repeated bytes string_data = 6; - - // For int64. - // When this field is present, the data_type field MUST be INT64 - repeated int64 int64_data = 7 [packed = true]; - - // Optionally, a name for the tensor. - optional string name = 8; // namespace Value - - // A human-readable documentation for this tensor. Markdown is allowed. - optional string doc_string = 12; - - // Serializations can either use one of the fields above, or use this - // raw bytes field. The only exception is the string case, where one is - // required to store the content in the repeated bytes string_data field. - // - // When this raw_data field is used to store tensor value, elements MUST - // be stored in as fixed-width, little-endian order. - // Floating-point data types MUST be stored in IEEE 754 format. - // Complex64 elements must be written as two consecutive FLOAT values, real component first. - // Complex128 elements must be written as two consecutive DOUBLE values, real component first. - // Boolean type MUST be written one byte per tensor element (00000001 for true, 00000000 for false). - // - // Note: the advantage of specific field rather than the raw_data field is - // that in some cases (e.g. int data), protobuf does a better packing via - // variable length storage, and may lead to smaller binary footprint. - // When this field is present, the data_type field MUST NOT be STRING or UNDEFINED - optional bytes raw_data = 9; - - // For double - // Complex64 tensors are encoded as a single array of doubles, - // with the real components appearing in odd numbered positions, - // and the corresponding imaginary component apparing in the - // subsequent even numbered position. (e.g., [1.0 + 2.0i, 3.0 + 4.0i] - // is encoded as [1.0, 2.0 ,3.0 ,4.0] - // When this field is present, the data_type field MUST be DOUBLE or COMPLEX128 - repeated double double_data = 10 [packed = true]; - - // For uint64 and uint32 values - // When this field is present, the data_type field MUST be - // UINT32 or UINT64 - repeated uint64 uint64_data = 11 [packed = true]; -} - -// Defines a tensor shape. A dimension can be either an integer value -// or a symbolic variable. A symbolic variable represents an unknown -// dimension. -message TensorShapeProto { - message Dimension { - oneof value { - int64 dim_value = 1; - string dim_param = 2; // namespace Shape - }; - // Standard denotation can optionally be used to denote tensor - // dimensions with standard semantic descriptions to ensure - // that operations are applied to the correct axis of a tensor. - optional string denotation = 3; - }; - repeated Dimension dim = 1; -} - -// A set of pre-defined constants to be used as values for -// the standard denotation field in TensorShapeProto.Dimension -// for semantic description of the tensor dimension. -message DenotationConstProto { - // Describe a batch number dimension. - optional string DATA_BATCH = 1 [default = "DATA_BATCH"]; - // Describe a channel dimension. - optional string DATA_CHANNEL = 2 [default = "DATA_CHANNEL"]; - // Describe a time dimension. - optional string DATA_TIME = 3 [default = "DATA_TIME"]; - // Describe a feature dimension. This is typically a feature - // dimension in RNN and/or spatial dimension in CNN. - optional string DATA_FEATURE = 4 [default = "DATA_FEATURE"]; - // Describe a filter in-channel dimension. This is the dimension - // that is identical (in size) to the channel dimension of the input - // image feature maps. - optional string FILTER_IN_CHANNEL = 5 [default = "FILTER_IN_CHANNEL"]; - // Describe a filter out channel dimension. This is the dimension - // that is identical (int size) to the channel dimension of the output - // image feature maps. - optional string FILTER_OUT_CHANNEL = 6 [default = "FILTER_OUT_CHANNEL"]; - // Describe a filter spatial dimension. - optional string FILTER_SPATIAL = 7 [default = "FILTER_SPATIAL"]; -} - -// Types -// -// The standard ONNX data types. -message TypeProto { - - message Tensor { - // This field MUST NOT have the value of UNDEFINED - // This field MUST be present for this version of the IR. - optional TensorProto.DataType elem_type = 1; - optional TensorShapeProto shape = 2; - } - - - oneof value { - // The type of a tensor. - Tensor tensor_type = 1; - - } -} - -// Operator Sets -// -// OperatorSets are uniquely identified by a (domain, opset_version) pair. -message OperatorSetIdProto { - // The domain of the operator set being identified. - // The empty string ("") or absence of this field implies the operator - // set that is defined as part of the ONNX specification. - // This field MUST be present in this version of the IR when referring to any other operator set. - optional string domain = 1; - - // The version of the operator set being identified. - // This field MUST be present in this version of the IR. - optional int64 version = 2; -}
\ No newline at end of file diff --git a/searchlib/src/test/files/integration/onnx/mnist_softmax/mnist_softmax.onnx b/searchlib/src/test/files/integration/onnx/mnist_softmax/mnist_softmax.onnx Binary files differdeleted file mode 100644 index a86019bf53a..00000000000 --- a/searchlib/src/test/files/integration/onnx/mnist_softmax/mnist_softmax.onnx +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/batch_norm/batch_normalization_mnist.py b/searchlib/src/test/files/integration/tensorflow/batch_norm/batch_normalization_mnist.py deleted file mode 100644 index bc6ea13ebc1..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/batch_norm/batch_normalization_mnist.py +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -import tensorflow as tf - -from functools import partial -from tensorflow.examples.tutorials.mnist import input_data -from datetime import datetime - -now = datetime.utcnow().strftime("%Y%m%d%H%M%S") -root_logdir = "tf_logs" -logdir = "{}/run-{}/".format(root_logdir, now) - -mnist = input_data.read_data_sets("/tmp/data/") -X_train = mnist.train.images -X_test = mnist.test.images -y_train = mnist.train.labels.astype("int") -y_test = mnist.test.labels.astype("int") - -n_inputs = 28*28 # MNIST -n_hidden1 = 300 -n_hidden2 = 100 -n_hidden3 = 40 -n_outputs = 10 - -learning_rate = 0.01 -n_epochs = 20 -batch_size = 200 -batch_norm_momentum = 0.9 - -X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X") -y = tf.placeholder(tf.int64, shape=(None), name="y") -training = tf.placeholder_with_default(False, shape=(), name='training') - -def leaky_relu(z, name=None): - return tf.maximum(0.01 * z, z, name=name) - -with tf.name_scope("dnn"): - he_init = tf.contrib.layers.variance_scaling_initializer() - - batch_norm_layer = partial(tf.layers.batch_normalization, training=training, momentum=batch_norm_momentum) - dense_layer = partial(tf.layers.dense, kernel_initializer=he_init) - - hidden1 = dense_layer(X, n_hidden1, name="hidden1", activation=leaky_relu) - bn1 = tf.nn.elu(batch_norm_layer(hidden1)) - hidden2 = dense_layer(bn1, n_hidden2, name="hidden2", activation=tf.nn.elu) - bn2 = tf.nn.elu(batch_norm_layer(hidden2)) - logits_before_bn = dense_layer(bn2, n_outputs, name="outputs", activation=tf.nn.selu) - logits = batch_norm_layer(logits_before_bn) - -with tf.name_scope("loss"): - xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits) - loss = tf.reduce_mean(xentropy, name="loss") - -with tf.name_scope("train"): - optimizer = tf.train.GradientDescentOptimizer(learning_rate) - training_op = optimizer.minimize(loss) - -with tf.name_scope("eval"): - correct = tf.nn.in_top_k(logits, y, 1) - accuracy = tf.reduce_mean(tf.cast(correct, tf.float32)) - -init = tf.global_variables_initializer() -accuracy_summary = tf.summary.scalar('Accuracy', accuracy) -file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph()) -extra_update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) - -with tf.Session() as sess: - init.run() - for epoch in range(n_epochs): - for iteration in range(mnist.train.num_examples // batch_size): - X_batch, y_batch = mnist.train.next_batch(batch_size) - sess.run([training_op, extra_update_ops], - feed_dict={training: True, X: X_batch, y: y_batch}) - - accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images, - y: mnist.test.labels}) - print(epoch, "Test accuracy:", accuracy_val) - - # Save summary for tensorboard - summary_str = accuracy_summary.eval(feed_dict={X: mnist.validation.images, - y: mnist.validation.labels}) - file_writer.add_summary(summary_str, epoch) - - export_path = "saved" - print('Exporting trained model to ', export_path) - builder = tf.saved_model.builder.SavedModelBuilder(export_path) - signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':logits}) - builder.add_meta_graph_and_variables(sess, - [tf.saved_model.tag_constants.SERVING], - signature_def_map={'serving_default':signature}) - builder.save(as_text=True) - -file_writer.close() - - diff --git a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/saved_model.pbtxt deleted file mode 100644 index f3ce68a1cbd..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/saved_model.pbtxt +++ /dev/null @@ -1,32648 +0,0 @@ -saved_model_schema_version: 1 -meta_graphs { - meta_info_def { - stripped_op_list { - op { - name: "Add" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_STRING - } - } - } - } - op { - name: "AddN" - input_arg { - name: "inputs" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "sum" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - type: DT_VARIANT - } - } - } - is_aggregate: true - is_commutative: true - } - op { - name: "ApplyGradientDescent" - input_arg { - name: "var" - type_attr: "T" - is_ref: true - } - input_arg { - name: "alpha" - type_attr: "T" - } - input_arg { - name: "delta" - type_attr: "T" - } - output_arg { - name: "out" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "Assign" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - } - attr { - name: "validate_shape" - type: "bool" - default_value { - b: true - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: true - } - } - allows_uninitialized_input: true - } - op { - name: "AssignSub" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "BiasAdd" - input_arg { - name: "value" - type_attr: "T" - } - input_arg { - name: "bias" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "data_format" - type: "string" - default_value { - s: "NHWC" - } - allowed_values { - list { - s: "NHWC" - s: "NCHW" - } - } - } - } - op { - name: "BiasAddGrad" - input_arg { - name: "out_backprop" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "data_format" - type: "string" - default_value { - s: "NHWC" - } - allowed_values { - list { - s: "NHWC" - s: "NCHW" - } - } - } - } - op { - name: "BroadcastGradientArgs" - input_arg { - name: "s0" - type_attr: "T" - } - input_arg { - name: "s1" - type_attr: "T" - } - output_arg { - name: "r0" - type_attr: "T" - } - output_arg { - name: "r1" - type_attr: "T" - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Cast" - input_arg { - name: "x" - type_attr: "SrcT" - } - output_arg { - name: "y" - type_attr: "DstT" - } - attr { - name: "SrcT" - type: "type" - } - attr { - name: "DstT" - type: "type" - } - } - op { - name: "Const" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "value" - type: "tensor" - } - attr { - name: "dtype" - type: "type" - } - } - op { - name: "DynamicStitch" - input_arg { - name: "indices" - type: DT_INT32 - number_attr: "N" - } - input_arg { - name: "data" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "merged" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - } - op { - name: "Elu" - input_arg { - name: "features" - type_attr: "T" - } - output_arg { - name: "activations" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "EluGrad" - input_arg { - name: "gradients" - type_attr: "T" - } - input_arg { - name: "outputs" - type_attr: "T" - } - output_arg { - name: "backprops" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "ExpandDims" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "dim" - type_attr: "Tdim" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tdim" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Fill" - input_arg { - name: "dims" - type: DT_INT32 - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "FloorDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "FloorMod" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "GreaterEqual" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Identity" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "InTopKV2" - input_arg { - name: "predictions" - type: DT_FLOAT - } - input_arg { - name: "targets" - type_attr: "T" - } - input_arg { - name: "k" - type_attr: "T" - } - output_arg { - name: "precision" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MatMul" - input_arg { - name: "a" - type_attr: "T" - } - input_arg { - name: "b" - type_attr: "T" - } - output_arg { - name: "product" - type_attr: "T" - } - attr { - name: "transpose_a" - type: "bool" - default_value { - b: false - } - } - attr { - name: "transpose_b" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Maximum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Mean" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MergeV2Checkpoints" - input_arg { - name: "checkpoint_prefixes" - type: DT_STRING - } - input_arg { - name: "destination_prefix" - type: DT_STRING - } - attr { - name: "delete_old_dirs" - type: "bool" - default_value { - b: true - } - } - is_stateful: true - } - op { - name: "Mul" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "Neg" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "NoOp" - } - op { - name: "Pack" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - attr { - name: "axis" - type: "int" - default_value { - i: 0 - } - } - } - op { - name: "Placeholder" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - default_value { - shape { - unknown_rank: true - } - } - } - } - op { - name: "PlaceholderWithDefault" - input_arg { - name: "input" - type_attr: "dtype" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - } - } - op { - name: "PreventGradient" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "message" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Prod" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Range" - input_arg { - name: "start" - type_attr: "Tidx" - } - input_arg { - name: "limit" - type_attr: "Tidx" - } - input_arg { - name: "delta" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "Tidx" - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RealDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Reshape" - input_arg { - name: "tensor" - type_attr: "T" - } - input_arg { - name: "shape" - type_attr: "Tshape" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tshape" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RestoreV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - output_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "Rsqrt" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "RsqrtGrad" - input_arg { - name: "y" - type_attr: "T" - } - input_arg { - name: "dy" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "SaveV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - input_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "ScalarSummary" - input_arg { - name: "tags" - type: DT_STRING - } - input_arg { - name: "values" - type_attr: "T" - } - output_arg { - name: "summary" - type: DT_STRING - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Select" - input_arg { - name: "condition" - type: DT_BOOL - } - input_arg { - name: "t" - type_attr: "T" - } - input_arg { - name: "e" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "Selu" - input_arg { - name: "features" - type_attr: "T" - } - output_arg { - name: "activations" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "SeluGrad" - input_arg { - name: "gradients" - type_attr: "T" - } - input_arg { - name: "outputs" - type_attr: "T" - } - output_arg { - name: "backprops" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "Shape" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "out_type" - } - attr { - name: "T" - type: "type" - } - attr { - name: "out_type" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "ShardedFilename" - input_arg { - name: "basename" - type: DT_STRING - } - input_arg { - name: "shard" - type: DT_INT32 - } - input_arg { - name: "num_shards" - type: DT_INT32 - } - output_arg { - name: "filename" - type: DT_STRING - } - } - op { - name: "SparseSoftmaxCrossEntropyWithLogits" - input_arg { - name: "features" - type_attr: "T" - } - input_arg { - name: "labels" - type_attr: "Tlabels" - } - output_arg { - name: "loss" - type_attr: "T" - } - output_arg { - name: "backprop" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "Tlabels" - type: "type" - default_value { - type: DT_INT64 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "SquaredDifference" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "Squeeze" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "squeeze_dims" - type: "list(int)" - default_value { - list { - } - } - has_minimum: true - } - } - op { - name: "StopGradient" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "StringJoin" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "output" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "separator" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Sub" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Sum" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Tile" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "multiples" - type_attr: "Tmultiples" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tmultiples" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "TruncatedNormal" - input_arg { - name: "shape" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "seed" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "seed2" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "dtype" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - is_stateful: true - } - op { - name: "VariableV2" - output_arg { - name: "ref" - type_attr: "dtype" - is_ref: true - } - attr { - name: "shape" - type: "shape" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "container" - type: "string" - default_value { - s: "" - } - } - attr { - name: "shared_name" - type: "string" - default_value { - s: "" - } - } - is_stateful: true - } - op { - name: "ZerosLike" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - } - tags: "serve" - tensorflow_version: "1.4.1" - tensorflow_git_version: "v1.4.0-19-ga52c8d9" - } - graph_def { - node { - name: "X" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - node { - name: "y" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT64 - } - } - attr { - key: "shape" - value { - shape { - unknown_rank: true - } - } - } - } - node { - name: "training/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_BOOL - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_BOOL - tensor_shape { - } - bool_val: false - } - } - } - } - node { - name: "training" - op: "PlaceholderWithDefault" - input: "training/input" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_BOOL - } - } - attr { - key: "shape" - value { - shape { - } - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal/shape" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\020\003\000\000,\001\000\000" - } - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal/mean" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal/stddev" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.057587556540966034 - } - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "hidden1/kernel/Initializer/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal/mul" - op: "Mul" - input: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal" - input: "hidden1/kernel/Initializer/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "hidden1/kernel/Initializer/truncated_normal" - op: "Add" - input: "hidden1/kernel/Initializer/truncated_normal/mul" - input: "hidden1/kernel/Initializer/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "hidden1/kernel" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "hidden1/kernel/Assign" - op: "Assign" - input: "hidden1/kernel" - input: "hidden1/kernel/Initializer/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "hidden1/kernel/read" - op: "Identity" - input: "hidden1/kernel" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "hidden1/bias/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "hidden1/bias" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "hidden1/bias/Assign" - op: "Assign" - input: "hidden1/bias" - input: "hidden1/bias/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "hidden1/bias/read" - op: "Identity" - input: "hidden1/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/MatMul" - op: "MatMul" - input: "X" - input: "hidden1/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/hidden1/BiasAdd" - op: "BiasAdd" - input: "dnn/hidden1/MatMul" - input: "hidden1/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "dnn/hidden1/mul/x" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.009999999776482582 - } - } - } - } - node { - name: "dnn/hidden1/mul" - op: "Mul" - input: "dnn/hidden1/mul/x" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/Maximum" - op: "Maximum" - input: "dnn/hidden1/mul" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "batch_normalization/gamma/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization/gamma" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization/gamma/Assign" - op: "Assign" - input: "batch_normalization/gamma" - input: "batch_normalization/gamma/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization/gamma/read" - op: "Identity" - input: "batch_normalization/gamma" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "batch_normalization/beta/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization/beta" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization/beta/Assign" - op: "Assign" - input: "batch_normalization/beta" - input: "batch_normalization/beta/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization/beta/read" - op: "Identity" - input: "batch_normalization/beta" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "batch_normalization/moving_mean/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization/moving_mean" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization/moving_mean/Assign" - op: "Assign" - input: "batch_normalization/moving_mean" - input: "batch_normalization/moving_mean/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization/moving_mean/read" - op: "Identity" - input: "batch_normalization/moving_mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "batch_normalization/moving_variance/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization/moving_variance" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization/moving_variance/Assign" - op: "Assign" - input: "batch_normalization/moving_variance" - input: "batch_normalization/moving_variance/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization/moving_variance/read" - op: "Identity" - input: "batch_normalization/moving_variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/moments/mean/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/moments/mean" - op: "Mean" - input: "dnn/hidden1/Maximum" - input: "dnn/batch_normalization/moments/mean/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization/moments/StopGradient" - op: "StopGradient" - input: "dnn/batch_normalization/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/moments/SquaredDifference" - op: "SquaredDifference" - input: "dnn/hidden1/Maximum" - input: "dnn/batch_normalization/moments/StopGradient" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/moments/variance/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/moments/variance" - op: "Mean" - input: "dnn/batch_normalization/moments/SquaredDifference" - input: "dnn/batch_normalization/moments/variance/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization/moments/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/moments/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization/moments/variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims" - op: "ExpandDims" - input: "dnn/batch_normalization/moments/Squeeze" - input: "dnn/batch_normalization/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_1/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_1" - op: "ExpandDims" - input: "batch_normalization/moving_mean/read" - input: "dnn/batch_normalization/ExpandDims_1/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization/Reshape/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Select" - op: "Select" - input: "dnn/batch_normalization/Reshape" - input: "dnn/batch_normalization/ExpandDims" - input: "dnn/batch_normalization/ExpandDims_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization/Select" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_2/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_2" - op: "ExpandDims" - input: "dnn/batch_normalization/moments/Squeeze_1" - input: "dnn/batch_normalization/ExpandDims_2/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_3/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_3" - op: "ExpandDims" - input: "batch_normalization/moving_variance/read" - input: "dnn/batch_normalization/ExpandDims_3/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape_1/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape_1" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization/Reshape_1/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Select_1" - op: "Select" - input: "dnn/batch_normalization/Reshape_1" - input: "dnn/batch_normalization/ExpandDims_2" - input: "dnn/batch_normalization/ExpandDims_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization/Select_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_4/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.8999999761581421 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_4/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_4" - op: "ExpandDims" - input: "dnn/batch_normalization/ExpandDims_4/input" - input: "dnn/batch_normalization/ExpandDims_4/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_5/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_5/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/ExpandDims_5" - op: "ExpandDims" - input: "dnn/batch_normalization/ExpandDims_5/input" - input: "dnn/batch_normalization/ExpandDims_5/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape_2/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization/Reshape_2" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization/Reshape_2/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Select_2" - op: "Select" - input: "dnn/batch_normalization/Reshape_2" - input: "dnn/batch_normalization/ExpandDims_4" - input: "dnn/batch_normalization/ExpandDims_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/Squeeze_2" - op: "Squeeze" - input: "dnn/batch_normalization/Select_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg/sub" - op: "Sub" - input: "dnn/batch_normalization/AssignMovingAvg/sub/x" - input: "dnn/batch_normalization/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg/sub_1" - op: "Sub" - input: "batch_normalization/moving_mean/read" - input: "dnn/batch_normalization/Squeeze" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg/mul" - op: "Mul" - input: "dnn/batch_normalization/AssignMovingAvg/sub_1" - input: "dnn/batch_normalization/AssignMovingAvg/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg" - op: "AssignSub" - input: "batch_normalization/moving_mean" - input: "dnn/batch_normalization/AssignMovingAvg/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg_1/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg_1/sub" - op: "Sub" - input: "dnn/batch_normalization/AssignMovingAvg_1/sub/x" - input: "dnn/batch_normalization/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg_1/sub_1" - op: "Sub" - input: "batch_normalization/moving_variance/read" - input: "dnn/batch_normalization/Squeeze_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg_1/mul" - op: "Mul" - input: "dnn/batch_normalization/AssignMovingAvg_1/sub_1" - input: "dnn/batch_normalization/AssignMovingAvg_1/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/AssignMovingAvg_1" - op: "AssignSub" - input: "batch_normalization/moving_variance" - input: "dnn/batch_normalization/AssignMovingAvg_1/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/add/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0010000000474974513 - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/add" - op: "Add" - input: "dnn/batch_normalization/Squeeze_1" - input: "dnn/batch_normalization/batchnorm/add/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/Rsqrt" - op: "Rsqrt" - input: "dnn/batch_normalization/batchnorm/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/mul" - op: "Mul" - input: "dnn/batch_normalization/batchnorm/Rsqrt" - input: "batch_normalization/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/mul_1" - op: "Mul" - input: "dnn/hidden1/Maximum" - input: "dnn/batch_normalization/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/mul_2" - op: "Mul" - input: "dnn/batch_normalization/Squeeze" - input: "dnn/batch_normalization/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/sub" - op: "Sub" - input: "batch_normalization/beta/read" - input: "dnn/batch_normalization/batchnorm/mul_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization/batchnorm/add_1" - op: "Add" - input: "dnn/batch_normalization/batchnorm/mul_1" - input: "dnn/batch_normalization/batchnorm/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/Elu" - op: "Elu" - input: "dnn/batch_normalization/batchnorm/add_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal/shape" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: ",\001\000\000d\000\000\000" - } - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal/mean" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal/stddev" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.09309493005275726 - } - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "hidden2/kernel/Initializer/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal/mul" - op: "Mul" - input: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal" - input: "hidden2/kernel/Initializer/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "hidden2/kernel/Initializer/truncated_normal" - op: "Add" - input: "hidden2/kernel/Initializer/truncated_normal/mul" - input: "hidden2/kernel/Initializer/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "hidden2/kernel" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "hidden2/kernel/Assign" - op: "Assign" - input: "hidden2/kernel" - input: "hidden2/kernel/Initializer/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "hidden2/kernel/read" - op: "Identity" - input: "hidden2/kernel" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "hidden2/bias/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "hidden2/bias" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "hidden2/bias/Assign" - op: "Assign" - input: "hidden2/bias" - input: "hidden2/bias/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "hidden2/bias/read" - op: "Identity" - input: "hidden2/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/MatMul" - op: "MatMul" - input: "dnn/Elu" - input: "hidden2/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/hidden2/BiasAdd" - op: "BiasAdd" - input: "dnn/hidden2/MatMul" - input: "hidden2/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "dnn/hidden2/Elu" - op: "Elu" - input: "dnn/hidden2/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "batch_normalization_1/gamma/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization_1/gamma" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_1/gamma/Assign" - op: "Assign" - input: "batch_normalization_1/gamma" - input: "batch_normalization_1/gamma/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_1/gamma/read" - op: "Identity" - input: "batch_normalization_1/gamma" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "batch_normalization_1/beta/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization_1/beta" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_1/beta/Assign" - op: "Assign" - input: "batch_normalization_1/beta" - input: "batch_normalization_1/beta/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_1/beta/read" - op: "Identity" - input: "batch_normalization_1/beta" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "batch_normalization_1/moving_mean/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization_1/moving_mean" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_1/moving_mean/Assign" - op: "Assign" - input: "batch_normalization_1/moving_mean" - input: "batch_normalization_1/moving_mean/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_1/moving_mean/read" - op: "Identity" - input: "batch_normalization_1/moving_mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "batch_normalization_1/moving_variance/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization_1/moving_variance" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_1/moving_variance/Assign" - op: "Assign" - input: "batch_normalization_1/moving_variance" - input: "batch_normalization_1/moving_variance/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_1/moving_variance/read" - op: "Identity" - input: "batch_normalization_1/moving_variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/mean/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/mean" - op: "Mean" - input: "dnn/hidden2/Elu" - input: "dnn/batch_normalization_2/moments/mean/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization_2/moments/StopGradient" - op: "StopGradient" - input: "dnn/batch_normalization_2/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/SquaredDifference" - op: "SquaredDifference" - input: "dnn/hidden2/Elu" - input: "dnn/batch_normalization_2/moments/StopGradient" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/variance/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/variance" - op: "Mean" - input: "dnn/batch_normalization_2/moments/SquaredDifference" - input: "dnn/batch_normalization_2/moments/variance/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization_2/moments/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization_2/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/moments/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization_2/moments/variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims" - op: "ExpandDims" - input: "dnn/batch_normalization_2/moments/Squeeze" - input: "dnn/batch_normalization_2/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_1/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_1" - op: "ExpandDims" - input: "batch_normalization_1/moving_mean/read" - input: "dnn/batch_normalization_2/ExpandDims_1/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_2/Reshape/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Select" - op: "Select" - input: "dnn/batch_normalization_2/Reshape" - input: "dnn/batch_normalization_2/ExpandDims" - input: "dnn/batch_normalization_2/ExpandDims_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization_2/Select" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_2/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_2" - op: "ExpandDims" - input: "dnn/batch_normalization_2/moments/Squeeze_1" - input: "dnn/batch_normalization_2/ExpandDims_2/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_3/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_3" - op: "ExpandDims" - input: "batch_normalization_1/moving_variance/read" - input: "dnn/batch_normalization_2/ExpandDims_3/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape_1/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape_1" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_2/Reshape_1/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Select_1" - op: "Select" - input: "dnn/batch_normalization_2/Reshape_1" - input: "dnn/batch_normalization_2/ExpandDims_2" - input: "dnn/batch_normalization_2/ExpandDims_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization_2/Select_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_4/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.8999999761581421 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_4/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_4" - op: "ExpandDims" - input: "dnn/batch_normalization_2/ExpandDims_4/input" - input: "dnn/batch_normalization_2/ExpandDims_4/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_5/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_5/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/ExpandDims_5" - op: "ExpandDims" - input: "dnn/batch_normalization_2/ExpandDims_5/input" - input: "dnn/batch_normalization_2/ExpandDims_5/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape_2/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_2/Reshape_2" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_2/Reshape_2/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Select_2" - op: "Select" - input: "dnn/batch_normalization_2/Reshape_2" - input: "dnn/batch_normalization_2/ExpandDims_4" - input: "dnn/batch_normalization_2/ExpandDims_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/Squeeze_2" - op: "Squeeze" - input: "dnn/batch_normalization_2/Select_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg/sub" - op: "Sub" - input: "dnn/batch_normalization_2/AssignMovingAvg/sub/x" - input: "dnn/batch_normalization_2/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg/sub_1" - op: "Sub" - input: "batch_normalization_1/moving_mean/read" - input: "dnn/batch_normalization_2/Squeeze" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg/mul" - op: "Mul" - input: "dnn/batch_normalization_2/AssignMovingAvg/sub_1" - input: "dnn/batch_normalization_2/AssignMovingAvg/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg" - op: "AssignSub" - input: "batch_normalization_1/moving_mean" - input: "dnn/batch_normalization_2/AssignMovingAvg/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub" - op: "Sub" - input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x" - input: "dnn/batch_normalization_2/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1" - op: "Sub" - input: "batch_normalization_1/moving_variance/read" - input: "dnn/batch_normalization_2/Squeeze_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg_1/mul" - op: "Mul" - input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1" - input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/AssignMovingAvg_1" - op: "AssignSub" - input: "batch_normalization_1/moving_variance" - input: "dnn/batch_normalization_2/AssignMovingAvg_1/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/add/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0010000000474974513 - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/add" - op: "Add" - input: "dnn/batch_normalization_2/Squeeze_1" - input: "dnn/batch_normalization_2/batchnorm/add/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/Rsqrt" - op: "Rsqrt" - input: "dnn/batch_normalization_2/batchnorm/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/mul" - op: "Mul" - input: "dnn/batch_normalization_2/batchnorm/Rsqrt" - input: "batch_normalization_1/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/mul_1" - op: "Mul" - input: "dnn/hidden2/Elu" - input: "dnn/batch_normalization_2/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/mul_2" - op: "Mul" - input: "dnn/batch_normalization_2/Squeeze" - input: "dnn/batch_normalization_2/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/sub" - op: "Sub" - input: "batch_normalization_1/beta/read" - input: "dnn/batch_normalization_2/batchnorm/mul_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_2/batchnorm/add_1" - op: "Add" - input: "dnn/batch_normalization_2/batchnorm/mul_1" - input: "dnn/batch_normalization_2/batchnorm/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/Elu_1" - op: "Elu" - input: "dnn/batch_normalization_2/batchnorm/add_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal/shape" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "d\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal/mean" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal/stddev" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.16124515235424042 - } - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "outputs/kernel/Initializer/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal/mul" - op: "Mul" - input: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal" - input: "outputs/kernel/Initializer/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/kernel/Initializer/truncated_normal" - op: "Add" - input: "outputs/kernel/Initializer/truncated_normal/mul" - input: "outputs/kernel/Initializer/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/kernel" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "outputs/kernel/Assign" - op: "Assign" - input: "outputs/kernel" - input: "outputs/kernel/Initializer/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "outputs/kernel/read" - op: "Identity" - input: "outputs/kernel" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/bias/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "outputs/bias" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "outputs/bias/Assign" - op: "Assign" - input: "outputs/bias" - input: "outputs/bias/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "outputs/bias/read" - op: "Identity" - input: "outputs/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/MatMul" - op: "MatMul" - input: "dnn/Elu_1" - input: "outputs/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/outputs/BiasAdd" - op: "BiasAdd" - input: "dnn/outputs/MatMul" - input: "outputs/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "dnn/outputs/Selu" - op: "Selu" - input: "dnn/outputs/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "batch_normalization_2/gamma/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization_2/gamma" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_2/gamma/Assign" - op: "Assign" - input: "batch_normalization_2/gamma" - input: "batch_normalization_2/gamma/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_2/gamma/read" - op: "Identity" - input: "batch_normalization_2/gamma" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "batch_normalization_2/beta/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization_2/beta" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_2/beta/Assign" - op: "Assign" - input: "batch_normalization_2/beta" - input: "batch_normalization_2/beta/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_2/beta/read" - op: "Identity" - input: "batch_normalization_2/beta" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "batch_normalization_2/moving_mean/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "batch_normalization_2/moving_mean" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_2/moving_mean/Assign" - op: "Assign" - input: "batch_normalization_2/moving_mean" - input: "batch_normalization_2/moving_mean/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_2/moving_mean/read" - op: "Identity" - input: "batch_normalization_2/moving_mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "batch_normalization_2/moving_variance/Initializer/ones" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 1.0 - } - } - } - } - node { - name: "batch_normalization_2/moving_variance" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "batch_normalization_2/moving_variance/Assign" - op: "Assign" - input: "batch_normalization_2/moving_variance" - input: "batch_normalization_2/moving_variance/Initializer/ones" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "batch_normalization_2/moving_variance/read" - op: "Identity" - input: "batch_normalization_2/moving_variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/mean/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/mean" - op: "Mean" - input: "dnn/outputs/Selu" - input: "dnn/batch_normalization_3/moments/mean/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization_3/moments/StopGradient" - op: "StopGradient" - input: "dnn/batch_normalization_3/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/SquaredDifference" - op: "SquaredDifference" - input: "dnn/outputs/Selu" - input: "dnn/batch_normalization_3/moments/StopGradient" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/variance/reduction_indices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/variance" - op: "Mean" - input: "dnn/batch_normalization_3/moments/SquaredDifference" - input: "dnn/batch_normalization_3/moments/variance/reduction_indices" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "keep_dims" - value { - b: true - } - } - } - node { - name: "dnn/batch_normalization_3/moments/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization_3/moments/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/moments/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization_3/moments/variance" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims" - op: "ExpandDims" - input: "dnn/batch_normalization_3/moments/Squeeze" - input: "dnn/batch_normalization_3/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_1/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_1" - op: "ExpandDims" - input: "batch_normalization_2/moving_mean/read" - input: "dnn/batch_normalization_3/ExpandDims_1/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_3/Reshape/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Select" - op: "Select" - input: "dnn/batch_normalization_3/Reshape" - input: "dnn/batch_normalization_3/ExpandDims" - input: "dnn/batch_normalization_3/ExpandDims_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Squeeze" - op: "Squeeze" - input: "dnn/batch_normalization_3/Select" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_2/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_2" - op: "ExpandDims" - input: "dnn/batch_normalization_3/moments/Squeeze_1" - input: "dnn/batch_normalization_3/ExpandDims_2/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_3/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_3" - op: "ExpandDims" - input: "batch_normalization_2/moving_variance/read" - input: "dnn/batch_normalization_3/ExpandDims_3/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape_1/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape_1" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_3/Reshape_1/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Select_1" - op: "Select" - input: "dnn/batch_normalization_3/Reshape_1" - input: "dnn/batch_normalization_3/ExpandDims_2" - input: "dnn/batch_normalization_3/ExpandDims_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Squeeze_1" - op: "Squeeze" - input: "dnn/batch_normalization_3/Select_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_4/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.8999999761581421 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_4/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_4" - op: "ExpandDims" - input: "dnn/batch_normalization_3/ExpandDims_4/input" - input: "dnn/batch_normalization_3/ExpandDims_4/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_5/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_5/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/ExpandDims_5" - op: "ExpandDims" - input: "dnn/batch_normalization_3/ExpandDims_5/input" - input: "dnn/batch_normalization_3/ExpandDims_5/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape_2/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "dnn/batch_normalization_3/Reshape_2" - op: "Reshape" - input: "training" - input: "dnn/batch_normalization_3/Reshape_2/shape" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Select_2" - op: "Select" - input: "dnn/batch_normalization_3/Reshape_2" - input: "dnn/batch_normalization_3/ExpandDims_4" - input: "dnn/batch_normalization_3/ExpandDims_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/Squeeze_2" - op: "Squeeze" - input: "dnn/batch_normalization_3/Select_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "squeeze_dims" - value { - list { - i: 0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg/sub" - op: "Sub" - input: "dnn/batch_normalization_3/AssignMovingAvg/sub/x" - input: "dnn/batch_normalization_3/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg/sub_1" - op: "Sub" - input: "batch_normalization_2/moving_mean/read" - input: "dnn/batch_normalization_3/Squeeze" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg/mul" - op: "Mul" - input: "dnn/batch_normalization_3/AssignMovingAvg/sub_1" - input: "dnn/batch_normalization_3/AssignMovingAvg/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg" - op: "AssignSub" - input: "batch_normalization_2/moving_mean" - input: "dnn/batch_normalization_3/AssignMovingAvg/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub" - op: "Sub" - input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x" - input: "dnn/batch_normalization_3/Squeeze_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1" - op: "Sub" - input: "batch_normalization_2/moving_variance/read" - input: "dnn/batch_normalization_3/Squeeze_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg_1/mul" - op: "Mul" - input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1" - input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/AssignMovingAvg_1" - op: "AssignSub" - input: "batch_normalization_2/moving_variance" - input: "dnn/batch_normalization_3/AssignMovingAvg_1/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/add/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0010000000474974513 - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/add" - op: "Add" - input: "dnn/batch_normalization_3/Squeeze_1" - input: "dnn/batch_normalization_3/batchnorm/add/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/Rsqrt" - op: "Rsqrt" - input: "dnn/batch_normalization_3/batchnorm/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/mul" - op: "Mul" - input: "dnn/batch_normalization_3/batchnorm/Rsqrt" - input: "batch_normalization_2/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/mul_1" - op: "Mul" - input: "dnn/outputs/Selu" - input: "dnn/batch_normalization_3/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/mul_2" - op: "Mul" - input: "dnn/batch_normalization_3/Squeeze" - input: "dnn/batch_normalization_3/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/sub" - op: "Sub" - input: "batch_normalization_2/beta/read" - input: "dnn/batch_normalization_3/batchnorm/mul_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/batch_normalization_3/batchnorm/add_1" - op: "Add" - input: "dnn/batch_normalization_3/batchnorm/mul_1" - input: "dnn/batch_normalization_3/batchnorm/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape" - op: "Shape" - input: "y" - attr { - key: "T" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - op: "SparseSoftmaxCrossEntropyWithLogits" - input: "dnn/batch_normalization_3/batchnorm/add_1" - input: "y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tlabels" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "loss/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "loss/loss" - op: "Mean" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - input: "loss/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "train/gradients/Fill" - op: "Fill" - input: "train/gradients/Shape" - input: "train/gradients/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Reshape" - op: "Reshape" - input: "train/gradients/Fill" - input: "train/gradients/loss/loss_grad/Reshape/shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape" - op: "Shape" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/loss/loss_grad/Tile" - op: "Tile" - input: "train/gradients/loss/loss_grad/Reshape" - input: "train/gradients/loss/loss_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape_1" - op: "Shape" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Prod" - op: "Prod" - input: "train/gradients/loss/loss_grad/Shape_1" - input: "train/gradients/loss/loss_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/loss/loss_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Prod_1" - op: "Prod" - input: "train/gradients/loss/loss_grad/Shape_2" - input: "train/gradients/loss/loss_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/loss/loss_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Maximum" - op: "Maximum" - input: "train/gradients/loss/loss_grad/Prod_1" - input: "train/gradients/loss/loss_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/loss/loss_grad/Prod" - input: "train/gradients/loss/loss_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Cast" - op: "Cast" - input: "train/gradients/loss/loss_grad/floordiv" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/truediv" - op: "RealDiv" - input: "train/gradients/loss/loss_grad/Tile" - input: "train/gradients/loss/loss_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/zeros_like" - op: "ZerosLike" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient" - op: "PreventGradient" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "message" - value { - s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()" - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: -1 - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims" - op: "ExpandDims" - input: "train/gradients/loss/loss_grad/truediv" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - op: "Mul" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization_3/batchnorm/mul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum" - op: "Sum" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape" - op: "Shape" - input: "dnn/outputs/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency" - input: "dnn/batch_normalization_3/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1" - op: "Mul" - input: "dnn/outputs/Selu" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1" - input: "dnn/batch_normalization_3/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization_3/Squeeze" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/AddN" - op: "AddN" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul" - op: "Mul" - input: "train/gradients/AddN" - input: "batch_normalization_2/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization_3/batchnorm/Rsqrt" - input: "train/gradients/AddN" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select" - op: "Select" - input: "dnn/batch_normalization_3/Reshape" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization_3/Reshape" - input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad" - op: "RsqrtGrad" - input: "dnn/batch_normalization_3/batchnorm/Rsqrt" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select" - op: "Select" - input: "dnn/batch_normalization_3/Reshape_1" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization_3/Reshape_1" - input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization_3/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add" - op: "Add" - input: "dnn/batch_normalization_3/moments/variance/reduction_indices" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - op: "Shape" - input: "dnn/batch_normalization_3/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape" - op: "Shape" - input: "dnn/outputs/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar" - op: "Const" - input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 2.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar" - input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub" - op: "Sub" - input: "dnn/outputs/Selu" - input: "dnn/batch_normalization_3/moments/StopGradient" - input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg" - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg" - input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - op: "Shape" - input: "dnn/outputs/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add" - op: "Add" - input: "dnn/batch_normalization_3/moments/mean/reduction_indices" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - op: "Shape" - input: "dnn/outputs/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_1" - op: "AddN" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv" - attr { - key: "N" - value { - i: 3 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/Selu_grad/SeluGrad" - op: "SeluGrad" - input: "train/gradients/AddN_1" - input: "dnn/outputs/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad" - op: "BiasAddGrad" - input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/outputs/Selu_grad/SeluGrad" - input: "^train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad" - } - node { - name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad" - input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/Selu_grad/SeluGrad" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad" - input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency" - input: "outputs/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - op: "MatMul" - input: "dnn/Elu_1" - input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul" - input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/outputs/MatMul_grad/MatMul" - input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/Elu_1_grad/EluGrad" - op: "EluGrad" - input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency" - input: "dnn/Elu_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization_2/batchnorm/mul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/Elu_1_grad/EluGrad" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/Elu_1_grad/EluGrad" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape" - op: "Shape" - input: "dnn/hidden2/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency" - input: "dnn/batch_normalization_2/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1" - op: "Mul" - input: "dnn/hidden2/Elu" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1" - input: "dnn/batch_normalization_2/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization_2/Squeeze" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_2" - op: "AddN" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul" - op: "Mul" - input: "train/gradients/AddN_2" - input: "batch_normalization_1/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization_2/batchnorm/Rsqrt" - input: "train/gradients/AddN_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select" - op: "Select" - input: "dnn/batch_normalization_2/Reshape" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization_2/Reshape" - input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad" - op: "RsqrtGrad" - input: "dnn/batch_normalization_2/batchnorm/Rsqrt" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select" - op: "Select" - input: "dnn/batch_normalization_2/Reshape_1" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization_2/Reshape_1" - input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization_2/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add" - op: "Add" - input: "dnn/batch_normalization_2/moments/variance/reduction_indices" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - op: "Shape" - input: "dnn/batch_normalization_2/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape" - op: "Shape" - input: "dnn/hidden2/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar" - op: "Const" - input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 2.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar" - input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub" - op: "Sub" - input: "dnn/hidden2/Elu" - input: "dnn/batch_normalization_2/moments/StopGradient" - input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1" - op: "Mul" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg" - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg" - input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - op: "Shape" - input: "dnn/hidden2/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add" - op: "Add" - input: "dnn/batch_normalization_2/moments/mean/reduction_indices" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - op: "Shape" - input: "dnn/hidden2/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000d\000\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_3" - op: "AddN" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv" - attr { - key: "N" - value { - i: 3 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/Elu_grad/EluGrad" - op: "EluGrad" - input: "train/gradients/AddN_3" - input: "dnn/hidden2/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad" - op: "BiasAddGrad" - input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden2/Elu_grad/EluGrad" - input: "^train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad" - } - node { - name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad" - input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/Elu_grad/EluGrad" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad" - input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency" - input: "hidden2/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - op: "MatMul" - input: "dnn/Elu" - input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/Elu_grad/EluGrad" - op: "EluGrad" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - input: "dnn/Elu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization/batchnorm/mul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/Elu_grad/EluGrad" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/Elu_grad/EluGrad" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape" - op: "Shape" - input: "dnn/hidden1/Maximum" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency" - input: "dnn/batch_normalization/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1" - op: "Mul" - input: "dnn/hidden1/Maximum" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1" - input: "dnn/batch_normalization/batchnorm/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization/Squeeze" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_4" - op: "AddN" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul" - op: "Mul" - input: "train/gradients/AddN_4" - input: "batch_normalization/gamma/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1" - op: "Mul" - input: "dnn/batch_normalization/batchnorm/Rsqrt" - input: "train/gradients/AddN_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/Select" - op: "Select" - input: "dnn/batch_normalization/Reshape" - input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization/Reshape" - input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization/Select_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/Select_grad/Select" - input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/Select_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad" - op: "RsqrtGrad" - input: "dnn/batch_normalization/batchnorm/Rsqrt" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1" - input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select" - op: "Select" - input: "dnn/batch_normalization/Reshape_1" - input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1" - op: "Select" - input: "dnn/batch_normalization/Reshape_1" - input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like" - input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select_1" - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select" - input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1" - input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - op: "Shape" - input: "dnn/batch_normalization/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/add" - op: "Add" - input: "dnn/batch_normalization/moments/variance/reduction_indices" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/add" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - op: "Shape" - input: "dnn/batch_normalization/moments/SquaredDifference" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape" - op: "Shape" - input: "dnn/hidden1/Maximum" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar" - op: "Const" - input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 2.0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul" - op: "Mul" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar" - input: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub" - op: "Sub" - input: "dnn/hidden1/Maximum" - input: "dnn/batch_normalization/moments/StopGradient" - input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1" - op: "Mul" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg" - op: "Neg" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg" - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape" - input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg" - input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - op: "Shape" - input: "dnn/hidden1/Maximum" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/add" - op: "Add" - input: "dnn/batch_normalization/moments/mean/reduction_indices" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod" - op: "FloorMod" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/add" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range" - op: "Range" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta" - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill" - op: "Fill" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch" - op: "DynamicStitch" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile" - op: "Tile" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - op: "Shape" - input: "dnn/hidden1/Maximum" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000,\001\000\000" - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod" - op: "Prod" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1" - op: "Prod" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1" - op: "Maximum" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1" - op: "FloorDiv" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast" - op: "Cast" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv" - op: "RealDiv" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_5" - op: "AddN" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency" - input: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv" - attr { - key: "N" - value { - i: 3 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - op: "Shape" - input: "dnn/hidden1/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - op: "Shape" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2" - op: "Shape" - input: "train/gradients/AddN_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - op: "Fill" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - op: "GreaterEqual" - input: "dnn/hidden1/mul" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Select" - op: "Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - input: "train/gradients/AddN_5" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1" - op: "Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - input: "train/gradients/AddN_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1" - input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape" - input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape" - input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - op: "Shape" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden1/mul_grad/Shape" - input: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/mul" - op: "Mul" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - input: "dnn/hidden1/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden1/mul_grad/mul" - input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden1/mul_grad/Sum" - input: "train/gradients/dnn/hidden1/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/mul_1" - op: "Mul" - input: "dnn/hidden1/mul/x" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden1/mul_grad/mul_1" - input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden1/mul_grad/Sum_1" - input: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/mul_grad/Reshape" - input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/mul_grad/Reshape" - input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1" - input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/AddN_6" - op: "AddN" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad" - op: "BiasAddGrad" - input: "train/gradients/AddN_6" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/AddN_6" - input: "^train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad" - } - node { - name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/AddN_6" - input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad" - input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency" - input: "hidden1/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - op: "MatMul" - input: "X" - input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/GradientDescent/learning_rate" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.009999999776482582 - } - } - } - } - node { - name: "train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "hidden1/kernel" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_hidden1/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "hidden1/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization/gamma" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization/beta" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "hidden2/kernel" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_hidden2/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "hidden2/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization_1/gamma" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization_1/beta" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_outputs/kernel/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "outputs/kernel" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_outputs/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "outputs/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization_2/gamma" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "batch_normalization_2/beta" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent" - op: "NoOp" - input: "^train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent" - input: "^train/GradientDescent/update_hidden1/bias/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent" - input: "^train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent" - input: "^train/GradientDescent/update_hidden2/bias/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent" - input: "^train/GradientDescent/update_outputs/kernel/ApplyGradientDescent" - input: "^train/GradientDescent/update_outputs/bias/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent" - input: "^train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent" - } - node { - name: "eval/in_top_k/InTopKV2/k" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT64 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT64 - tensor_shape { - } - int64_val: 1 - } - } - } - } - node { - name: "eval/in_top_k/InTopKV2" - op: "InTopKV2" - input: "dnn/batch_normalization_3/batchnorm/add_1" - input: "y" - input: "eval/in_top_k/InTopKV2/k" - attr { - key: "T" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "eval/Cast" - op: "Cast" - input: "eval/in_top_k/InTopKV2" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "eval/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "eval/Mean" - op: "Mean" - input: "eval/Cast" - input: "eval/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "init" - op: "NoOp" - input: "^hidden1/kernel/Assign" - input: "^hidden1/bias/Assign" - input: "^batch_normalization/gamma/Assign" - input: "^batch_normalization/beta/Assign" - input: "^batch_normalization/moving_mean/Assign" - input: "^batch_normalization/moving_variance/Assign" - input: "^hidden2/kernel/Assign" - input: "^hidden2/bias/Assign" - input: "^batch_normalization_1/gamma/Assign" - input: "^batch_normalization_1/beta/Assign" - input: "^batch_normalization_1/moving_mean/Assign" - input: "^batch_normalization_1/moving_variance/Assign" - input: "^outputs/kernel/Assign" - input: "^outputs/bias/Assign" - input: "^batch_normalization_2/gamma/Assign" - input: "^batch_normalization_2/beta/Assign" - input: "^batch_normalization_2/moving_mean/Assign" - input: "^batch_normalization_2/moving_variance/Assign" - } - node { - name: "Accuracy/tags" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "Accuracy" - } - } - } - } - node { - name: "Accuracy" - op: "ScalarSummary" - input: "Accuracy/tags" - input: "eval/Mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save/StringJoin/inputs_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "_temp_2105935f653947478038680db7095a2a/part" - } - } - } - } - node { - name: "save/StringJoin" - op: "StringJoin" - input: "save/Const" - input: "save/StringJoin/inputs_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "separator" - value { - s: "" - } - } - } - node { - name: "save/num_shards" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "save/ShardedFilename/shard" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "save/ShardedFilename" - op: "ShardedFilename" - input: "save/StringJoin" - input: "save/ShardedFilename/shard" - input: "save/num_shards" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 18 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 18 - } - } - string_val: "batch_normalization/beta" - string_val: "batch_normalization/gamma" - string_val: "batch_normalization/moving_mean" - string_val: "batch_normalization/moving_variance" - string_val: "batch_normalization_1/beta" - string_val: "batch_normalization_1/gamma" - string_val: "batch_normalization_1/moving_mean" - string_val: "batch_normalization_1/moving_variance" - string_val: "batch_normalization_2/beta" - string_val: "batch_normalization_2/gamma" - string_val: "batch_normalization_2/moving_mean" - string_val: "batch_normalization_2/moving_variance" - string_val: "hidden1/bias" - string_val: "hidden1/kernel" - string_val: "hidden2/bias" - string_val: "hidden2/kernel" - string_val: "outputs/bias" - string_val: "outputs/kernel" - } - } - } - } - node { - name: "save/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 18 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 18 - } - } - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save/SaveV2" - op: "SaveV2" - input: "save/ShardedFilename" - input: "save/SaveV2/tensor_names" - input: "save/SaveV2/shape_and_slices" - input: "batch_normalization/beta" - input: "batch_normalization/gamma" - input: "batch_normalization/moving_mean" - input: "batch_normalization/moving_variance" - input: "batch_normalization_1/beta" - input: "batch_normalization_1/gamma" - input: "batch_normalization_1/moving_mean" - input: "batch_normalization_1/moving_variance" - input: "batch_normalization_2/beta" - input: "batch_normalization_2/gamma" - input: "batch_normalization_2/moving_mean" - input: "batch_normalization_2/moving_variance" - input: "hidden1/bias" - input: "hidden1/kernel" - input: "hidden2/bias" - input: "hidden2/kernel" - input: "outputs/bias" - input: "outputs/kernel" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - } - } - } - } - node { - name: "save/control_dependency" - op: "Identity" - input: "save/ShardedFilename" - input: "^save/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save/ShardedFilename" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/MergeV2Checkpoints/checkpoint_prefixes" - op: "Pack" - input: "save/ShardedFilename" - input: "^save/control_dependency" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "save/MergeV2Checkpoints" - op: "MergeV2Checkpoints" - input: "save/MergeV2Checkpoints/checkpoint_prefixes" - input: "save/Const" - attr { - key: "delete_old_dirs" - value { - b: true - } - } - } - node { - name: "save/Identity" - op: "Identity" - input: "save/Const" - input: "^save/control_dependency" - input: "^save/MergeV2Checkpoints" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization/beta" - } - } - } - } - node { - name: "save/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2/tensor_names" - input: "save/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign" - op: "Assign" - input: "batch_normalization/beta" - input: "save/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization/gamma" - } - } - } - } - node { - name: "save/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_1" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_1/tensor_names" - input: "save/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_1" - op: "Assign" - input: "batch_normalization/gamma" - input: "save/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization/moving_mean" - } - } - } - } - node { - name: "save/RestoreV2_2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_2/tensor_names" - input: "save/RestoreV2_2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_2" - op: "Assign" - input: "batch_normalization/moving_mean" - input: "save/RestoreV2_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_3/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization/moving_variance" - } - } - } - } - node { - name: "save/RestoreV2_3/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_3" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_3/tensor_names" - input: "save/RestoreV2_3/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_3" - op: "Assign" - input: "batch_normalization/moving_variance" - input: "save/RestoreV2_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_4/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_1/beta" - } - } - } - } - node { - name: "save/RestoreV2_4/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_4" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_4/tensor_names" - input: "save/RestoreV2_4/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_4" - op: "Assign" - input: "batch_normalization_1/beta" - input: "save/RestoreV2_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_5/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_1/gamma" - } - } - } - } - node { - name: "save/RestoreV2_5/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_5" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_5/tensor_names" - input: "save/RestoreV2_5/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_5" - op: "Assign" - input: "batch_normalization_1/gamma" - input: "save/RestoreV2_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_6/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_1/moving_mean" - } - } - } - } - node { - name: "save/RestoreV2_6/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_6" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_6/tensor_names" - input: "save/RestoreV2_6/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_6" - op: "Assign" - input: "batch_normalization_1/moving_mean" - input: "save/RestoreV2_6" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_7/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_1/moving_variance" - } - } - } - } - node { - name: "save/RestoreV2_7/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_7" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_7/tensor_names" - input: "save/RestoreV2_7/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_7" - op: "Assign" - input: "batch_normalization_1/moving_variance" - input: "save/RestoreV2_7" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_1/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_8/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_2/beta" - } - } - } - } - node { - name: "save/RestoreV2_8/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_8" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_8/tensor_names" - input: "save/RestoreV2_8/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_8" - op: "Assign" - input: "batch_normalization_2/beta" - input: "save/RestoreV2_8" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/beta" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_9/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_2/gamma" - } - } - } - } - node { - name: "save/RestoreV2_9/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_9" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_9/tensor_names" - input: "save/RestoreV2_9/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_9" - op: "Assign" - input: "batch_normalization_2/gamma" - input: "save/RestoreV2_9" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/gamma" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_10/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_2/moving_mean" - } - } - } - } - node { - name: "save/RestoreV2_10/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_10" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_10/tensor_names" - input: "save/RestoreV2_10/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_10" - op: "Assign" - input: "batch_normalization_2/moving_mean" - input: "save/RestoreV2_10" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_mean" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_11/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "batch_normalization_2/moving_variance" - } - } - } - } - node { - name: "save/RestoreV2_11/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_11" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_11/tensor_names" - input: "save/RestoreV2_11/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_11" - op: "Assign" - input: "batch_normalization_2/moving_variance" - input: "save/RestoreV2_11" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@batch_normalization_2/moving_variance" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_12/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "hidden1/bias" - } - } - } - } - node { - name: "save/RestoreV2_12/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_12" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_12/tensor_names" - input: "save/RestoreV2_12/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_12" - op: "Assign" - input: "hidden1/bias" - input: "save/RestoreV2_12" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_13/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "hidden1/kernel" - } - } - } - } - node { - name: "save/RestoreV2_13/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_13" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_13/tensor_names" - input: "save/RestoreV2_13/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_13" - op: "Assign" - input: "hidden1/kernel" - input: "save/RestoreV2_13" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden1/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_14/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "hidden2/bias" - } - } - } - } - node { - name: "save/RestoreV2_14/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_14" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_14/tensor_names" - input: "save/RestoreV2_14/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_14" - op: "Assign" - input: "hidden2/bias" - input: "save/RestoreV2_14" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_15/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "hidden2/kernel" - } - } - } - } - node { - name: "save/RestoreV2_15/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_15" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_15/tensor_names" - input: "save/RestoreV2_15/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_15" - op: "Assign" - input: "hidden2/kernel" - input: "save/RestoreV2_15" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@hidden2/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_16/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "outputs/bias" - } - } - } - } - node { - name: "save/RestoreV2_16/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_16" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_16/tensor_names" - input: "save/RestoreV2_16/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_16" - op: "Assign" - input: "outputs/bias" - input: "save/RestoreV2_16" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_17/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "outputs/kernel" - } - } - } - } - node { - name: "save/RestoreV2_17/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_17" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_17/tensor_names" - input: "save/RestoreV2_17/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_17" - op: "Assign" - input: "outputs/kernel" - input: "save/RestoreV2_17" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/restore_shard" - op: "NoOp" - input: "^save/Assign" - input: "^save/Assign_1" - input: "^save/Assign_2" - input: "^save/Assign_3" - input: "^save/Assign_4" - input: "^save/Assign_5" - input: "^save/Assign_6" - input: "^save/Assign_7" - input: "^save/Assign_8" - input: "^save/Assign_9" - input: "^save/Assign_10" - input: "^save/Assign_11" - input: "^save/Assign_12" - input: "^save/Assign_13" - input: "^save/Assign_14" - input: "^save/Assign_15" - input: "^save/Assign_16" - input: "^save/Assign_17" - } - node { - name: "save/restore_all" - op: "NoOp" - input: "^save/restore_shard" - } - versions { - producer: 24 - } - } - saver_def { - filename_tensor_name: "save/Const:0" - save_tensor_name: "save/Identity:0" - restore_op_name: "save/restore_all" - max_to_keep: 5 - sharded: true - keep_checkpoint_every_n_hours: 10000.0 - version: V2 - } - collection_def { - key: "summaries" - value { - node_list { - value: "Accuracy:0" - } - } - } - collection_def { - key: "train_op" - value { - node_list { - value: "train/GradientDescent" - } - } - } - collection_def { - key: "trainable_variables" - value { - bytes_list { - value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0" - value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0" - value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0" - value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0" - value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0" - value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0" - value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0" - value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0" - value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0" - value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0" - value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0" - value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0" - } - } - } - collection_def { - key: "update_ops" - value { - node_list { - value: "dnn/batch_normalization/AssignMovingAvg:0" - value: "dnn/batch_normalization/AssignMovingAvg_1:0" - value: "dnn/batch_normalization_2/AssignMovingAvg:0" - value: "dnn/batch_normalization_2/AssignMovingAvg_1:0" - value: "dnn/batch_normalization_3/AssignMovingAvg:0" - value: "dnn/batch_normalization_3/AssignMovingAvg_1:0" - } - } - } - collection_def { - key: "variables" - value { - bytes_list { - value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0" - value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0" - value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0" - value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0" - value: "\n!batch_normalization/moving_mean:0\022&batch_normalization/moving_mean/Assign\032&batch_normalization/moving_mean/read:023batch_normalization/moving_mean/Initializer/zeros:0" - value: "\n%batch_normalization/moving_variance:0\022*batch_normalization/moving_variance/Assign\032*batch_normalization/moving_variance/read:026batch_normalization/moving_variance/Initializer/ones:0" - value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0" - value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0" - value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0" - value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0" - value: "\n#batch_normalization_1/moving_mean:0\022(batch_normalization_1/moving_mean/Assign\032(batch_normalization_1/moving_mean/read:025batch_normalization_1/moving_mean/Initializer/zeros:0" - value: "\n\'batch_normalization_1/moving_variance:0\022,batch_normalization_1/moving_variance/Assign\032,batch_normalization_1/moving_variance/read:028batch_normalization_1/moving_variance/Initializer/ones:0" - value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0" - value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0" - value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0" - value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0" - value: "\n#batch_normalization_2/moving_mean:0\022(batch_normalization_2/moving_mean/Assign\032(batch_normalization_2/moving_mean/read:025batch_normalization_2/moving_mean/Initializer/zeros:0" - value: "\n\'batch_normalization_2/moving_variance:0\022,batch_normalization_2/moving_variance/Assign\032,batch_normalization_2/moving_variance/read:028batch_normalization_2/moving_variance/Initializer/ones:0" - } - } - } - signature_def { - key: "serving_default" - value { - inputs { - key: "x" - value { - name: "X:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - outputs { - key: "y" - value { - name: "dnn/batch_normalization_3/batchnorm/add_1:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - method_name: "tensorflow/serving/predict" - } - } -} diff --git a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index 875e8361e10..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.index Binary files differdeleted file mode 100644 index 46c7b258cf5..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/blog/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/blog/saved/saved_model.pbtxt deleted file mode 100644 index a669e69b709..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/blog/saved/saved_model.pbtxt +++ /dev/null @@ -1,14726 +0,0 @@ -saved_model_schema_version: 1 -meta_graphs { - meta_info_def { - stripped_op_list { - op { - name: "Add" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_STRING - } - } - } - } - op { - name: "AddN" - input_arg { - name: "inputs" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "sum" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - type: DT_VARIANT - } - } - } - is_aggregate: true - is_commutative: true - } - op { - name: "ApplyAdagrad" - input_arg { - name: "var" - type_attr: "T" - is_ref: true - } - input_arg { - name: "accum" - type_attr: "T" - is_ref: true - } - input_arg { - name: "lr" - type_attr: "T" - } - input_arg { - name: "grad" - type_attr: "T" - } - output_arg { - name: "out" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "Assign" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - } - attr { - name: "validate_shape" - type: "bool" - default_value { - b: true - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: true - } - } - allows_uninitialized_input: true - } - op { - name: "AssignAdd" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "BroadcastGradientArgs" - input_arg { - name: "s0" - type_attr: "T" - } - input_arg { - name: "s1" - type_attr: "T" - } - output_arg { - name: "r0" - type_attr: "T" - } - output_arg { - name: "r1" - type_attr: "T" - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Cast" - input_arg { - name: "x" - type_attr: "SrcT" - } - output_arg { - name: "y" - type_attr: "DstT" - } - attr { - name: "SrcT" - type: "type" - } - attr { - name: "DstT" - type: "type" - } - } - op { - name: "ConcatV2" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - input_arg { - name: "axis" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 2 - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Const" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "value" - type: "tensor" - } - attr { - name: "dtype" - type: "type" - } - } - op { - name: "Equal" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_QUINT8 - type: DT_QINT8 - type: DT_QINT32 - type: DT_STRING - type: DT_BOOL - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "Fill" - input_arg { - name: "dims" - type: DT_INT32 - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "FloorDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "GreaterEqual" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Identity" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "LessEqual" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Log" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "MatMul" - input_arg { - name: "a" - type_attr: "T" - } - input_arg { - name: "b" - type_attr: "T" - } - output_arg { - name: "product" - type_attr: "T" - } - attr { - name: "transpose_a" - type: "bool" - default_value { - b: false - } - } - attr { - name: "transpose_b" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Maximum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Mean" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MergeSummary" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "summary" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - } - op { - name: "MergeV2Checkpoints" - input_arg { - name: "checkpoint_prefixes" - type: DT_STRING - } - input_arg { - name: "destination_prefix" - type: DT_STRING - } - attr { - name: "delete_old_dirs" - type: "bool" - default_value { - b: true - } - } - is_stateful: true - } - op { - name: "Minimum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Mul" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "Neg" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "NoOp" - } - op { - name: "Pack" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - attr { - name: "axis" - type: "int" - default_value { - i: 0 - } - } - } - op { - name: "Placeholder" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - default_value { - shape { - unknown_rank: true - } - } - } - } - op { - name: "Prod" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RandomUniform" - input_arg { - name: "shape" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "seed" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "seed2" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "dtype" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - is_stateful: true - } - op { - name: "RealDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Reciprocal" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Relu" - input_arg { - name: "features" - type_attr: "T" - } - output_arg { - name: "activations" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "ReluGrad" - input_arg { - name: "gradients" - type_attr: "T" - } - input_arg { - name: "features" - type_attr: "T" - } - output_arg { - name: "backprops" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Reshape" - input_arg { - name: "tensor" - type_attr: "T" - } - input_arg { - name: "shape" - type_attr: "Tshape" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tshape" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RestoreV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - output_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "SaveV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - input_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "ScalarSummary" - input_arg { - name: "tags" - type: DT_STRING - } - input_arg { - name: "values" - type_attr: "T" - } - output_arg { - name: "summary" - type: DT_STRING - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Select" - input_arg { - name: "condition" - type: DT_BOOL - } - input_arg { - name: "t" - type_attr: "T" - } - input_arg { - name: "e" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "Shape" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "out_type" - } - attr { - name: "T" - type: "type" - } - attr { - name: "out_type" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "ShardedFilename" - input_arg { - name: "basename" - type: DT_STRING - } - input_arg { - name: "shard" - type: DT_INT32 - } - input_arg { - name: "num_shards" - type: DT_INT32 - } - output_arg { - name: "filename" - type: DT_STRING - } - } - op { - name: "Sigmoid" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "SigmoidGrad" - input_arg { - name: "y" - type_attr: "T" - } - input_arg { - name: "dy" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "StringJoin" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "output" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "separator" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Sub" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Sum" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Tile" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "multiples" - type_attr: "Tmultiples" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tmultiples" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "TruncatedNormal" - input_arg { - name: "shape" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "seed" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "seed2" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "dtype" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - is_stateful: true - } - op { - name: "VariableV2" - output_arg { - name: "ref" - type_attr: "dtype" - is_ref: true - } - attr { - name: "shape" - type: "shape" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "container" - type: "string" - default_value { - s: "" - } - } - attr { - name: "shared_name" - type: "string" - default_value { - s: "" - } - } - is_stateful: true - } - } - tags: "serve" - tensorflow_version: "1.4.1" - tensorflow_git_version: "v1.4.0-19-ga52c8d9" - } - graph_def { - node { - name: "input_u" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - node { - name: "input_d" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - node { - name: "input_y" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - node { - name: "input_concat/axis" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "input_concat" - op: "ConcatV2" - input: "input_d" - input: "input_u" - input: "input_concat/axis" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 256 - } - } - } - } - } - } - node { - name: "truncated_normal/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\000\001\000\000\000\002\000\000" - } - } - } - } - node { - name: "truncated_normal/mean" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "truncated_normal/stddev" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "truncated_normal/mul" - op: "Mul" - input: "truncated_normal/TruncatedNormal" - input: "truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "truncated_normal" - op: "Add" - input: "truncated_normal/mul" - input: "truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "W_hidden" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_hidden/Assign" - op: "Assign" - input: "W_hidden" - input: "truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_hidden/read" - op: "Identity" - input: "W_hidden" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 512 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "b_hidden" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 512 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_hidden/Assign" - op: "Assign" - input: "b_hidden" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_hidden/read" - op: "Identity" - input: "b_hidden" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - } - node { - name: "MatMul" - op: "MatMul" - input: "input_concat" - input: "W_hidden/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "add" - op: "Add" - input: "MatMul" - input: "b_hidden/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "hidden_layer" - op: "Relu" - input: "add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "truncated_normal_1/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\000\002\000\000\200\000\000\000" - } - } - } - } - node { - name: "truncated_normal_1/mean" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "truncated_normal_1/stddev" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "truncated_normal_1/TruncatedNormal" - op: "TruncatedNormal" - input: "truncated_normal_1/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "truncated_normal_1/mul" - op: "Mul" - input: "truncated_normal_1/TruncatedNormal" - input: "truncated_normal_1/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "truncated_normal_1" - op: "Add" - input: "truncated_normal_1/mul" - input: "truncated_normal_1/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "W_hidden_2" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_hidden_2/Assign" - op: "Assign" - input: "W_hidden_2" - input: "truncated_normal_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_hidden_2/read" - op: "Identity" - input: "W_hidden_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "Const_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 128 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "b_hidden_2" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 128 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_hidden_2/Assign" - op: "Assign" - input: "b_hidden_2" - input: "Const_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_hidden_2/read" - op: "Identity" - input: "b_hidden_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - } - node { - name: "MatMul_1" - op: "MatMul" - input: "hidden_layer" - input: "W_hidden_2/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "add_1" - op: "Add" - input: "MatMul_1" - input: "b_hidden_2/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "hidden_layer_2" - op: "Relu" - input: "add_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "random_uniform/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\200\000\000\000\001\000\000\000" - } - } - } - } - node { - name: "random_uniform/min" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: -0.10000000149011612 - } - } - } - } - node { - name: "random_uniform/max" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "random_uniform/RandomUniform" - op: "RandomUniform" - input: "random_uniform/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "random_uniform/sub" - op: "Sub" - input: "random_uniform/max" - input: "random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "random_uniform/mul" - op: "Mul" - input: "random_uniform/RandomUniform" - input: "random_uniform/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "random_uniform" - op: "Add" - input: "random_uniform/mul" - input: "random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "W_final" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_final/Assign" - op: "Assign" - input: "W_final" - input: "random_uniform" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_final/read" - op: "Identity" - input: "W_final" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "b_final" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_final/Assign" - op: "Assign" - input: "b_final" - input: "zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_final/read" - op: "Identity" - input: "b_final" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "MatMul_2" - op: "MatMul" - input: "hidden_layer_2" - input: "W_final/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "add_2" - op: "Add" - input: "MatMul_2" - input: "b_final/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "y" - op: "Sigmoid" - input: "add_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "GreaterEqual/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.5 - } - } - } - } - node { - name: "GreaterEqual" - op: "GreaterEqual" - input: "y" - input: "GreaterEqual/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "prediction" - op: "Cast" - input: "GreaterEqual" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "clip_by_value/Minimum/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.9999899864196777 - } - } - } - } - node { - name: "clip_by_value/Minimum" - op: "Minimum" - input: "y" - input: "clip_by_value/Minimum/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "clip_by_value/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 9.999999747378752e-06 - } - } - } - } - node { - name: "clip_by_value" - op: "Maximum" - input: "clip_by_value/Minimum" - input: "clip_by_value/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Neg" - op: "Neg" - input: "input_y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Log" - op: "Log" - input: "clip_by_value" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "mul" - op: "Mul" - input: "Neg" - input: "Log" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "sub/x" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "sub" - op: "Sub" - input: "sub/x" - input: "input_y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "sub_1/x" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "sub_1" - op: "Sub" - input: "sub_1/x" - input: "clip_by_value" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Log_1" - op: "Log" - input: "sub_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "mul_1" - op: "Mul" - input: "sub" - input: "Log_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "sub_2" - op: "Sub" - input: "mul" - input: "mul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Const_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\000\000\000\000\001\000\000\000" - } - } - } - } - node { - name: "loss" - op: "Mean" - input: "sub_2" - input: "Const_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "Equal" - op: "Equal" - input: "prediction" - input: "input_y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Cast" - op: "Cast" - input: "Equal" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Const_3" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\000\000\000\000\001\000\000\000" - } - } - } - } - node { - name: "accuracy" - op: "Mean" - input: "Cast" - input: "Const_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "global_step/initial_value" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "global_step" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "shape" - value { - shape { - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "global_step/Assign" - op: "Assign" - input: "global_step" - input: "global_step/initial_value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "global_step/read" - op: "Identity" - input: "global_step" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "gradients/Fill" - op: "Fill" - input: "gradients/Shape" - input: "gradients/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/loss_grad/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\001\000\000\000\001\000\000\000" - } - } - } - } - node { - name: "gradients/loss_grad/Reshape" - op: "Reshape" - input: "gradients/Fill" - input: "gradients/loss_grad/Reshape/shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/loss_grad/Shape" - op: "Shape" - input: "sub_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/loss_grad/Tile" - op: "Tile" - input: "gradients/loss_grad/Reshape" - input: "gradients/loss_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/loss_grad/Shape_1" - op: "Shape" - input: "sub_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/loss_grad/Shape_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/loss_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "gradients/loss_grad/Prod" - op: "Prod" - input: "gradients/loss_grad/Shape_1" - input: "gradients/loss_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/loss_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "gradients/loss_grad/Prod_1" - op: "Prod" - input: "gradients/loss_grad/Shape_2" - input: "gradients/loss_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/loss_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "gradients/loss_grad/Maximum" - op: "Maximum" - input: "gradients/loss_grad/Prod_1" - input: "gradients/loss_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/loss_grad/floordiv" - op: "FloorDiv" - input: "gradients/loss_grad/Prod" - input: "gradients/loss_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/loss_grad/Cast" - op: "Cast" - input: "gradients/loss_grad/floordiv" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/loss_grad/truediv" - op: "RealDiv" - input: "gradients/loss_grad/Tile" - input: "gradients/loss_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_2_grad/Shape" - op: "Shape" - input: "mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/sub_2_grad/Shape_1" - op: "Shape" - input: "mul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/sub_2_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/sub_2_grad/Shape" - input: "gradients/sub_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/sub_2_grad/Sum" - op: "Sum" - input: "gradients/loss_grad/truediv" - input: "gradients/sub_2_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/sub_2_grad/Reshape" - op: "Reshape" - input: "gradients/sub_2_grad/Sum" - input: "gradients/sub_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_2_grad/Sum_1" - op: "Sum" - input: "gradients/loss_grad/truediv" - input: "gradients/sub_2_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/sub_2_grad/Neg" - op: "Neg" - input: "gradients/sub_2_grad/Sum_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "gradients/sub_2_grad/Reshape_1" - op: "Reshape" - input: "gradients/sub_2_grad/Neg" - input: "gradients/sub_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_2_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/sub_2_grad/Reshape" - input: "^gradients/sub_2_grad/Reshape_1" - } - node { - name: "gradients/sub_2_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/sub_2_grad/Reshape" - input: "^gradients/sub_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/sub_2_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/sub_2_grad/Reshape_1" - input: "^gradients/sub_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/sub_2_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/Shape" - op: "Shape" - input: "Neg" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/mul_grad/Shape_1" - op: "Shape" - input: "Log" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/mul_grad/Shape" - input: "gradients/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/mul" - op: "Mul" - input: "gradients/sub_2_grad/tuple/control_dependency" - input: "Log" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/Sum" - op: "Sum" - input: "gradients/mul_grad/mul" - input: "gradients/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/mul_grad/Reshape" - op: "Reshape" - input: "gradients/mul_grad/Sum" - input: "gradients/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/mul_1" - op: "Mul" - input: "Neg" - input: "gradients/sub_2_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/Sum_1" - op: "Sum" - input: "gradients/mul_grad/mul_1" - input: "gradients/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/mul_grad/Reshape_1" - op: "Reshape" - input: "gradients/mul_grad/Sum_1" - input: "gradients/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/mul_grad/Reshape" - input: "^gradients/mul_grad/Reshape_1" - } - node { - name: "gradients/mul_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/mul_grad/Reshape" - input: "^gradients/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/mul_grad/Reshape_1" - input: "^gradients/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/Shape" - op: "Shape" - input: "sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/mul_1_grad/Shape_1" - op: "Shape" - input: "Log_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/mul_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/mul_1_grad/Shape" - input: "gradients/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/mul" - op: "Mul" - input: "gradients/sub_2_grad/tuple/control_dependency_1" - input: "Log_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/Sum" - op: "Sum" - input: "gradients/mul_1_grad/mul" - input: "gradients/mul_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/mul_1_grad/Reshape" - op: "Reshape" - input: "gradients/mul_1_grad/Sum" - input: "gradients/mul_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/mul_1" - op: "Mul" - input: "sub" - input: "gradients/sub_2_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/Sum_1" - op: "Sum" - input: "gradients/mul_1_grad/mul_1" - input: "gradients/mul_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/mul_1_grad/Reshape_1" - op: "Reshape" - input: "gradients/mul_1_grad/Sum_1" - input: "gradients/mul_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/mul_1_grad/Reshape" - input: "^gradients/mul_1_grad/Reshape_1" - } - node { - name: "gradients/mul_1_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/mul_1_grad/Reshape" - input: "^gradients/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/mul_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/mul_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/mul_1_grad/Reshape_1" - input: "^gradients/mul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/mul_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/Log_grad/Reciprocal" - op: "Reciprocal" - input: "clip_by_value" - input: "^gradients/mul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/Log_grad/mul" - op: "Mul" - input: "gradients/mul_grad/tuple/control_dependency_1" - input: "gradients/Log_grad/Reciprocal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/Log_1_grad/Reciprocal" - op: "Reciprocal" - input: "sub_1" - input: "^gradients/mul_1_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/Log_1_grad/mul" - op: "Mul" - input: "gradients/mul_1_grad/tuple/control_dependency_1" - input: "gradients/Log_1_grad/Reciprocal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_1_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/sub_1_grad/Shape_1" - op: "Shape" - input: "clip_by_value" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/sub_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/sub_1_grad/Shape" - input: "gradients/sub_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/sub_1_grad/Sum" - op: "Sum" - input: "gradients/Log_1_grad/mul" - input: "gradients/sub_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/sub_1_grad/Reshape" - op: "Reshape" - input: "gradients/sub_1_grad/Sum" - input: "gradients/sub_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/sub_1_grad/Sum_1" - op: "Sum" - input: "gradients/Log_1_grad/mul" - input: "gradients/sub_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/sub_1_grad/Neg" - op: "Neg" - input: "gradients/sub_1_grad/Sum_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - } - node { - name: "gradients/sub_1_grad/Reshape_1" - op: "Reshape" - input: "gradients/sub_1_grad/Neg" - input: "gradients/sub_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/sub_1_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/sub_1_grad/Reshape" - input: "^gradients/sub_1_grad/Reshape_1" - } - node { - name: "gradients/sub_1_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/sub_1_grad/Reshape" - input: "^gradients/sub_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/sub_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/sub_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/sub_1_grad/Reshape_1" - input: "^gradients/sub_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/sub_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/AddN" - op: "AddN" - input: "gradients/Log_grad/mul" - input: "gradients/sub_1_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Log_grad/mul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Shape" - op: "Shape" - input: "clip_by_value/Minimum" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/clip_by_value_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Shape_2" - op: "Shape" - input: "gradients/AddN" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/clip_by_value_grad/zeros/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "gradients/clip_by_value_grad/zeros" - op: "Fill" - input: "gradients/clip_by_value_grad/Shape_2" - input: "gradients/clip_by_value_grad/zeros/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/GreaterEqual" - op: "GreaterEqual" - input: "clip_by_value/Minimum" - input: "clip_by_value/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/clip_by_value_grad/Shape" - input: "gradients/clip_by_value_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Select" - op: "Select" - input: "gradients/clip_by_value_grad/GreaterEqual" - input: "gradients/AddN" - input: "gradients/clip_by_value_grad/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Select_1" - op: "Select" - input: "gradients/clip_by_value_grad/GreaterEqual" - input: "gradients/clip_by_value_grad/zeros" - input: "gradients/AddN" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Sum" - op: "Sum" - input: "gradients/clip_by_value_grad/Select" - input: "gradients/clip_by_value_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/clip_by_value_grad/Reshape" - op: "Reshape" - input: "gradients/clip_by_value_grad/Sum" - input: "gradients/clip_by_value_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/Sum_1" - op: "Sum" - input: "gradients/clip_by_value_grad/Select_1" - input: "gradients/clip_by_value_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/clip_by_value_grad/Reshape_1" - op: "Reshape" - input: "gradients/clip_by_value_grad/Sum_1" - input: "gradients/clip_by_value_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/clip_by_value_grad/Reshape" - input: "^gradients/clip_by_value_grad/Reshape_1" - } - node { - name: "gradients/clip_by_value_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/clip_by_value_grad/Reshape" - input: "^gradients/clip_by_value_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/clip_by_value_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/clip_by_value_grad/Reshape_1" - input: "^gradients/clip_by_value_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/clip_by_value_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Shape" - op: "Shape" - input: "y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Shape_2" - op: "Shape" - input: "gradients/clip_by_value_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/zeros/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/zeros" - op: "Fill" - input: "gradients/clip_by_value/Minimum_grad/Shape_2" - input: "gradients/clip_by_value/Minimum_grad/zeros/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/LessEqual" - op: "LessEqual" - input: "y" - input: "clip_by_value/Minimum/y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/clip_by_value/Minimum_grad/Shape" - input: "gradients/clip_by_value/Minimum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Select" - op: "Select" - input: "gradients/clip_by_value/Minimum_grad/LessEqual" - input: "gradients/clip_by_value_grad/tuple/control_dependency" - input: "gradients/clip_by_value/Minimum_grad/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Select_1" - op: "Select" - input: "gradients/clip_by_value/Minimum_grad/LessEqual" - input: "gradients/clip_by_value/Minimum_grad/zeros" - input: "gradients/clip_by_value_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Sum" - op: "Sum" - input: "gradients/clip_by_value/Minimum_grad/Select" - input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Reshape" - op: "Reshape" - input: "gradients/clip_by_value/Minimum_grad/Sum" - input: "gradients/clip_by_value/Minimum_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Sum_1" - op: "Sum" - input: "gradients/clip_by_value/Minimum_grad/Select_1" - input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/Reshape_1" - op: "Reshape" - input: "gradients/clip_by_value/Minimum_grad/Sum_1" - input: "gradients/clip_by_value/Minimum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/clip_by_value/Minimum_grad/Reshape" - input: "^gradients/clip_by_value/Minimum_grad/Reshape_1" - } - node { - name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/clip_by_value/Minimum_grad/Reshape" - input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/clip_by_value/Minimum_grad/Reshape_1" - input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/y_grad/SigmoidGrad" - op: "SigmoidGrad" - input: "y" - input: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/add_2_grad/Shape" - op: "Shape" - input: "MatMul_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/add_2_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "gradients/add_2_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/add_2_grad/Shape" - input: "gradients/add_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/add_2_grad/Sum" - op: "Sum" - input: "gradients/y_grad/SigmoidGrad" - input: "gradients/add_2_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_2_grad/Reshape" - op: "Reshape" - input: "gradients/add_2_grad/Sum" - input: "gradients/add_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/add_2_grad/Sum_1" - op: "Sum" - input: "gradients/y_grad/SigmoidGrad" - input: "gradients/add_2_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_2_grad/Reshape_1" - op: "Reshape" - input: "gradients/add_2_grad/Sum_1" - input: "gradients/add_2_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/add_2_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/add_2_grad/Reshape" - input: "^gradients/add_2_grad/Reshape_1" - } - node { - name: "gradients/add_2_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/add_2_grad/Reshape" - input: "^gradients/add_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_2_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/add_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/add_2_grad/Reshape_1" - input: "^gradients/add_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_2_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/MatMul_2_grad/MatMul" - op: "MatMul" - input: "gradients/add_2_grad/tuple/control_dependency" - input: "W_final/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "gradients/MatMul_2_grad/MatMul_1" - op: "MatMul" - input: "hidden_layer_2" - input: "gradients/add_2_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "gradients/MatMul_2_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/MatMul_2_grad/MatMul" - input: "^gradients/MatMul_2_grad/MatMul_1" - } - node { - name: "gradients/MatMul_2_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/MatMul_2_grad/MatMul" - input: "^gradients/MatMul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_2_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/MatMul_2_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/MatMul_2_grad/MatMul_1" - input: "^gradients/MatMul_2_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_2_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/hidden_layer_2_grad/ReluGrad" - op: "ReluGrad" - input: "gradients/MatMul_2_grad/tuple/control_dependency" - input: "hidden_layer_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/add_1_grad/Shape" - op: "Shape" - input: "MatMul_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/add_1_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 128 - } - } - } - } - node { - name: "gradients/add_1_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/add_1_grad/Shape" - input: "gradients/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/add_1_grad/Sum" - op: "Sum" - input: "gradients/hidden_layer_2_grad/ReluGrad" - input: "gradients/add_1_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_1_grad/Reshape" - op: "Reshape" - input: "gradients/add_1_grad/Sum" - input: "gradients/add_1_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/add_1_grad/Sum_1" - op: "Sum" - input: "gradients/hidden_layer_2_grad/ReluGrad" - input: "gradients/add_1_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_1_grad/Reshape_1" - op: "Reshape" - input: "gradients/add_1_grad/Sum_1" - input: "gradients/add_1_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/add_1_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/add_1_grad/Reshape" - input: "^gradients/add_1_grad/Reshape_1" - } - node { - name: "gradients/add_1_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/add_1_grad/Reshape" - input: "^gradients/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_1_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/add_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/add_1_grad/Reshape_1" - input: "^gradients/add_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_1_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/MatMul_1_grad/MatMul" - op: "MatMul" - input: "gradients/add_1_grad/tuple/control_dependency" - input: "W_hidden_2/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "gradients/MatMul_1_grad/MatMul_1" - op: "MatMul" - input: "hidden_layer" - input: "gradients/add_1_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "gradients/MatMul_1_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/MatMul_1_grad/MatMul" - input: "^gradients/MatMul_1_grad/MatMul_1" - } - node { - name: "gradients/MatMul_1_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/MatMul_1_grad/MatMul" - input: "^gradients/MatMul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_1_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/MatMul_1_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/MatMul_1_grad/MatMul_1" - input: "^gradients/MatMul_1_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_1_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "gradients/hidden_layer_grad/ReluGrad" - op: "ReluGrad" - input: "gradients/MatMul_1_grad/tuple/control_dependency" - input: "hidden_layer" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Shape" - op: "Shape" - input: "MatMul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 512 - } - } - } - } - node { - name: "gradients/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/add_grad/Shape" - input: "gradients/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Sum" - op: "Sum" - input: "gradients/hidden_layer_grad/ReluGrad" - input: "gradients/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_grad/Reshape" - op: "Reshape" - input: "gradients/add_grad/Sum" - input: "gradients/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Sum_1" - op: "Sum" - input: "gradients/hidden_layer_grad/ReluGrad" - input: "gradients/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_grad/Reshape_1" - op: "Reshape" - input: "gradients/add_grad/Sum_1" - input: "gradients/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/add_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/add_grad/Reshape" - input: "^gradients/add_grad/Reshape_1" - } - node { - name: "gradients/add_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/add_grad/Reshape" - input: "^gradients/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/add_grad/Reshape_1" - input: "^gradients/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - } - node { - name: "gradients/MatMul_grad/MatMul" - op: "MatMul" - input: "gradients/add_grad/tuple/control_dependency" - input: "W_hidden/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 256 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "gradients/MatMul_grad/MatMul_1" - op: "MatMul" - input: "input_concat" - input: "gradients/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "gradients/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/MatMul_grad/MatMul" - input: "^gradients/MatMul_grad/MatMul_1" - } - node { - name: "gradients/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/MatMul_grad/MatMul" - input: "^gradients/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 256 - } - } - } - } - } - } - node { - name: "gradients/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/MatMul_grad/MatMul_1" - input: "^gradients/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "W_hidden/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "W_hidden/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_hidden/Adagrad/Assign" - op: "Assign" - input: "W_hidden/Adagrad" - input: "W_hidden/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_hidden/Adagrad/read" - op: "Identity" - input: "W_hidden/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - } - node { - name: "b_hidden/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 512 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "b_hidden/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 512 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_hidden/Adagrad/Assign" - op: "Assign" - input: "b_hidden/Adagrad" - input: "b_hidden/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_hidden/Adagrad/read" - op: "Identity" - input: "b_hidden/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - } - node { - name: "W_hidden_2/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "W_hidden_2/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_hidden_2/Adagrad/Assign" - op: "Assign" - input: "W_hidden_2/Adagrad" - input: "W_hidden_2/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_hidden_2/Adagrad/read" - op: "Identity" - input: "W_hidden_2/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - } - node { - name: "b_hidden_2/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 128 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "b_hidden_2/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 128 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_hidden_2/Adagrad/Assign" - op: "Assign" - input: "b_hidden_2/Adagrad" - input: "b_hidden_2/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_hidden_2/Adagrad/read" - op: "Identity" - input: "b_hidden_2/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - } - node { - name: "W_final/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "W_final/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "W_final/Adagrad/Assign" - op: "Assign" - input: "W_final/Adagrad" - input: "W_final/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "W_final/Adagrad/read" - op: "Identity" - input: "W_final/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "b_final/Adagrad/Initializer/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "b_final/Adagrad" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 1 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "b_final/Adagrad/Assign" - op: "Assign" - input: "b_final/Adagrad" - input: "b_final/Adagrad/Initializer/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "b_final/Adagrad/read" - op: "Identity" - input: "b_final/Adagrad" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "Adagrad/learning_rate" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.10000000149011612 - } - } - } - } - node { - name: "Adagrad/update_W_hidden/ApplyAdagrad" - op: "ApplyAdagrad" - input: "W_hidden" - input: "W_hidden/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update_b_hidden/ApplyAdagrad" - op: "ApplyAdagrad" - input: "b_hidden" - input: "b_hidden/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update_W_hidden_2/ApplyAdagrad" - op: "ApplyAdagrad" - input: "W_hidden_2" - input: "W_hidden_2/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/MatMul_1_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update_b_hidden_2/ApplyAdagrad" - op: "ApplyAdagrad" - input: "b_hidden_2" - input: "b_hidden_2/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/add_1_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update_W_final/ApplyAdagrad" - op: "ApplyAdagrad" - input: "W_final" - input: "W_final/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/MatMul_2_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update_b_final/ApplyAdagrad" - op: "ApplyAdagrad" - input: "b_final" - input: "b_final/Adagrad" - input: "Adagrad/learning_rate" - input: "gradients/add_2_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "Adagrad/update" - op: "NoOp" - input: "^Adagrad/update_W_hidden/ApplyAdagrad" - input: "^Adagrad/update_b_hidden/ApplyAdagrad" - input: "^Adagrad/update_W_hidden_2/ApplyAdagrad" - input: "^Adagrad/update_b_hidden_2/ApplyAdagrad" - input: "^Adagrad/update_W_final/ApplyAdagrad" - input: "^Adagrad/update_b_final/ApplyAdagrad" - } - node { - name: "Adagrad/value" - op: "Const" - input: "^Adagrad/update" - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "Adagrad" - op: "AssignAdd" - input: "global_step" - input: "Adagrad/value" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "loss_1/tags" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "loss_1" - } - } - } - } - node { - name: "loss_1" - op: "ScalarSummary" - input: "loss_1/tags" - input: "loss" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "accuracy_1/tags" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "accuracy_1" - } - } - } - } - node { - name: "accuracy_1" - op: "ScalarSummary" - input: "accuracy_1/tags" - input: "accuracy" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "Merge/MergeSummary" - op: "MergeSummary" - input: "loss_1" - input: "accuracy_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "Merge_1/MergeSummary" - op: "MergeSummary" - input: "loss_1" - input: "accuracy_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 13 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 13 - } - } - string_val: "W_final" - string_val: "W_final/Adagrad" - string_val: "W_hidden" - string_val: "W_hidden/Adagrad" - string_val: "W_hidden_2" - string_val: "W_hidden_2/Adagrad" - string_val: "b_final" - string_val: "b_final/Adagrad" - string_val: "b_hidden" - string_val: "b_hidden/Adagrad" - string_val: "b_hidden_2" - string_val: "b_hidden_2/Adagrad" - string_val: "global_step" - } - } - } - } - node { - name: "save/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 13 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 13 - } - } - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save/SaveV2" - op: "SaveV2" - input: "save/Const" - input: "save/SaveV2/tensor_names" - input: "save/SaveV2/shape_and_slices" - input: "W_final" - input: "W_final/Adagrad" - input: "W_hidden" - input: "W_hidden/Adagrad" - input: "W_hidden_2" - input: "W_hidden_2/Adagrad" - input: "b_final" - input: "b_final/Adagrad" - input: "b_hidden" - input: "b_hidden/Adagrad" - input: "b_hidden_2" - input: "b_hidden_2/Adagrad" - input: "global_step" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_INT32 - } - } - } - } - node { - name: "save/control_dependency" - op: "Identity" - input: "save/Const" - input: "^save/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save/Const" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_final" - } - } - } - } - node { - name: "save/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2/tensor_names" - input: "save/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign" - op: "Assign" - input: "W_final" - input: "save/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_final/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_1" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_1/tensor_names" - input: "save/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_1" - op: "Assign" - input: "W_final/Adagrad" - input: "save/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden" - } - } - } - } - node { - name: "save/RestoreV2_2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_2/tensor_names" - input: "save/RestoreV2_2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_2" - op: "Assign" - input: "W_hidden" - input: "save/RestoreV2_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_3/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_3/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_3" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_3/tensor_names" - input: "save/RestoreV2_3/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_3" - op: "Assign" - input: "W_hidden/Adagrad" - input: "save/RestoreV2_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_4/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden_2" - } - } - } - } - node { - name: "save/RestoreV2_4/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_4" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_4/tensor_names" - input: "save/RestoreV2_4/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_4" - op: "Assign" - input: "W_hidden_2" - input: "save/RestoreV2_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_5/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden_2/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_5/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_5" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_5/tensor_names" - input: "save/RestoreV2_5/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_5" - op: "Assign" - input: "W_hidden_2/Adagrad" - input: "save/RestoreV2_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_6/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_final" - } - } - } - } - node { - name: "save/RestoreV2_6/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_6" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_6/tensor_names" - input: "save/RestoreV2_6/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_6" - op: "Assign" - input: "b_final" - input: "save/RestoreV2_6" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_7/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_final/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_7/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_7" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_7/tensor_names" - input: "save/RestoreV2_7/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_7" - op: "Assign" - input: "b_final/Adagrad" - input: "save/RestoreV2_7" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_8/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden" - } - } - } - } - node { - name: "save/RestoreV2_8/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_8" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_8/tensor_names" - input: "save/RestoreV2_8/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_8" - op: "Assign" - input: "b_hidden" - input: "save/RestoreV2_8" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_9/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_9/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_9" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_9/tensor_names" - input: "save/RestoreV2_9/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_9" - op: "Assign" - input: "b_hidden/Adagrad" - input: "save/RestoreV2_9" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_10/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden_2" - } - } - } - } - node { - name: "save/RestoreV2_10/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_10" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_10/tensor_names" - input: "save/RestoreV2_10/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_10" - op: "Assign" - input: "b_hidden_2" - input: "save/RestoreV2_10" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_11/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden_2/Adagrad" - } - } - } - } - node { - name: "save/RestoreV2_11/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_11" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_11/tensor_names" - input: "save/RestoreV2_11/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_11" - op: "Assign" - input: "b_hidden_2/Adagrad" - input: "save/RestoreV2_11" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_12/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "global_step" - } - } - } - } - node { - name: "save/RestoreV2_12/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_12" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_12/tensor_names" - input: "save/RestoreV2_12/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_INT32 - } - } - } - } - node { - name: "save/Assign_12" - op: "Assign" - input: "global_step" - input: "save/RestoreV2_12" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/restore_all" - op: "NoOp" - input: "^save/Assign" - input: "^save/Assign_1" - input: "^save/Assign_2" - input: "^save/Assign_3" - input: "^save/Assign_4" - input: "^save/Assign_5" - input: "^save/Assign_6" - input: "^save/Assign_7" - input: "^save/Assign_8" - input: "^save/Assign_9" - input: "^save/Assign_10" - input: "^save/Assign_11" - input: "^save/Assign_12" - } - node { - name: "init" - op: "NoOp" - input: "^W_hidden/Assign" - input: "^b_hidden/Assign" - input: "^W_hidden_2/Assign" - input: "^b_hidden_2/Assign" - input: "^W_final/Assign" - input: "^b_final/Assign" - input: "^global_step/Assign" - input: "^W_hidden/Adagrad/Assign" - input: "^b_hidden/Adagrad/Assign" - input: "^W_hidden_2/Adagrad/Assign" - input: "^b_hidden_2/Adagrad/Assign" - input: "^W_final/Adagrad/Assign" - input: "^b_final/Adagrad/Assign" - } - node { - name: "save_1/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save_1/StringJoin/inputs_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "_temp_5848b591c8704c928f801621ecceb1c5/part" - } - } - } - } - node { - name: "save_1/StringJoin" - op: "StringJoin" - input: "save_1/Const" - input: "save_1/StringJoin/inputs_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "separator" - value { - s: "" - } - } - } - node { - name: "save_1/num_shards" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "save_1/ShardedFilename/shard" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "save_1/ShardedFilename" - op: "ShardedFilename" - input: "save_1/StringJoin" - input: "save_1/ShardedFilename/shard" - input: "save_1/num_shards" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save_1/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 13 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 13 - } - } - string_val: "W_final" - string_val: "W_final/Adagrad" - string_val: "W_hidden" - string_val: "W_hidden/Adagrad" - string_val: "W_hidden_2" - string_val: "W_hidden_2/Adagrad" - string_val: "b_final" - string_val: "b_final/Adagrad" - string_val: "b_hidden" - string_val: "b_hidden/Adagrad" - string_val: "b_hidden_2" - string_val: "b_hidden_2/Adagrad" - string_val: "global_step" - } - } - } - } - node { - name: "save_1/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 13 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 13 - } - } - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save_1/SaveV2" - op: "SaveV2" - input: "save_1/ShardedFilename" - input: "save_1/SaveV2/tensor_names" - input: "save_1/SaveV2/shape_and_slices" - input: "W_final" - input: "W_final/Adagrad" - input: "W_hidden" - input: "W_hidden/Adagrad" - input: "W_hidden_2" - input: "W_hidden_2/Adagrad" - input: "b_final" - input: "b_final/Adagrad" - input: "b_hidden" - input: "b_hidden/Adagrad" - input: "b_hidden_2" - input: "b_hidden_2/Adagrad" - input: "global_step" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_INT32 - } - } - } - } - node { - name: "save_1/control_dependency" - op: "Identity" - input: "save_1/ShardedFilename" - input: "^save_1/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save_1/ShardedFilename" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save_1/MergeV2Checkpoints/checkpoint_prefixes" - op: "Pack" - input: "save_1/ShardedFilename" - input: "^save_1/control_dependency" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "save_1/MergeV2Checkpoints" - op: "MergeV2Checkpoints" - input: "save_1/MergeV2Checkpoints/checkpoint_prefixes" - input: "save_1/Const" - attr { - key: "delete_old_dirs" - value { - b: true - } - } - } - node { - name: "save_1/Identity" - op: "Identity" - input: "save_1/Const" - input: "^save_1/control_dependency" - input: "^save_1/MergeV2Checkpoints" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save_1/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_final" - } - } - } - } - node { - name: "save_1/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2/tensor_names" - input: "save_1/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign" - op: "Assign" - input: "W_final" - input: "save_1/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_final/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_1" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_1/tensor_names" - input: "save_1/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_1" - op: "Assign" - input: "W_final/Adagrad" - input: "save_1/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden" - } - } - } - } - node { - name: "save_1/RestoreV2_2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_2" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_2/tensor_names" - input: "save_1/RestoreV2_2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_2" - op: "Assign" - input: "W_hidden" - input: "save_1/RestoreV2_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_3/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_3/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_3" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_3/tensor_names" - input: "save_1/RestoreV2_3/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_3" - op: "Assign" - input: "W_hidden/Adagrad" - input: "save_1/RestoreV2_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 256 - } - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_4/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden_2" - } - } - } - } - node { - name: "save_1/RestoreV2_4/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_4" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_4/tensor_names" - input: "save_1/RestoreV2_4/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_4" - op: "Assign" - input: "W_hidden_2" - input: "save_1/RestoreV2_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_5/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "W_hidden_2/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_5/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_5" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_5/tensor_names" - input: "save_1/RestoreV2_5/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_5" - op: "Assign" - input: "W_hidden_2/Adagrad" - input: "save_1/RestoreV2_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@W_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_6/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_final" - } - } - } - } - node { - name: "save_1/RestoreV2_6/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_6" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_6/tensor_names" - input: "save_1/RestoreV2_6/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_6" - op: "Assign" - input: "b_final" - input: "save_1/RestoreV2_6" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_7/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_final/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_7/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_7" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_7/tensor_names" - input: "save_1/RestoreV2_7/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_7" - op: "Assign" - input: "b_final/Adagrad" - input: "save_1/RestoreV2_7" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_final" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_8/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden" - } - } - } - } - node { - name: "save_1/RestoreV2_8/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_8" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_8/tensor_names" - input: "save_1/RestoreV2_8/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_8" - op: "Assign" - input: "b_hidden" - input: "save_1/RestoreV2_8" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_9/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_9/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_9" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_9/tensor_names" - input: "save_1/RestoreV2_9/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_9" - op: "Assign" - input: "b_hidden/Adagrad" - input: "save_1/RestoreV2_9" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 512 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_10/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden_2" - } - } - } - } - node { - name: "save_1/RestoreV2_10/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_10" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_10/tensor_names" - input: "save_1/RestoreV2_10/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_10" - op: "Assign" - input: "b_hidden_2" - input: "save_1/RestoreV2_10" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_11/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "b_hidden_2/Adagrad" - } - } - } - } - node { - name: "save_1/RestoreV2_11/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_11" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_11/tensor_names" - input: "save_1/RestoreV2_11/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save_1/Assign_11" - op: "Assign" - input: "b_hidden_2/Adagrad" - input: "save_1/RestoreV2_11" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@b_hidden_2" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 128 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/RestoreV2_12/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "global_step" - } - } - } - } - node { - name: "save_1/RestoreV2_12/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save_1/RestoreV2_12" - op: "RestoreV2" - input: "save_1/Const" - input: "save_1/RestoreV2_12/tensor_names" - input: "save_1/RestoreV2_12/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_INT32 - } - } - } - } - node { - name: "save_1/Assign_12" - op: "Assign" - input: "global_step" - input: "save_1/RestoreV2_12" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@global_step" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save_1/restore_shard" - op: "NoOp" - input: "^save_1/Assign" - input: "^save_1/Assign_1" - input: "^save_1/Assign_2" - input: "^save_1/Assign_3" - input: "^save_1/Assign_4" - input: "^save_1/Assign_5" - input: "^save_1/Assign_6" - input: "^save_1/Assign_7" - input: "^save_1/Assign_8" - input: "^save_1/Assign_9" - input: "^save_1/Assign_10" - input: "^save_1/Assign_11" - input: "^save_1/Assign_12" - } - node { - name: "save_1/restore_all" - op: "NoOp" - input: "^save_1/restore_shard" - } - versions { - producer: 24 - } - } - saver_def { - filename_tensor_name: "save_1/Const:0" - save_tensor_name: "save_1/Identity:0" - restore_op_name: "save_1/restore_all" - max_to_keep: 5 - sharded: true - keep_checkpoint_every_n_hours: 10000.0 - version: V2 - } - collection_def { - key: "summaries" - value { - node_list { - value: "loss_1:0" - value: "accuracy_1:0" - } - } - } - collection_def { - key: "train_op" - value { - node_list { - value: "Adagrad" - } - } - } - collection_def { - key: "trainable_variables" - value { - bytes_list { - value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0" - value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0" - value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0" - value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0" - value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0" - value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0" - } - } - } - collection_def { - key: "variables" - value { - bytes_list { - value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0" - value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0" - value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0" - value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0" - value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0" - value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0" - value: "\n\rglobal_step:0\022\022global_step/Assign\032\022global_step/read:02\033global_step/initial_value:0" - value: "\n\022W_hidden/Adagrad:0\022\027W_hidden/Adagrad/Assign\032\027W_hidden/Adagrad/read:02$W_hidden/Adagrad/Initializer/Const:0" - value: "\n\022b_hidden/Adagrad:0\022\027b_hidden/Adagrad/Assign\032\027b_hidden/Adagrad/read:02$b_hidden/Adagrad/Initializer/Const:0" - value: "\n\024W_hidden_2/Adagrad:0\022\031W_hidden_2/Adagrad/Assign\032\031W_hidden_2/Adagrad/read:02&W_hidden_2/Adagrad/Initializer/Const:0" - value: "\n\024b_hidden_2/Adagrad:0\022\031b_hidden_2/Adagrad/Assign\032\031b_hidden_2/Adagrad/read:02&b_hidden_2/Adagrad/Initializer/Const:0" - value: "\n\021W_final/Adagrad:0\022\026W_final/Adagrad/Assign\032\026W_final/Adagrad/read:02#W_final/Adagrad/Initializer/Const:0" - value: "\n\021b_final/Adagrad:0\022\026b_final/Adagrad/Assign\032\026b_final/Adagrad/read:02#b_final/Adagrad/Initializer/Const:0" - } - } - } - signature_def { - key: "serving_default" - value { - inputs { - key: "input_d" - value { - name: "input_d:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - inputs { - key: "input_u" - value { - name: "input_u:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 128 - } - } - } - } - outputs { - key: "y" - value { - name: "y:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - method_name: "tensorflow/serving/predict" - } - } -} diff --git a/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index 1efd102aef9..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.index Binary files differdeleted file mode 100644 index 56c60dbe529..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/blog/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/dropout/dropout.py b/searchlib/src/test/files/integration/tensorflow/dropout/dropout.py deleted file mode 100644 index 42c15cd2812..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/dropout/dropout.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -# Common imports -import numpy as np -import tensorflow as tf -import datetime - -now = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S") -root_logdir = "tf_logs" -logdir = "{}/run-{}/".format(root_logdir, now) - -n_inputs = 784 -n_outputs = 10 -dropout_rate = 0.5 # == 1 - keep_prob - -X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X") -y = tf.placeholder(tf.int64, shape=(None), name="y") -training = tf.placeholder_with_default(False, shape=(), name='training') - -def leaky_relu_with_small_constant(z, name=None): - return tf.maximum(tf.constant(0.01, shape=[1]) * z, z, name=name) - -X_drop = tf.layers.dropout(X, dropout_rate, training=training, name="xdrop") -output = tf.layers.dense(X_drop, n_outputs, activation=leaky_relu_with_small_constant, name="outputs") - -init = tf.global_variables_initializer() -file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph()) - -with tf.Session() as sess: - init.run() - sess.run(output, feed_dict={training: False, X: np.random.random((1,784))}) - - export_path = "saved" - print('Exporting trained model to ', export_path) - builder = tf.saved_model.builder.SavedModelBuilder(export_path) - signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':output}) - builder.add_meta_graph_and_variables(sess, - [tf.saved_model.tag_constants.SERVING], - signature_def_map={'serving_default':signature}) - builder.save(as_text=True) - -file_writer.close() - - diff --git a/searchlib/src/test/files/integration/tensorflow/dropout/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/dropout/saved/saved_model.pbtxt deleted file mode 100644 index ad431f0460d..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/dropout/saved/saved_model.pbtxt +++ /dev/null @@ -1,2875 +0,0 @@ -saved_model_schema_version: 1 -meta_graphs { - meta_info_def { - stripped_op_list { - op { - name: "Add" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_STRING - } - } - } - } - op { - name: "Assign" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - } - attr { - name: "validate_shape" - type: "bool" - default_value { - b: true - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: true - } - } - allows_uninitialized_input: true - } - op { - name: "BiasAdd" - input_arg { - name: "value" - type_attr: "T" - } - input_arg { - name: "bias" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "data_format" - type: "string" - default_value { - s: "NHWC" - } - allowed_values { - list { - s: "NHWC" - s: "NCHW" - } - } - } - } - op { - name: "Const" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "value" - type: "tensor" - } - attr { - name: "dtype" - type: "type" - } - } - op { - name: "Floor" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "Identity" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "MatMul" - input_arg { - name: "a" - type_attr: "T" - } - input_arg { - name: "b" - type_attr: "T" - } - output_arg { - name: "product" - type_attr: "T" - } - attr { - name: "transpose_a" - type: "bool" - default_value { - b: false - } - } - attr { - name: "transpose_b" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Maximum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Merge" - input_arg { - name: "inputs" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - output_arg { - name: "value_index" - type: DT_INT32 - } - attr { - name: "T" - type: "type" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - } - op { - name: "MergeV2Checkpoints" - input_arg { - name: "checkpoint_prefixes" - type: DT_STRING - } - input_arg { - name: "destination_prefix" - type: DT_STRING - } - attr { - name: "delete_old_dirs" - type: "bool" - default_value { - b: true - } - } - is_stateful: true - } - op { - name: "Mul" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "NoOp" - } - op { - name: "Pack" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - attr { - name: "axis" - type: "int" - default_value { - i: 0 - } - } - } - op { - name: "Placeholder" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - default_value { - shape { - unknown_rank: true - } - } - } - } - op { - name: "PlaceholderWithDefault" - input_arg { - name: "input" - type_attr: "dtype" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - } - } - op { - name: "RandomUniform" - input_arg { - name: "shape" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "seed" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "seed2" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "dtype" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - is_stateful: true - } - op { - name: "RealDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "RestoreV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - output_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "SaveV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - input_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "Shape" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "out_type" - } - attr { - name: "T" - type: "type" - } - attr { - name: "out_type" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "ShardedFilename" - input_arg { - name: "basename" - type: DT_STRING - } - input_arg { - name: "shard" - type: DT_INT32 - } - input_arg { - name: "num_shards" - type: DT_INT32 - } - output_arg { - name: "filename" - type: DT_STRING - } - } - op { - name: "StringJoin" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "output" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "separator" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Sub" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Switch" - input_arg { - name: "data" - type_attr: "T" - } - input_arg { - name: "pred" - type: DT_BOOL - } - output_arg { - name: "output_false" - type_attr: "T" - } - output_arg { - name: "output_true" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "VariableV2" - output_arg { - name: "ref" - type_attr: "dtype" - is_ref: true - } - attr { - name: "shape" - type: "shape" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "container" - type: "string" - default_value { - s: "" - } - } - attr { - name: "shared_name" - type: "string" - default_value { - s: "" - } - } - is_stateful: true - } - } - tags: "serve" - tensorflow_version: "1.4.1" - tensorflow_git_version: "v1.4.0-19-ga52c8d9" - } - graph_def { - node { - name: "X" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - node { - name: "y" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT64 - } - } - attr { - key: "shape" - value { - shape { - unknown_rank: true - } - } - } - } - node { - name: "training/input" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_BOOL - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_BOOL - tensor_shape { - } - bool_val: false - } - } - } - } - node { - name: "training" - op: "PlaceholderWithDefault" - input: "training/input" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_BOOL - } - } - attr { - key: "shape" - value { - shape { - } - } - } - } - node { - name: "xdrop/cond/Switch" - op: "Switch" - input: "training" - input: "training" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - shape { - } - } - } - } - } - node { - name: "xdrop/cond/switch_t" - op: "Identity" - input: "xdrop/cond/Switch:1" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "xdrop/cond/switch_f" - op: "Identity" - input: "xdrop/cond/Switch" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "xdrop/cond/pred_id" - op: "Identity" - input: "training" - attr { - key: "T" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "xdrop/cond/dropout/keep_prob" - op: "Const" - input: "^xdrop/cond/switch_t" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.5 - } - } - } - } - node { - name: "xdrop/cond/dropout/Shape/Switch" - op: "Switch" - input: "X" - input: "xdrop/cond/pred_id" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@X" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/Shape" - op: "Shape" - input: "xdrop/cond/dropout/Shape/Switch:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform/min" - op: "Const" - input: "^xdrop/cond/switch_t" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform/max" - op: "Const" - input: "^xdrop/cond/switch_t" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform/RandomUniform" - op: "RandomUniform" - input: "xdrop/cond/dropout/Shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform/sub" - op: "Sub" - input: "xdrop/cond/dropout/random_uniform/max" - input: "xdrop/cond/dropout/random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform/mul" - op: "Mul" - input: "xdrop/cond/dropout/random_uniform/RandomUniform" - input: "xdrop/cond/dropout/random_uniform/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/random_uniform" - op: "Add" - input: "xdrop/cond/dropout/random_uniform/mul" - input: "xdrop/cond/dropout/random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/add" - op: "Add" - input: "xdrop/cond/dropout/keep_prob" - input: "xdrop/cond/dropout/random_uniform" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/Floor" - op: "Floor" - input: "xdrop/cond/dropout/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/div" - op: "RealDiv" - input: "xdrop/cond/dropout/Shape/Switch:1" - input: "xdrop/cond/dropout/keep_prob" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/dropout/mul" - op: "Mul" - input: "xdrop/cond/dropout/div" - input: "xdrop/cond/dropout/Floor" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/Identity/Switch" - op: "Switch" - input: "X" - input: "xdrop/cond/pred_id" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@X" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/Identity" - op: "Identity" - input: "xdrop/cond/Identity/Switch" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "xdrop/cond/Merge" - op: "Merge" - input: "xdrop/cond/Identity" - input: "xdrop/cond/dropout/mul" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - shape { - } - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/shape" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\020\003\000\000\n\000\000\000" - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/min" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: -0.08692913502454758 - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/max" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.08692913502454758 - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/RandomUniform" - op: "RandomUniform" - input: "outputs/kernel/Initializer/random_uniform/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/sub" - op: "Sub" - input: "outputs/kernel/Initializer/random_uniform/max" - input: "outputs/kernel/Initializer/random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform/mul" - op: "Mul" - input: "outputs/kernel/Initializer/random_uniform/RandomUniform" - input: "outputs/kernel/Initializer/random_uniform/sub" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/kernel/Initializer/random_uniform" - op: "Add" - input: "outputs/kernel/Initializer/random_uniform/mul" - input: "outputs/kernel/Initializer/random_uniform/min" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/kernel" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "outputs/kernel/Assign" - op: "Assign" - input: "outputs/kernel" - input: "outputs/kernel/Initializer/random_uniform" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "outputs/kernel/read" - op: "Identity" - input: "outputs/kernel" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/bias/Initializer/zeros" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "outputs/bias" - op: "VariableV2" - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "outputs/bias/Assign" - op: "Assign" - input: "outputs/bias" - input: "outputs/bias/Initializer/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "outputs/bias/read" - op: "Identity" - input: "outputs/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/MatMul" - op: "MatMul" - input: "xdrop/cond/Merge" - input: "outputs/kernel/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "outputs/BiasAdd" - op: "BiasAdd" - input: "outputs/MatMul" - input: "outputs/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "data_format" - value { - s: "NHWC" - } - } - } - node { - name: "outputs/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 1 - } - } - float_val: 0.009999999776482582 - } - } - } - } - node { - name: "outputs/mul" - op: "Mul" - input: "outputs/Const" - input: "outputs/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "outputs/Maximum" - op: "Maximum" - input: "outputs/mul" - input: "outputs/BiasAdd" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "init" - op: "NoOp" - input: "^outputs/kernel/Assign" - input: "^outputs/bias/Assign" - } - node { - name: "save/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save/StringJoin/inputs_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "_temp_6962088d414d471890a43f51e0ba56f9/part" - } - } - } - } - node { - name: "save/StringJoin" - op: "StringJoin" - input: "save/Const" - input: "save/StringJoin/inputs_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "separator" - value { - s: "" - } - } - } - node { - name: "save/num_shards" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "save/ShardedFilename/shard" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "save/ShardedFilename" - op: "ShardedFilename" - input: "save/StringJoin" - input: "save/ShardedFilename/shard" - input: "save/num_shards" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 2 - } - } - string_val: "outputs/bias" - string_val: "outputs/kernel" - } - } - } - } - node { - name: "save/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 2 - } - } - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save/SaveV2" - op: "SaveV2" - input: "save/ShardedFilename" - input: "save/SaveV2/tensor_names" - input: "save/SaveV2/shape_and_slices" - input: "outputs/bias" - input: "outputs/kernel" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - } - } - } - } - node { - name: "save/control_dependency" - op: "Identity" - input: "save/ShardedFilename" - input: "^save/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save/ShardedFilename" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/MergeV2Checkpoints/checkpoint_prefixes" - op: "Pack" - input: "save/ShardedFilename" - input: "^save/control_dependency" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "save/MergeV2Checkpoints" - op: "MergeV2Checkpoints" - input: "save/MergeV2Checkpoints/checkpoint_prefixes" - input: "save/Const" - attr { - key: "delete_old_dirs" - value { - b: true - } - } - } - node { - name: "save/Identity" - op: "Identity" - input: "save/Const" - input: "^save/control_dependency" - input: "^save/MergeV2Checkpoints" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "outputs/bias" - } - } - } - } - node { - name: "save/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2/tensor_names" - input: "save/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign" - op: "Assign" - input: "outputs/bias" - input: "save/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "outputs/kernel" - } - } - } - } - node { - name: "save/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_1" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_1/tensor_names" - input: "save/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_1" - op: "Assign" - input: "outputs/kernel" - input: "save/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@outputs/kernel" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/restore_shard" - op: "NoOp" - input: "^save/Assign" - input: "^save/Assign_1" - } - node { - name: "save/restore_all" - op: "NoOp" - input: "^save/restore_shard" - } - versions { - producer: 24 - } - } - saver_def { - filename_tensor_name: "save/Const:0" - save_tensor_name: "save/Identity:0" - restore_op_name: "save/restore_all" - max_to_keep: 5 - sharded: true - keep_checkpoint_every_n_hours: 10000.0 - version: V2 - } - collection_def { - key: "cond_context" - value { - bytes_list { - value: "\n\024xdrop/cond/cond_text\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_t:0 \001*\241\004\n\003X:0\n\032xdrop/cond/dropout/Floor:0\n!xdrop/cond/dropout/Shape/Switch:1\n\032xdrop/cond/dropout/Shape:0\n\030xdrop/cond/dropout/add:0\n\030xdrop/cond/dropout/div:0\n\036xdrop/cond/dropout/keep_prob:0\n\030xdrop/cond/dropout/mul:0\n1xdrop/cond/dropout/random_uniform/RandomUniform:0\n\'xdrop/cond/dropout/random_uniform/max:0\n\'xdrop/cond/dropout/random_uniform/min:0\n\'xdrop/cond/dropout/random_uniform/mul:0\n\'xdrop/cond/dropout/random_uniform/sub:0\n#xdrop/cond/dropout/random_uniform:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_t:0\022(\n\003X:0\022!xdrop/cond/dropout/Shape/Switch:1" - value: "\n\026xdrop/cond/cond_text_1\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_f:0*\214\001\n\003X:0\n\034xdrop/cond/Identity/Switch:0\n\025xdrop/cond/Identity:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_f:0\022#\n\003X:0\022\034xdrop/cond/Identity/Switch:0" - } - } - } - collection_def { - key: "trainable_variables" - value { - bytes_list { - value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0" - value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0" - } - } - } - collection_def { - key: "variables" - value { - bytes_list { - value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0" - value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0" - } - } - } - signature_def { - key: "serving_default" - value { - inputs { - key: "x" - value { - name: "X:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - outputs { - key: "y" - value { - name: "outputs/Maximum:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - method_name: "tensorflow/serving/predict" - } - } -} diff --git a/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index 000c9b3a7b5..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.index Binary files differdeleted file mode 100644 index 9492ef4bde2..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/dropout/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/mnist/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/mnist/saved/saved_model.pbtxt deleted file mode 100644 index eb926836576..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist/saved/saved_model.pbtxt +++ /dev/null @@ -1,7982 +0,0 @@ -saved_model_schema_version: 1 -meta_graphs { - meta_info_def { - stripped_op_list { - op { - name: "Add" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_STRING - } - } - } - } - op { - name: "AddN" - input_arg { - name: "inputs" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "sum" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - type: DT_VARIANT - } - } - } - is_aggregate: true - is_commutative: true - } - op { - name: "ApplyGradientDescent" - input_arg { - name: "var" - type_attr: "T" - is_ref: true - } - input_arg { - name: "alpha" - type_attr: "T" - } - input_arg { - name: "delta" - type_attr: "T" - } - output_arg { - name: "out" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "Assign" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - } - attr { - name: "validate_shape" - type: "bool" - default_value { - b: true - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: true - } - } - allows_uninitialized_input: true - } - op { - name: "BroadcastGradientArgs" - input_arg { - name: "s0" - type_attr: "T" - } - input_arg { - name: "s1" - type_attr: "T" - } - output_arg { - name: "r0" - type_attr: "T" - } - output_arg { - name: "r1" - type_attr: "T" - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Cast" - input_arg { - name: "x" - type_attr: "SrcT" - } - output_arg { - name: "y" - type_attr: "DstT" - } - attr { - name: "SrcT" - type: "type" - } - attr { - name: "DstT" - type: "type" - } - } - op { - name: "Const" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "value" - type: "tensor" - } - attr { - name: "dtype" - type: "type" - } - } - op { - name: "ExpandDims" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "dim" - type_attr: "Tdim" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tdim" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Fill" - input_arg { - name: "dims" - type: DT_INT32 - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "FloorDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "GreaterEqual" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Identity" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "InTopKV2" - input_arg { - name: "predictions" - type: DT_FLOAT - } - input_arg { - name: "targets" - type_attr: "T" - } - input_arg { - name: "k" - type_attr: "T" - } - output_arg { - name: "precision" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MatMul" - input_arg { - name: "a" - type_attr: "T" - } - input_arg { - name: "b" - type_attr: "T" - } - output_arg { - name: "product" - type_attr: "T" - } - attr { - name: "transpose_a" - type: "bool" - default_value { - b: false - } - } - attr { - name: "transpose_b" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Maximum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Mean" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MergeV2Checkpoints" - input_arg { - name: "checkpoint_prefixes" - type: DT_STRING - } - input_arg { - name: "destination_prefix" - type: DT_STRING - } - attr { - name: "delete_old_dirs" - type: "bool" - default_value { - b: true - } - } - is_stateful: true - } - op { - name: "Mul" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "NoOp" - } - op { - name: "Pack" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - attr { - name: "axis" - type: "int" - default_value { - i: 0 - } - } - } - op { - name: "Placeholder" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - default_value { - shape { - unknown_rank: true - } - } - } - } - op { - name: "PreventGradient" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "message" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Prod" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RealDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Reshape" - input_arg { - name: "tensor" - type_attr: "T" - } - input_arg { - name: "shape" - type_attr: "Tshape" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tshape" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RestoreV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - output_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "SaveV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - input_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "ScalarSummary" - input_arg { - name: "tags" - type: DT_STRING - } - input_arg { - name: "values" - type_attr: "T" - } - output_arg { - name: "summary" - type: DT_STRING - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - type: DT_UINT8 - type: DT_INT16 - type: DT_INT8 - type: DT_UINT16 - type: DT_HALF - } - } - } - } - op { - name: "Select" - input_arg { - name: "condition" - type: DT_BOOL - } - input_arg { - name: "t" - type_attr: "T" - } - input_arg { - name: "e" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "Selu" - input_arg { - name: "features" - type_attr: "T" - } - output_arg { - name: "activations" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "SeluGrad" - input_arg { - name: "gradients" - type_attr: "T" - } - input_arg { - name: "outputs" - type_attr: "T" - } - output_arg { - name: "backprops" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "Shape" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "out_type" - } - attr { - name: "T" - type: "type" - } - attr { - name: "out_type" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "ShardedFilename" - input_arg { - name: "basename" - type: DT_STRING - } - input_arg { - name: "shard" - type: DT_INT32 - } - input_arg { - name: "num_shards" - type: DT_INT32 - } - output_arg { - name: "filename" - type: DT_STRING - } - } - op { - name: "SparseSoftmaxCrossEntropyWithLogits" - input_arg { - name: "features" - type_attr: "T" - } - input_arg { - name: "labels" - type_attr: "Tlabels" - } - output_arg { - name: "loss" - type_attr: "T" - } - output_arg { - name: "backprop" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "Tlabels" - type: "type" - default_value { - type: DT_INT64 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "StringJoin" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "output" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "separator" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Sum" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Tile" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "multiples" - type_attr: "Tmultiples" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tmultiples" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "TruncatedNormal" - input_arg { - name: "shape" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "seed" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "seed2" - type: "int" - default_value { - i: 0 - } - } - attr { - name: "dtype" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - is_stateful: true - } - op { - name: "VariableV2" - output_arg { - name: "ref" - type_attr: "dtype" - is_ref: true - } - attr { - name: "shape" - type: "shape" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "container" - type: "string" - default_value { - s: "" - } - } - attr { - name: "shared_name" - type: "string" - default_value { - s: "" - } - } - is_stateful: true - } - op { - name: "ZerosLike" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - } - tags: "serve" - tensorflow_version: "1.4.1" - tensorflow_git_version: "v1.4.0-19-ga52c8d9" - } - graph_def { - node { - name: "input" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - node { - name: "y" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT64 - } - } - attr { - key: "shape" - value { - shape { - unknown_rank: true - } - } - } - } - node { - name: "dnn/hidden1/truncated_normal/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "\020\003\000\000,\001\000\000" - } - } - } - } - node { - name: "dnn/hidden1/truncated_normal/mean" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/hidden1/truncated_normal/stddev" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0714285746216774 - } - } - } - } - node { - name: "dnn/hidden1/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "dnn/hidden1/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "dnn/hidden1/truncated_normal/mul" - op: "Mul" - input: "dnn/hidden1/truncated_normal/TruncatedNormal" - input: "dnn/hidden1/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/truncated_normal" - op: "Add" - input: "dnn/hidden1/truncated_normal/mul" - input: "dnn/hidden1/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/weights" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden1/weights/Assign" - op: "Assign" - input: "dnn/hidden1/weights" - input: "dnn/hidden1/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden1/weights/read" - op: "Identity" - input: "dnn/hidden1/weights" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 300 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/hidden1/bias" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden1/bias/Assign" - op: "Assign" - input: "dnn/hidden1/bias" - input: "dnn/hidden1/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden1/bias/read" - op: "Identity" - input: "dnn/hidden1/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/MatMul" - op: "MatMul" - input: "input" - input: "dnn/hidden1/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/hidden1/add" - op: "Add" - input: "dnn/hidden1/MatMul" - input: "dnn/hidden1/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/mul/x" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.009999999776482582 - } - } - } - } - node { - name: "dnn/hidden1/mul" - op: "Mul" - input: "dnn/hidden1/mul/x" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden1/Maximum" - op: "Maximum" - input: "dnn/hidden1/mul" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "dnn/hidden2/truncated_normal/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: ",\001\000\000d\000\000\000" - } - } - } - } - node { - name: "dnn/hidden2/truncated_normal/mean" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/hidden2/truncated_normal/stddev" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.1154700517654419 - } - } - } - } - node { - name: "dnn/hidden2/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "dnn/hidden2/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "dnn/hidden2/truncated_normal/mul" - op: "Mul" - input: "dnn/hidden2/truncated_normal/TruncatedNormal" - input: "dnn/hidden2/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/truncated_normal" - op: "Add" - input: "dnn/hidden2/truncated_normal/mul" - input: "dnn/hidden2/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/weights" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden2/weights/Assign" - op: "Assign" - input: "dnn/hidden2/weights" - input: "dnn/hidden2/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden2/weights/read" - op: "Identity" - input: "dnn/hidden2/weights" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 100 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/hidden2/bias" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden2/bias/Assign" - op: "Assign" - input: "dnn/hidden2/bias" - input: "dnn/hidden2/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden2/bias/read" - op: "Identity" - input: "dnn/hidden2/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/MatMul" - op: "MatMul" - input: "dnn/hidden1/Maximum" - input: "dnn/hidden2/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/hidden2/add" - op: "Add" - input: "dnn/hidden2/MatMul" - input: "dnn/hidden2/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/hidden2/Selu" - op: "Selu" - input: "dnn/hidden2/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "dnn/outputs/truncated_normal/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 2 - } - } - tensor_content: "d\000\000\000\n\000\000\000" - } - } - } - } - node { - name: "dnn/outputs/truncated_normal/mean" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/outputs/truncated_normal/stddev" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.20000000298023224 - } - } - } - } - node { - name: "dnn/outputs/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "dnn/outputs/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "dnn/outputs/truncated_normal/mul" - op: "Mul" - input: "dnn/outputs/truncated_normal/TruncatedNormal" - input: "dnn/outputs/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/truncated_normal" - op: "Add" - input: "dnn/outputs/truncated_normal/mul" - input: "dnn/outputs/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/weights" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/outputs/weights/Assign" - op: "Assign" - input: "dnn/outputs/weights" - input: "dnn/outputs/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/outputs/weights/read" - op: "Identity" - input: "dnn/outputs/weights" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/outputs/bias" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/outputs/bias/Assign" - op: "Assign" - input: "dnn/outputs/bias" - input: "dnn/outputs/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/outputs/bias/read" - op: "Identity" - input: "dnn/outputs/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/MatMul" - op: "MatMul" - input: "dnn/hidden2/Selu" - input: "dnn/outputs/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/outputs/add" - op: "Add" - input: "dnn/outputs/MatMul" - input: "dnn/outputs/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape" - op: "Shape" - input: "y" - attr { - key: "T" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - op: "SparseSoftmaxCrossEntropyWithLogits" - input: "dnn/outputs/add" - input: "y" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tlabels" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "loss/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "loss/loss" - op: "Mean" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - input: "loss/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "train/gradients/Fill" - op: "Fill" - input: "train/gradients/Shape" - input: "train/gradients/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Reshape" - op: "Reshape" - input: "train/gradients/Fill" - input: "train/gradients/loss/loss_grad/Reshape/shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape" - op: "Shape" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/loss/loss_grad/Tile" - op: "Tile" - input: "train/gradients/loss/loss_grad/Reshape" - input: "train/gradients/loss/loss_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape_1" - op: "Shape" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/loss/loss_grad/Shape_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Prod" - op: "Prod" - input: "train/gradients/loss/loss_grad/Shape_1" - input: "train/gradients/loss/loss_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/loss/loss_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Prod_1" - op: "Prod" - input: "train/gradients/loss/loss_grad/Shape_2" - input: "train/gradients/loss/loss_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/loss/loss_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Maximum" - op: "Maximum" - input: "train/gradients/loss/loss_grad/Prod_1" - input: "train/gradients/loss/loss_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/floordiv" - op: "FloorDiv" - input: "train/gradients/loss/loss_grad/Prod" - input: "train/gradients/loss/loss_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/loss/loss_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/Cast" - op: "Cast" - input: "train/gradients/loss/loss_grad/floordiv" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/loss/loss_grad/truediv" - op: "RealDiv" - input: "train/gradients/loss/loss_grad/Tile" - input: "train/gradients/loss/loss_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/zeros_like" - op: "ZerosLike" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient" - op: "PreventGradient" - input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "message" - value { - s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()" - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: -1 - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims" - op: "ExpandDims" - input: "train/gradients/loss/loss_grad/truediv" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - op: "Mul" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Shape" - op: "Shape" - input: "dnn/outputs/MatMul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/outputs/add_grad/Shape" - input: "train/gradients/dnn/outputs/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Sum" - op: "Sum" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/outputs/add_grad/Sum" - input: "train/gradients/dnn/outputs/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul" - input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/outputs/add_grad/Sum_1" - input: "train/gradients/dnn/outputs/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/outputs/add_grad/Reshape" - input: "^train/gradients/dnn/outputs/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/outputs/add_grad/Reshape" - input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/outputs/add_grad/Reshape_1" - input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency" - input: "dnn/outputs/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - op: "MatMul" - input: "dnn/hidden2/Selu" - input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul" - input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/outputs/MatMul_grad/MatMul" - input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad" - op: "SeluGrad" - input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency" - input: "dnn/hidden2/Selu" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Shape" - op: "Shape" - input: "dnn/hidden2/MatMul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 100 - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden2/add_grad/Shape" - input: "train/gradients/dnn/hidden2/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad" - input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden2/add_grad/Sum" - input: "train/gradients/dnn/hidden2/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad" - input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden2/add_grad/Sum_1" - input: "train/gradients/dnn/hidden2/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden2/add_grad/Reshape" - input: "^train/gradients/dnn/hidden2/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden2/add_grad/Reshape" - input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden2/add_grad/Reshape_1" - input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency" - input: "dnn/hidden2/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - op: "MatMul" - input: "dnn/hidden1/Maximum" - input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - op: "Shape" - input: "dnn/hidden1/mul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - op: "Shape" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2" - op: "Shape" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.0 - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - op: "Fill" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - op: "GreaterEqual" - input: "dnn/hidden1/mul" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Select" - op: "Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1" - op: "Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual" - input: "train/gradients/dnn/hidden1/Maximum_grad/zeros" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Select" - input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1" - input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1" - input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape" - input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape" - input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - op: "Shape" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden1/mul_grad/Shape" - input: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/mul" - op: "Mul" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - input: "dnn/hidden1/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden1/mul_grad/mul" - input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden1/mul_grad/Sum" - input: "train/gradients/dnn/hidden1/mul_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/mul_1" - op: "Mul" - input: "dnn/hidden1/mul/x" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden1/mul_grad/mul_1" - input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden1/mul_grad/Sum_1" - input: "train/gradients/dnn/hidden1/mul_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/mul_grad/Reshape" - input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/mul_grad/Reshape" - input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1" - input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/AddN" - op: "AddN" - input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1" - input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Shape" - op: "Shape" - input: "dnn/hidden1/MatMul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 300 - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden1/add_grad/Shape" - input: "train/gradients/dnn/hidden1/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Sum" - op: "Sum" - input: "train/gradients/AddN" - input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden1/add_grad/Sum" - input: "train/gradients/dnn/hidden1/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/AddN" - input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden1/add_grad/Sum_1" - input: "train/gradients/dnn/hidden1/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/add_grad/Reshape" - input: "^train/gradients/dnn/hidden1/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/add_grad/Reshape" - input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/add_grad/Reshape_1" - input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency" - input: "dnn/hidden1/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - op: "MatMul" - input: "input" - input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - } - node { - name: "train/GradientDescent/learning_rate" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.009999999776482582 - } - } - } - } - node { - name: "train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden1/weights" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden1/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden2/weights" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden2/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/outputs/weights" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/outputs/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent" - op: "NoOp" - input: "^train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent" - } - node { - name: "eval/in_top_k/InTopKV2/k" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT64 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT64 - tensor_shape { - } - int64_val: 1 - } - } - } - } - node { - name: "eval/in_top_k/InTopKV2" - op: "InTopKV2" - input: "dnn/outputs/add" - input: "y" - input: "eval/in_top_k/InTopKV2/k" - attr { - key: "T" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "eval/Cast" - op: "Cast" - input: "eval/in_top_k/InTopKV2" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "eval/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "eval/Mean" - op: "Mean" - input: "eval/Cast" - input: "eval/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "init" - op: "NoOp" - input: "^dnn/hidden1/weights/Assign" - input: "^dnn/hidden1/bias/Assign" - input: "^dnn/hidden2/weights/Assign" - input: "^dnn/hidden2/bias/Assign" - input: "^dnn/outputs/weights/Assign" - input: "^dnn/outputs/bias/Assign" - } - node { - name: "Accuracy/tags" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "Accuracy" - } - } - } - } - node { - name: "Accuracy" - op: "ScalarSummary" - input: "Accuracy/tags" - input: "eval/Mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save/StringJoin/inputs_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "_temp_de3cfc5e8e7e4734ae221577e8fd36a2/part" - } - } - } - } - node { - name: "save/StringJoin" - op: "StringJoin" - input: "save/Const" - input: "save/StringJoin/inputs_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "separator" - value { - s: "" - } - } - } - node { - name: "save/num_shards" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "save/ShardedFilename/shard" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "save/ShardedFilename" - op: "ShardedFilename" - input: "save/StringJoin" - input: "save/ShardedFilename/shard" - input: "save/num_shards" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 6 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 6 - } - } - string_val: "dnn/hidden1/bias" - string_val: "dnn/hidden1/weights" - string_val: "dnn/hidden2/bias" - string_val: "dnn/hidden2/weights" - string_val: "dnn/outputs/bias" - string_val: "dnn/outputs/weights" - } - } - } - } - node { - name: "save/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 6 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 6 - } - } - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save/SaveV2" - op: "SaveV2" - input: "save/ShardedFilename" - input: "save/SaveV2/tensor_names" - input: "save/SaveV2/shape_and_slices" - input: "dnn/hidden1/bias" - input: "dnn/hidden1/weights" - input: "dnn/hidden2/bias" - input: "dnn/hidden2/weights" - input: "dnn/outputs/bias" - input: "dnn/outputs/weights" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - type: DT_FLOAT - } - } - } - } - node { - name: "save/control_dependency" - op: "Identity" - input: "save/ShardedFilename" - input: "^save/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save/ShardedFilename" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/MergeV2Checkpoints/checkpoint_prefixes" - op: "Pack" - input: "save/ShardedFilename" - input: "^save/control_dependency" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "save/MergeV2Checkpoints" - op: "MergeV2Checkpoints" - input: "save/MergeV2Checkpoints/checkpoint_prefixes" - input: "save/Const" - attr { - key: "delete_old_dirs" - value { - b: true - } - } - } - node { - name: "save/Identity" - op: "Identity" - input: "save/Const" - input: "^save/control_dependency" - input: "^save/MergeV2Checkpoints" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/hidden1/bias" - } - } - } - } - node { - name: "save/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2/tensor_names" - input: "save/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign" - op: "Assign" - input: "dnn/hidden1/bias" - input: "save/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/hidden1/weights" - } - } - } - } - node { - name: "save/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_1" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_1/tensor_names" - input: "save/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_1" - op: "Assign" - input: "dnn/hidden1/weights" - input: "save/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden1/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 300 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/hidden2/bias" - } - } - } - } - node { - name: "save/RestoreV2_2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_2/tensor_names" - input: "save/RestoreV2_2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_2" - op: "Assign" - input: "dnn/hidden2/bias" - input: "save/RestoreV2_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_3/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/hidden2/weights" - } - } - } - } - node { - name: "save/RestoreV2_3/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_3" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_3/tensor_names" - input: "save/RestoreV2_3/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_3" - op: "Assign" - input: "dnn/hidden2/weights" - input: "save/RestoreV2_3" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden2/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 300 - } - dim { - size: 100 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_4/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/outputs/bias" - } - } - } - } - node { - name: "save/RestoreV2_4/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_4" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_4/tensor_names" - input: "save/RestoreV2_4/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_4" - op: "Assign" - input: "dnn/outputs/bias" - input: "save/RestoreV2_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_5/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "dnn/outputs/weights" - } - } - } - } - node { - name: "save/RestoreV2_5/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_5" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_5/tensor_names" - input: "save/RestoreV2_5/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_5" - op: "Assign" - input: "dnn/outputs/weights" - input: "save/RestoreV2_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/outputs/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/restore_shard" - op: "NoOp" - input: "^save/Assign" - input: "^save/Assign_1" - input: "^save/Assign_2" - input: "^save/Assign_3" - input: "^save/Assign_4" - input: "^save/Assign_5" - } - node { - name: "save/restore_all" - op: "NoOp" - input: "^save/restore_shard" - } - versions { - producer: 24 - } - } - saver_def { - filename_tensor_name: "save/Const:0" - save_tensor_name: "save/Identity:0" - restore_op_name: "save/restore_all" - max_to_keep: 5 - sharded: true - keep_checkpoint_every_n_hours: 10000.0 - version: V2 - } - collection_def { - key: "summaries" - value { - node_list { - value: "Accuracy:0" - } - } - } - collection_def { - key: "train_op" - value { - node_list { - value: "train/GradientDescent" - } - } - } - collection_def { - key: "trainable_variables" - value { - bytes_list { - value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0" - value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0" - value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0" - value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0" - value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0" - value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0" - } - } - } - collection_def { - key: "variables" - value { - bytes_list { - value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0" - value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0" - value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0" - value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0" - value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0" - value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0" - } - } - } - signature_def { - key: "serving_default" - value { - inputs { - key: "x" - value { - name: "input:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - outputs { - key: "y" - value { - name: "dnn/outputs/add:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - method_name: "tensorflow/serving/predict" - } - } -} diff --git a/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index a7ca01888c7..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.index Binary files differdeleted file mode 100644 index 7989c109a3a..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/mnist/simple_mnist.py b/searchlib/src/test/files/integration/tensorflow/mnist/simple_mnist.py deleted file mode 100644 index 86a17e81f8f..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist/simple_mnist.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -# Common imports -import numpy as np -import tensorflow as tf - -from tensorflow.examples.tutorials.mnist import input_data -from datetime import datetime - -now = datetime.utcnow().strftime("%Y%m%d%H%M%S") -root_logdir = "tf_logs" -logdir = "{}/run-{}/".format(root_logdir, now) - -mnist = input_data.read_data_sets("/tmp/data/") -X_train = mnist.train.images -X_test = mnist.test.images -y_train = mnist.train.labels.astype("int") -y_test = mnist.test.labels.astype("int") - -n_inputs = 28*28 # MNIST -n_hidden1 = 300 -n_hidden2 = 100 -n_hidden3 = 40 -n_outputs = 10 - -learning_rate = 0.01 -n_epochs = 20 -batch_size = 50 - -input = tf.placeholder(tf.float32, shape=(None, n_inputs), name="input") -y = tf.placeholder(tf.int64, shape=(None), name="y") - - -def neuron_layer(X, n_neurons, name, activation=None): - with tf.name_scope(name): - n_inputs = int(X.get_shape()[1]) - stddev = 2 / np.sqrt(n_inputs) - init = tf.truncated_normal((n_inputs, n_neurons), stddev=stddev) - W = tf.Variable(init, name="weights") - b = tf.Variable(tf.zeros([n_neurons]), name="bias") - Z = tf.matmul(X, W) + b - if activation is not None: - return activation(Z) - else: - return Z - - -def leaky_relu(z, name=None): - return tf.maximum(0.01 * z, z, name=name) - - -with tf.name_scope("dnn"): - hidden1 = neuron_layer(input, n_hidden1, name="hidden1", activation=leaky_relu) - hidden2 = neuron_layer(hidden1, n_hidden2, name="hidden2", activation=tf.nn.selu) - logits = neuron_layer(hidden2, n_outputs, name="outputs") #, activation=tf.nn.sigmoid) - -with tf.name_scope("loss"): - xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits) - loss = tf.reduce_mean(xentropy, name="loss") - -with tf.name_scope("train"): - optimizer = tf.train.GradientDescentOptimizer(learning_rate) - training_op = optimizer.minimize(loss) - -with tf.name_scope("eval"): - correct = tf.nn.in_top_k(logits, y, 1) - accuracy = tf.reduce_mean(tf.cast(correct, tf.float32)) - -init = tf.global_variables_initializer() -accuracy_summary = tf.summary.scalar('Accuracy', accuracy) -file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph()) - -with tf.Session() as sess: - init.run() - for epoch in range(n_epochs): - for iteration in range(mnist.train.num_examples // batch_size): - X_batch, y_batch = mnist.train.next_batch(batch_size) - sess.run(training_op, feed_dict={input: X_batch, y: y_batch}) - acc_train = accuracy.eval(feed_dict={input: X_batch, y: y_batch}) - acc_val = accuracy.eval(feed_dict={input: mnist.validation.images, - y: mnist.validation.labels}) - print(epoch, "Train accuracy:", acc_train, "Val accuracy:", acc_val) - - # Save summary for tensorboard - summary_str = accuracy_summary.eval(feed_dict={input: mnist.validation.images, - y: mnist.validation.labels}) - file_writer.add_summary(summary_str, epoch) - - export_path = "saved" - print('Exporting trained model to ', export_path) - builder = tf.saved_model.builder.SavedModelBuilder(export_path) - signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':input}, outputs = {'y':logits}) - builder.add_meta_graph_and_variables(sess, - [tf.saved_model.tag_constants.SERVING], - signature_def_map={'serving_default':signature}) - builder.save(as_text=True) - -file_writer.close() diff --git a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py b/searchlib/src/test/files/integration/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py deleted file mode 100644 index 07a9fa4a213..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -# Copyright 2015 The TensorFlow Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============================================================================== - -"""A very simple MNIST classifier. - -See extensive documentation at -https://www.tensorflow.org/get_started/mnist/beginners -""" -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import argparse -import sys - -from tensorflow.examples.tutorials.mnist import input_data - -import tensorflow as tf - -FLAGS = None - - -def main(_): - # Import data - mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) - - # Create the model - x = tf.placeholder(tf.float32, [None, 784]) - W = tf.Variable(tf.zeros([784, 10])) - b = tf.Variable(tf.zeros([10])) - y = tf.matmul(x, W) + b - - # Define loss and optimizer - y_ = tf.placeholder(tf.float32, [None, 10]) - - # The raw formulation of cross-entropy, - # - # tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.nn.softmax(y)), - # reduction_indices=[1])) - # - # can be numerically unstable. - # - # So here we use tf.nn.softmax_cross_entropy_with_logits on the raw - # outputs of 'y', and then average across the batch. - cross_entropy = tf.reduce_mean( - tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)) - train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) - - sess = tf.InteractiveSession() - tf.global_variables_initializer().run() - # Train - for _ in range(1000): - batch_xs, batch_ys = mnist.train.next_batch(100) - sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) - - # Test trained model - correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) - accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) - print(sess.run(accuracy, feed_dict={x: mnist.test.images, - y_: mnist.test.labels})) - - # Save the model - export_path = "saved" - print('Exporting trained model to ', export_path) - builder = tf.saved_model.builder.SavedModelBuilder(export_path) - signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':x}, outputs = {'y':y}) - builder.add_meta_graph_and_variables(sess, - [tf.saved_model.tag_constants.SERVING], - signature_def_map={'serving_default':signature}) - builder.save(as_text=True) - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data', - help='Directory for storing input data') - FLAGS, unparsed = parser.parse_known_args() - tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) diff --git a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/saved_model.pbtxt deleted file mode 100644 index 8100dfd594d..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/saved_model.pbtxt +++ /dev/null @@ -1,5039 +0,0 @@ -saved_model_schema_version: 1 -meta_graphs { - meta_info_def { - stripped_op_list { - op { - name: "Add" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_STRING - } - } - } - } - op { - name: "ApplyGradientDescent" - input_arg { - name: "var" - type_attr: "T" - is_ref: true - } - input_arg { - name: "alpha" - type_attr: "T" - } - input_arg { - name: "delta" - type_attr: "T" - } - output_arg { - name: "out" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: false - } - } - } - op { - name: "ArgMax" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "dimension" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "output_type" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - attr { - name: "output_type" - type: "type" - default_value { - type: DT_INT64 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Assign" - input_arg { - name: "ref" - type_attr: "T" - is_ref: true - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output_ref" - type_attr: "T" - is_ref: true - } - attr { - name: "T" - type: "type" - } - attr { - name: "validate_shape" - type: "bool" - default_value { - b: true - } - } - attr { - name: "use_locking" - type: "bool" - default_value { - b: true - } - } - allows_uninitialized_input: true - } - op { - name: "BroadcastGradientArgs" - input_arg { - name: "s0" - type_attr: "T" - } - input_arg { - name: "s1" - type_attr: "T" - } - output_arg { - name: "r0" - type_attr: "T" - } - output_arg { - name: "r1" - type_attr: "T" - } - attr { - name: "T" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Cast" - input_arg { - name: "x" - type_attr: "SrcT" - } - output_arg { - name: "y" - type_attr: "DstT" - } - attr { - name: "SrcT" - type: "type" - } - attr { - name: "DstT" - type: "type" - } - } - op { - name: "ConcatV2" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - input_arg { - name: "axis" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 2 - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Const" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "value" - type: "tensor" - } - attr { - name: "dtype" - type: "type" - } - } - op { - name: "Equal" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type: DT_BOOL - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_QUINT8 - type: DT_QINT8 - type: DT_QINT32 - type: DT_STRING - type: DT_BOOL - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "ExpandDims" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "dim" - type_attr: "Tdim" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tdim" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Fill" - input_arg { - name: "dims" - type: DT_INT32 - } - input_arg { - name: "value" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "FloorDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Identity" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - op { - name: "MatMul" - input_arg { - name: "a" - type_attr: "T" - } - input_arg { - name: "b" - type_attr: "T" - } - output_arg { - name: "product" - type_attr: "T" - } - attr { - name: "transpose_a" - type: "bool" - default_value { - b: false - } - } - attr { - name: "transpose_b" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Maximum" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT32 - type: DT_INT64 - } - } - } - is_commutative: true - } - op { - name: "Mean" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "MergeV2Checkpoints" - input_arg { - name: "checkpoint_prefixes" - type: DT_STRING - } - input_arg { - name: "destination_prefix" - type: DT_STRING - } - attr { - name: "delete_old_dirs" - type: "bool" - default_value { - b: true - } - } - is_stateful: true - } - op { - name: "Mul" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - is_commutative: true - } - op { - name: "NoOp" - } - op { - name: "Pack" - input_arg { - name: "values" - type_attr: "T" - number_attr: "N" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "T" - type: "type" - } - attr { - name: "axis" - type: "int" - default_value { - i: 0 - } - } - } - op { - name: "Placeholder" - output_arg { - name: "output" - type_attr: "dtype" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "shape" - type: "shape" - default_value { - shape { - unknown_rank: true - } - } - } - } - op { - name: "Prod" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RealDiv" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Reshape" - input_arg { - name: "tensor" - type_attr: "T" - } - input_arg { - name: "shape" - type_attr: "Tshape" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tshape" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "RestoreV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - output_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "SaveV2" - input_arg { - name: "prefix" - type: DT_STRING - } - input_arg { - name: "tensor_names" - type: DT_STRING - } - input_arg { - name: "shape_and_slices" - type: DT_STRING - } - input_arg { - name: "tensors" - type_list_attr: "dtypes" - } - attr { - name: "dtypes" - type: "list(type)" - has_minimum: true - minimum: 1 - } - is_stateful: true - } - op { - name: "Shape" - input_arg { - name: "input" - type_attr: "T" - } - output_arg { - name: "output" - type_attr: "out_type" - } - attr { - name: "T" - type: "type" - } - attr { - name: "out_type" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "ShardedFilename" - input_arg { - name: "basename" - type: DT_STRING - } - input_arg { - name: "shard" - type: DT_INT32 - } - input_arg { - name: "num_shards" - type: DT_INT32 - } - output_arg { - name: "filename" - type: DT_STRING - } - } - op { - name: "Slice" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "begin" - type_attr: "Index" - } - input_arg { - name: "size" - type_attr: "Index" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Index" - type: "type" - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "SoftmaxCrossEntropyWithLogits" - input_arg { - name: "features" - type_attr: "T" - } - input_arg { - name: "labels" - type_attr: "T" - } - output_arg { - name: "loss" - type_attr: "T" - } - output_arg { - name: "backprop" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - } - } - } - } - op { - name: "StringJoin" - input_arg { - name: "inputs" - type: DT_STRING - number_attr: "N" - } - output_arg { - name: "output" - type: DT_STRING - } - attr { - name: "N" - type: "int" - has_minimum: true - minimum: 1 - } - attr { - name: "separator" - type: "string" - default_value { - s: "" - } - } - } - op { - name: "Sub" - input_arg { - name: "x" - type_attr: "T" - } - input_arg { - name: "y" - type_attr: "T" - } - output_arg { - name: "z" - type_attr: "T" - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_HALF - type: DT_FLOAT - type: DT_DOUBLE - type: DT_UINT8 - type: DT_INT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT32 - type: DT_INT64 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - } - } - } - } - op { - name: "Sum" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "reduction_indices" - type_attr: "Tidx" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "keep_dims" - type: "bool" - default_value { - b: false - } - } - attr { - name: "T" - type: "type" - allowed_values { - list { - type: DT_FLOAT - type: DT_DOUBLE - type: DT_INT64 - type: DT_INT32 - type: DT_UINT8 - type: DT_UINT16 - type: DT_INT16 - type: DT_INT8 - type: DT_COMPLEX64 - type: DT_COMPLEX128 - type: DT_QINT8 - type: DT_QUINT8 - type: DT_QINT32 - type: DT_HALF - } - } - } - attr { - name: "Tidx" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "Tile" - input_arg { - name: "input" - type_attr: "T" - } - input_arg { - name: "multiples" - type_attr: "Tmultiples" - } - output_arg { - name: "output" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - attr { - name: "Tmultiples" - type: "type" - default_value { - type: DT_INT32 - } - allowed_values { - list { - type: DT_INT32 - type: DT_INT64 - } - } - } - } - op { - name: "VariableV2" - output_arg { - name: "ref" - type_attr: "dtype" - is_ref: true - } - attr { - name: "shape" - type: "shape" - } - attr { - name: "dtype" - type: "type" - } - attr { - name: "container" - type: "string" - default_value { - s: "" - } - } - attr { - name: "shared_name" - type: "string" - default_value { - s: "" - } - } - is_stateful: true - } - op { - name: "ZerosLike" - input_arg { - name: "x" - type_attr: "T" - } - output_arg { - name: "y" - type_attr: "T" - } - attr { - name: "T" - type: "type" - } - } - } - tags: "serve" - tensorflow_version: "1.4.1" - tensorflow_git_version: "v1.4.0-19-ga52c8d9b01" - } - graph_def { - node { - name: "Placeholder" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - node { - name: "zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "Variable" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "Variable/Assign" - op: "Assign" - input: "Variable" - input: "zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "Variable/read" - op: "Identity" - input: "Variable" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "zeros_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 10 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "Variable_1" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 10 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "Variable_1/Assign" - op: "Assign" - input: "Variable_1" - input: "zeros_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "Variable_1/read" - op: "Identity" - input: "Variable_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "MatMul" - op: "MatMul" - input: "Placeholder" - input: "Variable/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "add" - op: "Add" - input: "MatMul" - input: "Variable_1/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "Placeholder_1" - op: "Placeholder" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - node { - name: "Rank" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "Shape" - op: "Shape" - input: "add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "Rank_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "Shape_1" - op: "Shape" - input: "add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "Sub/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "Sub" - op: "Sub" - input: "Rank_1" - input: "Sub/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "Slice/begin" - op: "Pack" - input: "Sub" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "Slice/size" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "Slice" - op: "Slice" - input: "Shape_1" - input: "Slice/begin" - input: "Slice/size" - attr { - key: "Index" - value { - type: DT_INT32 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "concat/values_0" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: -1 - } - } - } - } - node { - name: "concat/axis" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "concat" - op: "ConcatV2" - input: "concat/values_0" - input: "Slice" - input: "concat/axis" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "Reshape" - op: "Reshape" - input: "add" - input: "concat" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Rank_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 2 - } - } - } - } - node { - name: "Shape_2" - op: "Shape" - input: "Placeholder_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "Sub_1/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "Sub_1" - op: "Sub" - input: "Rank_2" - input: "Sub_1/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "Slice_1/begin" - op: "Pack" - input: "Sub_1" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "Slice_1/size" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "Slice_1" - op: "Slice" - input: "Shape_2" - input: "Slice_1/begin" - input: "Slice_1/size" - attr { - key: "Index" - value { - type: DT_INT32 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "concat_1/values_0" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: -1 - } - } - } - } - node { - name: "concat_1/axis" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "concat_1" - op: "ConcatV2" - input: "concat_1/values_0" - input: "Slice_1" - input: "concat_1/axis" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - } - node { - name: "Reshape_1" - op: "Reshape" - input: "Placeholder_1" - input: "concat_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "SoftmaxCrossEntropyWithLogits" - op: "SoftmaxCrossEntropyWithLogits" - input: "Reshape" - input: "Reshape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Sub_2/y" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "Sub_2" - op: "Sub" - input: "Rank" - input: "Sub_2/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "Slice_2/begin" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "Slice_2/size" - op: "Pack" - input: "Sub_2" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "Slice_2" - op: "Slice" - input: "Shape" - input: "Slice_2/begin" - input: "Slice_2/size" - attr { - key: "Index" - value { - type: DT_INT32 - } - } - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Reshape_2" - op: "Reshape" - input: "SoftmaxCrossEntropyWithLogits" - input: "Slice_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "Mean" - op: "Mean" - input: "Reshape_2" - input: "Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/Shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 1.0 - } - } - } - } - node { - name: "gradients/Fill" - op: "Fill" - input: "gradients/Shape" - input: "gradients/Const" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/Mean_grad/Reshape/shape" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 1 - } - } - } - } - node { - name: "gradients/Mean_grad/Reshape" - op: "Reshape" - input: "gradients/Fill" - input: "gradients/Mean_grad/Reshape/shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/Mean_grad/Shape" - op: "Shape" - input: "Reshape_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/Mean_grad/Tile" - op: "Tile" - input: "gradients/Mean_grad/Reshape" - input: "gradients/Mean_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tmultiples" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/Mean_grad/Shape_1" - op: "Shape" - input: "Reshape_2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/Mean_grad/Shape_2" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - } - } - } - } - } - } - node { - name: "gradients/Mean_grad/Const" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "gradients/Mean_grad/Prod" - op: "Prod" - input: "gradients/Mean_grad/Shape_1" - input: "gradients/Mean_grad/Const" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/Mean_grad/Const_1" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "gradients/Mean_grad/Prod_1" - op: "Prod" - input: "gradients/Mean_grad/Shape_2" - input: "gradients/Mean_grad/Const_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/Mean_grad/Maximum/y" - op: "Const" - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "gradients/Mean_grad/Maximum" - op: "Maximum" - input: "gradients/Mean_grad/Prod_1" - input: "gradients/Mean_grad/Maximum/y" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/Mean_grad/floordiv" - op: "FloorDiv" - input: "gradients/Mean_grad/Prod" - input: "gradients/Mean_grad/Maximum" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/Mean_grad/Shape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/Mean_grad/Cast" - op: "Cast" - input: "gradients/Mean_grad/floordiv" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "gradients/Mean_grad/truediv" - op: "RealDiv" - input: "gradients/Mean_grad/Tile" - input: "gradients/Mean_grad/Cast" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/Reshape_2_grad/Shape" - op: "Shape" - input: "SoftmaxCrossEntropyWithLogits" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/Reshape_2_grad/Reshape" - op: "Reshape" - input: "gradients/Mean_grad/truediv" - input: "gradients/Reshape_2_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/zeros_like" - op: "ZerosLike" - input: "SoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: -1 - } - } - } - } - node { - name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims" - op: "ExpandDims" - input: "gradients/Reshape_2_grad/Reshape" - input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tdim" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 1 - } - } - } - } - } - } - node { - name: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul" - op: "Mul" - input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims" - input: "SoftmaxCrossEntropyWithLogits:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/Reshape_grad/Shape" - op: "Shape" - input: "add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/Reshape_grad/Reshape" - op: "Reshape" - input: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul" - input: "gradients/Reshape_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Shape" - op: "Shape" - input: "MatMul" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "out_type" - value { - type: DT_INT32 - } - } - } - node { - name: "gradients/add_grad/Shape_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 10 - } - } - } - } - node { - name: "gradients/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "gradients/add_grad/Shape" - input: "gradients/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Sum" - op: "Sum" - input: "gradients/Reshape_grad/Reshape" - input: "gradients/add_grad/BroadcastGradientArgs" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_grad/Reshape" - op: "Reshape" - input: "gradients/add_grad/Sum" - input: "gradients/add_grad/Shape" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "gradients/add_grad/Sum_1" - op: "Sum" - input: "gradients/Reshape_grad/Reshape" - input: "gradients/add_grad/BroadcastGradientArgs:1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "gradients/add_grad/Reshape_1" - op: "Reshape" - input: "gradients/add_grad/Sum_1" - input: "gradients/add_grad/Shape_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tshape" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "gradients/add_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/add_grad/Reshape" - input: "^gradients/add_grad/Reshape_1" - } - node { - name: "gradients/add_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/add_grad/Reshape" - input: "^gradients/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "gradients/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/add_grad/Reshape_1" - input: "^gradients/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - } - node { - name: "gradients/MatMul_grad/MatMul" - op: "MatMul" - input: "gradients/add_grad/tuple/control_dependency" - input: "Variable/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: true - } - } - } - node { - name: "gradients/MatMul_grad/MatMul_1" - op: "MatMul" - input: "Placeholder" - input: "gradients/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "gradients/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^gradients/MatMul_grad/MatMul" - input: "^gradients/MatMul_grad/MatMul_1" - } - node { - name: "gradients/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "gradients/MatMul_grad/MatMul" - input: "^gradients/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - } - } - node { - name: "gradients/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "gradients/MatMul_grad/MatMul_1" - input: "^gradients/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@gradients/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "GradientDescent/learning_rate" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - } - float_val: 0.5 - } - } - } - } - node { - name: "GradientDescent/update_Variable/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "Variable" - input: "GradientDescent/learning_rate" - input: "gradients/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "GradientDescent/update_Variable_1/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "Variable_1" - input: "GradientDescent/learning_rate" - input: "gradients/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "GradientDescent" - op: "NoOp" - input: "^GradientDescent/update_Variable/ApplyGradientDescent" - input: "^GradientDescent/update_Variable_1/ApplyGradientDescent" - } - node { - name: "init" - op: "NoOp" - input: "^Variable/Assign" - input: "^Variable_1/Assign" - } - node { - name: "ArgMax/dimension" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "ArgMax" - op: "ArgMax" - input: "add" - input: "ArgMax/dimension" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - attr { - key: "output_type" - value { - type: DT_INT64 - } - } - } - node { - name: "ArgMax_1/dimension" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "ArgMax_1" - op: "ArgMax" - input: "Placeholder_1" - input: "ArgMax_1/dimension" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - attr { - key: "output_type" - value { - type: DT_INT64 - } - } - } - node { - name: "Equal" - op: "Equal" - input: "ArgMax" - input: "ArgMax_1" - attr { - key: "T" - value { - type: DT_INT64 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Cast_1" - op: "Cast" - input: "Equal" - attr { - key: "DstT" - value { - type: DT_FLOAT - } - } - attr { - key: "SrcT" - value { - type: DT_BOOL - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - } - } - } - } - } - node { - name: "Const_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - dim { - size: 1 - } - } - int_val: 0 - } - } - } - } - node { - name: "Mean_1" - op: "Mean" - input: "Cast_1" - input: "Const_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "Tidx" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "keep_dims" - value { - b: false - } - } - } - node { - name: "save/Const" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "model" - } - } - } - } - node { - name: "save/StringJoin/inputs_1" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - } - string_val: "_temp_6ca9fa5171ed4237a2fbcc27277e2864/part" - } - } - } - } - node { - name: "save/StringJoin" - op: "StringJoin" - input: "save/Const" - input: "save/StringJoin/inputs_1" - attr { - key: "N" - value { - i: 2 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "separator" - value { - s: "" - } - } - } - node { - name: "save/num_shards" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 1 - } - } - } - } - node { - name: "save/ShardedFilename/shard" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - attr { - key: "dtype" - value { - type: DT_INT32 - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_INT32 - tensor_shape { - } - int_val: 0 - } - } - } - } - node { - name: "save/ShardedFilename" - op: "ShardedFilename" - input: "save/StringJoin" - input: "save/ShardedFilename/shard" - input: "save/num_shards" - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/SaveV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 2 - } - } - string_val: "Variable" - string_val: "Variable_1" - } - } - } - } - node { - name: "save/SaveV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 2 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 2 - } - } - string_val: "" - string_val: "" - } - } - } - } - node { - name: "save/SaveV2" - op: "SaveV2" - input: "save/ShardedFilename" - input: "save/SaveV2/tensor_names" - input: "save/SaveV2/shape_and_slices" - input: "Variable" - input: "Variable_1" - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - type: DT_FLOAT - } - } - } - } - node { - name: "save/control_dependency" - op: "Identity" - input: "save/ShardedFilename" - input: "^save/SaveV2" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_class" - value { - list { - s: "loc:@save/ShardedFilename" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/MergeV2Checkpoints/checkpoint_prefixes" - op: "Pack" - input: "save/ShardedFilename" - input: "^save/control_dependency" - attr { - key: "N" - value { - i: 1 - } - } - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "axis" - value { - i: 0 - } - } - } - node { - name: "save/MergeV2Checkpoints" - op: "MergeV2Checkpoints" - input: "save/MergeV2Checkpoints/checkpoint_prefixes" - input: "save/Const" - attr { - key: "delete_old_dirs" - value { - b: true - } - } - } - node { - name: "save/Identity" - op: "Identity" - input: "save/Const" - input: "^save/control_dependency" - input: "^save/MergeV2Checkpoints" - attr { - key: "T" - value { - type: DT_STRING - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - } - } - } - } - } - node { - name: "save/RestoreV2/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "Variable" - } - } - } - } - node { - name: "save/RestoreV2/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2/tensor_names" - input: "save/RestoreV2/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign" - op: "Assign" - input: "Variable" - input: "save/RestoreV2" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 784 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/RestoreV2_1/tensor_names" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "Variable_1" - } - } - } - } - node { - name: "save/RestoreV2_1/shape_and_slices" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 1 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 1 - } - } - string_val: "" - } - } - } - } - node { - name: "save/RestoreV2_1" - op: "RestoreV2" - input: "save/Const" - input: "save/RestoreV2_1/tensor_names" - input: "save/RestoreV2_1/shape_and_slices" - attr { - key: "_output_shapes" - value { - list { - shape { - unknown_rank: true - } - } - } - } - attr { - key: "dtypes" - value { - list { - type: DT_FLOAT - } - } - } - } - node { - name: "save/Assign_1" - op: "Assign" - input: "Variable_1" - input: "save/RestoreV2_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@Variable_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 10 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "save/restore_shard" - op: "NoOp" - input: "^save/Assign" - input: "^save/Assign_1" - } - node { - name: "save/restore_all" - op: "NoOp" - input: "^save/restore_shard" - } - versions { - producer: 24 - } - } - saver_def { - filename_tensor_name: "save/Const:0" - save_tensor_name: "save/Identity:0" - restore_op_name: "save/restore_all" - max_to_keep: 5 - sharded: true - keep_checkpoint_every_n_hours: 10000.0 - version: V2 - } - collection_def { - key: "train_op" - value { - node_list { - value: "GradientDescent" - } - } - } - collection_def { - key: "trainable_variables" - value { - bytes_list { - value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0" - value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0" - } - } - } - collection_def { - key: "variables" - value { - bytes_list { - value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0" - value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0" - } - } - } - signature_def { - key: "serving_default" - value { - inputs { - key: "x" - value { - name: "Placeholder:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 784 - } - } - } - } - outputs { - key: "y" - value { - name: "add:0" - dtype: DT_FLOAT - tensor_shape { - dim { - size: -1 - } - dim { - size: 10 - } - } - } - } - method_name: "tensorflow/serving/predict" - } - } -} diff --git a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index 8474aa0a04c..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.index Binary files differdeleted file mode 100644 index cfcdac20409..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/mnist_softmax/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BatchNormImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BatchNormImportTestCase.java deleted file mode 100644 index e325c3d11b4..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BatchNormImportTestCase.java +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * @author lesters - */ -public class BatchNormImportTestCase { - - @Test - public void testBatchNormImport() { - TestableTensorFlowModel model = new TestableTensorFlowModel("test", - "src/test/files/integration/tensorflow/batch_norm/saved"); - ImportedModel.Signature signature = model.get().signature("serving_default"); - - assertEquals("Has skipped outputs", - 0, model.get().signature("serving_default").skippedOutputs().size()); - - ExpressionFunction function = signature.outputExpression("y"); - assertNotNull(function); - assertEquals("dnn/batch_normalization_3/batchnorm/add_1", function.getBody().getName()); - model.assertEqualResult("X", function.getBody().getName()); - assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString()); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BlogEvaluationBenchmark.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BlogEvaluationBenchmark.java deleted file mode 100644 index 5b0cca6a940..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/BlogEvaluationBenchmark.java +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.searchlib.rankingexpression.evaluation.Context; -import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex; -import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer; -import com.yahoo.searchlib.rankingexpression.evaluation.OptimizationReport; -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow.TensorConverter; -import com.yahoo.searchlib.rankingexpression.parser.ParseException; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import org.tensorflow.SavedModelBundle; -import org.tensorflow.Session; - -import java.nio.FloatBuffer; -import java.util.List; - -import static com.yahoo.searchlib.rankingexpression.integration.ml.TestableTensorFlowModel.contextFrom; - -/** - * Microbenchmark of imported ML model evaluation. - * - * @author lesters - */ -public class BlogEvaluationBenchmark { - - static final String modelDir = "src/test/files/integration/tensorflow/blog/saved"; - - public static void main(String[] args) throws ParseException { - SavedModelBundle tensorFlowModel = SavedModelBundle.load(modelDir, "serve"); - ImportedModel model = new TensorFlowImporter().importModel("blog", modelDir, tensorFlowModel); - - Context context = contextFrom(model); - Tensor u = generateInputTensor(); - Tensor d = generateInputTensor(); - context.put("input_u", new TensorValue(u)); - context.put("input_d", new TensorValue(d)); - - // Parse the ranking expression from imported string to force primitive tensor functions. - RankingExpression expression = new RankingExpression(model.expressions().get("y").getRoot().toString()); - benchmarkJava(expression, context, 20, 200); - - System.out.println("*** Optimizing expression ***"); - ExpressionOptimizer optimizer = new ExpressionOptimizer(); - OptimizationReport report = optimizer.optimize(expression, (ContextIndex)context); - System.out.println(report.toString()); - - benchmarkJava(expression, context, 2000, 20000); - benchmarkTensorFlow(tensorFlowModel, 2000, 20000); - } - - private static void benchmarkJava(RankingExpression expression, Context context, int warmup, int iterations) { - System.out.println("*** Java evaluation - warmup ***"); - evaluate(expression, context, warmup); - System.gc(); - System.out.println("*** Java evaluation - " + iterations + " iterations ***"); - double startTime = System.nanoTime(); - evaluate(expression, context, iterations); - double endTime = System.nanoTime(); - System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000)) + " ms"); - System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms"); - } - - private static double evaluate(RankingExpression expression, Context context, int iterations) { - double result = 0; - for (int i = 0 ; i < iterations; i++) { - result = expression.evaluate(context).asTensor().sum().asDouble(); - } - return result; - } - - private static Tensor generateInputTensor() { - Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 128).build()); - for (int d0 = 0; d0 < 1; d0++) - for (int d1 = 0; d1 < 128; d1++) - b.cell(d1 * 1.0 / 128, d0, d1); - return b.build(); - } - - private static void benchmarkTensorFlow(SavedModelBundle tensorFlowModel, int warmup, int iterations) { - org.tensorflow.Tensor<?> u = generateInputTensorFlow(); - org.tensorflow.Tensor<?> d = generateInputTensorFlow(); - - System.out.println("*** TensorFlow evaluation - warmup ***"); - evaluateTensorflow(tensorFlowModel, u, d, warmup); - - System.gc(); - System.out.println("*** TensorFlow evaluation - " + iterations + " iterations ***"); - double startTime = System.nanoTime(); - evaluateTensorflow(tensorFlowModel, u, d, iterations); - double endTime = System.nanoTime(); - System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000) + " ms")); - System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms"); - } - - private static double evaluateTensorflow(SavedModelBundle tensorFlowModel, org.tensorflow.Tensor<?> u, org.tensorflow.Tensor<?> d, int iterations) { - double result = 0; - for (int i = 0 ; i < iterations; i++) { - Session.Runner runner = tensorFlowModel.session().runner(); - runner.feed("input_u", u); - runner.feed("input_d", d); - List<org.tensorflow.Tensor<?>> results = runner.fetch("y").run(); - result = TensorConverter.toVespaTensor(results.get(0)).sum().asDouble(); - } - return result; - } - - private static org.tensorflow.Tensor<?> generateInputTensorFlow() { - FloatBuffer fb = FloatBuffer.allocate(1 * 128); - for (int i = 0; i < 128; ++i) { - fb.put(i, (float)(i * 1.0 / 128)); - } - return org.tensorflow.Tensor.create(new long[]{ 1, 128 }, fb); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/DropoutImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/DropoutImportTestCase.java deleted file mode 100644 index 8ca5a9a7888..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/DropoutImportTestCase.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.tensor.TensorType; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -/** - * @author lesters - */ -public class DropoutImportTestCase { - - @Test - public void testDropoutImport() { - TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/files/integration/tensorflow/dropout/saved"); - - // Check required functions - assertEquals(1, model.get().inputs().size()); - assertTrue(model.get().inputs().containsKey("X")); - assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(), - model.get().inputs().get("X")); - - ImportedModel.Signature signature = model.get().signature("serving_default"); - - assertEquals("Has skipped outputs", - 0, model.get().signature("serving_default").skippedOutputs().size()); - - ExpressionFunction function = signature.outputExpression("y"); - assertNotNull(function); - assertEquals("outputs/Maximum", function.getBody().getName()); - assertEquals("join(join(imported_ml_function_test_outputs_BiasAdd, reduce(constant(test_outputs_Const), sum, d1), f(a,b)(a * b)), imported_ml_function_test_outputs_BiasAdd, f(a,b)(max(a,b)))", - function.getBody().getRoot().toString()); - model.assertEqualResult("X", function.getBody().getName()); - assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString()); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/MnistImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/MnistImportTestCase.java deleted file mode 100644 index 3d8d5d5a570..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/MnistImportTestCase.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * @author bratseth - */ -public class MnistImportTestCase { - - @Test - public void testMnistImport() { - TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/files/integration/tensorflow/mnist/saved"); - ImportedModel.Signature signature = model.get().signature("serving_default"); - - assertEquals("Has skipped outputs", - 0, model.get().signature("serving_default").skippedOutputs().size()); - - ExpressionFunction output = signature.outputExpression("y"); - assertNotNull(output); - assertEquals("dnn/outputs/add", output.getBody().getName()); - model.assertEqualResultSum("input", output.getBody().getName(), 0.00001); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxMnistSoftmaxImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxMnistSoftmaxImportTestCase.java deleted file mode 100644 index 6d0ee0a906d..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/OnnxMnistSoftmaxImportTestCase.java +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.searchlib.rankingexpression.evaluation.Context; -import com.yahoo.searchlib.rankingexpression.evaluation.MapContext; -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -/** - * @author lesters - */ -public class OnnxMnistSoftmaxImportTestCase { - - @Test - public void testMnistSoftmaxImport() { - ImportedModel model = new OnnxImporter().importModel("test", "src/test/files/integration/onnx/mnist_softmax/mnist_softmax.onnx"); - - // Check constants - assertEquals(2, model.largeConstants().size()); - - Tensor constant0 = model.largeConstants().get("test_Variable"); - assertNotNull(constant0); - assertEquals(new TensorType.Builder().indexed("d2", 784).indexed("d1", 10).build(), - constant0.type()); - assertEquals(7840, constant0.size()); - - Tensor constant1 = model.largeConstants().get("test_Variable_1"); - assertNotNull(constant1); - assertEquals(new TensorType.Builder().indexed("d1", 10).build(), constant1.type()); - assertEquals(10, constant1.size()); - - // Check inputs - assertEquals(1, model.inputs().size()); - assertTrue(model.inputs().containsKey("Placeholder")); - assertEquals(TensorType.fromSpec("tensor(d0[],d1[784])"), model.inputs().get("Placeholder")); - - // Check signature - ExpressionFunction output = model.defaultSignature().outputExpression("add"); - assertNotNull(output); - assertEquals("add", output.getBody().getName()); - assertEquals("join(reduce(join(rename(Placeholder, (d0, d1), (d0, d2)), constant(test_Variable), f(a,b)(a * b)), sum, d2), constant(test_Variable_1), f(a,b)(a + b))", - output.getBody().getRoot().toString()); - assertEquals(TensorType.fromSpec("tensor(d0[],d1[784])"), - model.inputs().get(model.defaultSignature().inputs().get("Placeholder"))); - assertEquals("{Placeholder=tensor(d0[],d1[784])}", output.argumentTypes().toString()); - } - - @Test - public void testComparisonBetweenOnnxAndTensorflow() { - String tfModelPath = "src/test/files/integration/tensorflow/mnist_softmax/saved"; - String onnxModelPath = "src/test/files/integration/onnx/mnist_softmax/mnist_softmax.onnx"; - - Tensor argument = placeholderArgument(); - Tensor tensorFlowResult = evaluateTensorFlowModel(tfModelPath, argument, "Placeholder", "add"); - Tensor onnxResult = evaluateOnnxModel(onnxModelPath, argument, "Placeholder", "add"); - - assertEquals("Operation 'add' produces equal results", tensorFlowResult, onnxResult); - } - - private Tensor evaluateTensorFlowModel(String path, Tensor argument, String input, String output) { - ImportedModel model = new TensorFlowImporter().importModel("test", path); - return evaluateExpression(model.expressions().get(output), contextFrom(model), argument, input); - } - - private Tensor evaluateOnnxModel(String path, Tensor argument, String input, String output) { - ImportedModel model = new OnnxImporter().importModel("test", path); - return evaluateExpression(model.expressions().get(output), contextFrom(model), argument, input); - } - - private Tensor evaluateExpression(RankingExpression expression, Context context, Tensor argument, String input) { - context.put(input, new TensorValue(argument)); - return expression.evaluate(context).asTensor(); - } - - private Context contextFrom(ImportedModel result) { - MapContext context = new MapContext(); - result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(tensor))); - result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(tensor))); - return context; - } - - private Tensor placeholderArgument() { - Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 784).build()); - for (int d0 = 0; d0 < 1; d0++) - for (int d1 = 0; d1 < 784; d1++) - b.cell(d1 * 1.0 / 784, d0, d1); - return b.build(); - } - - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowMnistSoftmaxImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowMnistSoftmaxImportTestCase.java deleted file mode 100644 index feba40601e3..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TensorFlowMnistSoftmaxImportTestCase.java +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.ExpressionFunction; -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -/** - * @author bratseth - */ -public class TensorFlowMnistSoftmaxImportTestCase { - - @Test - public void testMnistSoftmaxImport() { - TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/files/integration/tensorflow/mnist_softmax/saved"); - - // Check constants - assertEquals(2, model.get().largeConstants().size()); - - Tensor constant0 = model.get().largeConstants().get("test_Variable_read"); - assertNotNull(constant0); - assertEquals(new TensorType.Builder().indexed("d2", 784).indexed("d1", 10).build(), - constant0.type()); - assertEquals(7840, constant0.size()); - - Tensor constant1 = model.get().largeConstants().get("test_Variable_1_read"); - assertNotNull(constant1); - assertEquals(new TensorType.Builder().indexed("d1", 10).build(), - constant1.type()); - assertEquals(10, constant1.size()); - - // Check (provided) functions - assertEquals(0, model.get().functions().size()); - - // Check required functions - assertEquals(1, model.get().inputs().size()); - assertTrue(model.get().inputs().containsKey("Placeholder")); - assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(), - model.get().inputs().get("Placeholder")); - - // Check signatures - assertEquals(1, model.get().signatures().size()); - ImportedModel.Signature signature = model.get().signatures().get("serving_default"); - assertNotNull(signature); - - // ... signature inputs - assertEquals(1, signature.inputs().size()); - TensorType argument0 = signature.inputArgument("x"); - assertNotNull(argument0); - assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(), argument0); - - // ... signature outputs - assertEquals(1, signature.outputs().size()); - ExpressionFunction output = signature.outputExpression("y"); - assertNotNull(output); - assertEquals("add", output.getBody().getName()); - assertEquals("join(reduce(join(rename(Placeholder, (d0, d1), (d0, d2)), constant(test_Variable_read), f(a,b)(a * b)), sum, d2), constant(test_Variable_1_read), f(a,b)(a + b))", - output.getBody().getRoot().toString()); - assertEquals("{Placeholder=tensor(d0[],d1[784])}", output.argumentTypes().toString()); - - // Test execution - model.assertEqualResult("Placeholder", "MatMul"); - model.assertEqualResult("Placeholder", "add"); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TestableTensorFlowModel.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TestableTensorFlowModel.java deleted file mode 100644 index fbe7c5fac63..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/TestableTensorFlowModel.java +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import com.yahoo.searchlib.rankingexpression.RankingExpression; -import com.yahoo.searchlib.rankingexpression.evaluation.Context; -import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex; -import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer; -import com.yahoo.searchlib.rankingexpression.evaluation.MapContext; -import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; -import com.yahoo.searchlib.rankingexpression.integration.ml.importer.tensorflow.TensorConverter; -import com.yahoo.searchlib.rankingexpression.rule.CompositeNode; -import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode; -import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; -import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; -import org.tensorflow.SavedModelBundle; -import org.tensorflow.Session; - -import java.nio.FloatBuffer; -import java.util.List; - -import static org.junit.Assert.assertEquals; - -/** - * Helper for TensorFlow import tests: Imports a model and provides asserts on it. - * This currently assumes the TensorFlow model takes a single input of type tensor(d0[1],d1[784]) - * - * @author bratseth - */ -public class TestableTensorFlowModel { - - private SavedModelBundle tensorFlowModel; - private ImportedModel model; - - // Sizes of the input vector - private final int d0Size = 1; - private final int d1Size = 784; - - public TestableTensorFlowModel(String modelName, String modelDir) { - tensorFlowModel = SavedModelBundle.load(modelDir, "serve"); - model = new TensorFlowImporter().importModel(modelName, modelDir, tensorFlowModel); - } - - public ImportedModel get() { return model; } - - /** Compare that summing the tensors produce the same result to within some tolerance delta */ - public void assertEqualResultSum(String inputName, String operationName, double delta) { - Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName); - Context context = contextFrom(model); - Tensor placeholder = placeholderArgument(); - context.put(inputName, new TensorValue(placeholder)); - - model.functions().forEach((k, v) -> evaluateFunction(context, model, k)); - - RankingExpression expression = model.expressions().get(operationName); - ExpressionOptimizer optimizer = new ExpressionOptimizer(); - optimizer.optimize(expression, (ContextIndex)context); - - Tensor vespaResult = expression.evaluate(context).asTensor(); - assertEquals("Operation '" + operationName + "' produces equal results", - tfResult.sum().asDouble(), vespaResult.sum().asDouble(), delta); - } - - /** Compare tensors 100% exactly */ - public void assertEqualResult(String inputName, String operationName) { - Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName); - Context context = contextFrom(model); - Tensor placeholder = placeholderArgument(); - context.put(inputName, new TensorValue(placeholder)); - - model.functions().forEach((k, v) -> evaluateFunction(context, model, k)); - - RankingExpression expression = model.expressions().get(operationName); - ExpressionOptimizer optimizer = new ExpressionOptimizer(); - optimizer.optimize(expression, (ContextIndex)context); - - Tensor vespaResult = expression.evaluate(context).asTensor(); - assertEquals("Operation '" + operationName + "' produces equal results", tfResult, vespaResult); - } - - private Tensor tensorFlowExecute(SavedModelBundle model, String inputName, String operationName) { - Session.Runner runner = model.session().runner(); - FloatBuffer fb = FloatBuffer.allocate(d0Size * d1Size); - for (int i = 0; i < d1Size; ++i) { - fb.put(i, (float)(i * 1.0 / d1Size)); - } - org.tensorflow.Tensor<?> placeholder = org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb); - runner.feed(inputName, placeholder); - List<org.tensorflow.Tensor<?>> results = runner.fetch(operationName).run(); - assertEquals(1, results.size()); - return TensorConverter.toVespaTensor(results.get(0)); - } - - static Context contextFrom(ImportedModel result) { - TestableModelContext context = new TestableModelContext(); - result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(tensor))); - result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(tensor))); - return context; - } - - private Tensor placeholderArgument() { - Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", d0Size).indexed("d1", d1Size).build()); - for (int d0 = 0; d0 < d0Size; d0++) - for (int d1 = 0; d1 < d1Size; d1++) - b.cell(d1 * 1.0 / d1Size, d0, d1); - return b.build(); - } - - private void evaluateFunction(Context context, ImportedModel model, String functionName) { - if (!context.names().contains(functionName)) { - RankingExpression e = model.functions().get(functionName); - evaluateFunctionDependencies(context, model, e.getRoot()); - context.put(functionName, new TensorValue(e.evaluate(context).asTensor())); - } - } - - private void evaluateFunctionDependencies(Context context, ImportedModel model, ExpressionNode node) { - if (node instanceof ReferenceNode) { - String name = node.toString(); - if (model.functions().containsKey(name)) { - evaluateFunction(context, model, name); - } - } - else if (node instanceof CompositeNode) { - for (ExpressionNode child : ((CompositeNode)node).children()) { - evaluateFunctionDependencies(context, model, child); - } - } - } - - private static class TestableModelContext extends MapContext implements ContextIndex { - @Override - public int size() { - return bindings().size(); - } - @Override - public int getIndex(String name) { - throw new UnsupportedOperationException(this + " does not support index lookup by name"); - } - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverterTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverterTestCase.java deleted file mode 100644 index aabbdf33c9d..00000000000 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/VariableConverterTestCase.java +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; - -import org.junit.Test; - -import java.nio.charset.StandardCharsets; - -import static org.junit.Assert.assertEquals; - -public class VariableConverterTestCase { - - @Test - public void testConversion() { - byte[] converted = VariableConverter.importVariable("src/test/files/integration/tensorflow/mnist_softmax/saved", - "Variable_1", - "tensor(d0[10],d1[1])"); - assertEquals("{\"cells\":[{\"address\":{\"d0\":\"0\",\"d1\":\"0\"},\"value\":-0.3546536862850189},{\"address\":{\"d0\":\"1\",\"d1\":\"0\"},\"value\":0.3759574592113495},{\"address\":{\"d0\":\"2\",\"d1\":\"0\"},\"value\":0.06054411828517914},{\"address\":{\"d0\":\"3\",\"d1\":\"0\"},\"value\":-0.251544713973999},{\"address\":{\"d0\":\"4\",\"d1\":\"0\"},\"value\":0.017951013520359993},{\"address\":{\"d0\":\"5\",\"d1\":\"0\"},\"value\":1.2899067401885986},{\"address\":{\"d0\":\"6\",\"d1\":\"0\"},\"value\":-0.10389615595340729},{\"address\":{\"d0\":\"7\",\"d1\":\"0\"},\"value\":0.6367976665496826},{\"address\":{\"d0\":\"8\",\"d1\":\"0\"},\"value\":-1.4136744737625122},{\"address\":{\"d0\":\"9\",\"d1\":\"0\"},\"value\":-0.2573896050453186}]}", - new String(converted, StandardCharsets.UTF_8)); - } - -} diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/DimensionRenamerTest.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/DimensionRenamerTest.java index b3dafff621c..4bd28a74d6f 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/DimensionRenamerTest.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/DimensionRenamerTest.java @@ -1,5 +1,5 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.DimensionRenamer; import org.junit.Test; diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/OrderedTensorTypeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/OrderedTensorTypeTestCase.java index 55e1d234782..5118081637e 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/OrderedTensorTypeTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/ml/importer/OrderedTensorTypeTestCase.java @@ -1,5 +1,5 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.searchlib.rankingexpression.integration.ml; +package com.yahoo.searchlib.rankingexpression.integration.ml.importer; import com.yahoo.searchlib.rankingexpression.integration.ml.importer.OrderedTensorType; import org.junit.Test; |