diff options
Diffstat (limited to 'searchlib')
12 files changed, 33122 insertions, 8698 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/OperationMapper.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/OperationMapper.java index 38367252a94..85452d16a77 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/OperationMapper.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/OperationMapper.java @@ -2,14 +2,26 @@ package com.yahoo.searchlib.rankingexpression.integration.tensorflow; import com.google.common.collect.ImmutableList; +import com.yahoo.searchlib.rankingexpression.RankingExpression; +import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue; +import com.yahoo.searchlib.rankingexpression.rule.ArithmeticNode; +import com.yahoo.searchlib.rankingexpression.rule.ArithmeticOperator; +import com.yahoo.searchlib.rankingexpression.rule.ComparisonNode; +import com.yahoo.searchlib.rankingexpression.rule.ConstantNode; +import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode; +import com.yahoo.searchlib.rankingexpression.rule.GeneratorLambdaFunctionNode; import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; import com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode; +import com.yahoo.searchlib.rankingexpression.rule.TruthOperator; import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.VariableTensor; +import com.yahoo.tensor.functions.Generate; import com.yahoo.tensor.functions.Join; import com.yahoo.tensor.functions.Matmul; +import com.yahoo.tensor.functions.Reduce; import com.yahoo.tensor.functions.Rename; +import com.yahoo.tensor.functions.ScalarFunctions; import com.yahoo.tensor.functions.Softmax; import com.yahoo.tensor.functions.TensorFunction; import org.tensorflow.SavedModelBundle; @@ -18,9 +30,12 @@ import org.tensorflow.framework.AttrValue; import org.tensorflow.framework.NodeDef; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.function.DoubleBinaryOperator; import java.util.function.DoubleUnaryOperator; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; /** * Contains mappings of TensorFlow operations to the corresponding Vespa tensor functions. @@ -50,32 +65,42 @@ class OperationMapper { ensureArguments(2, arguments, "join"); TypedTensorFunction a = arguments.get(0); TypedTensorFunction b = arguments.get(1); - if (a.type().rank() < b.type().rank()) - throw new IllegalArgumentException("Attempt to join " + a.type() + " and " + b.type() + ", " + - "but this is not supported when the second argument has a higher rank"); - TensorFunction bFunction = b.function(); + if (a.type().rank() == 0 && b.type().rank() > 0) { + return new TypedTensorFunction(b.type(), new Join(a.function(), b.function(), doubleFunction)); + } + if (b.type().rank() == 0 && a.type().rank() > 0) { + return new TypedTensorFunction(a.type(), new Join(a.function(), b.function(), doubleFunction)); + } + if (a.type().rank() == b.type().rank()) { + return new TypedTensorFunction(a.type(), new Join(a.function(), b.function(), doubleFunction)); + } + + // Well now we have entered the wonderful world of "broadcasting" + // https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html + // I'm not able to extract from that any unambiguous specification of which dimensions + // should be "stretched" when the tensor do not have the same number of dimensions. + // From trying this with TensorFlow it appears that the second tensor is matched to the + // "end" (highest numbered) dimensions of the first, but I'm not sure whether this is generally true. + // Anyway, we move the dimensions of b to the last dimensions of a (instead of by default, the first). if (a.type().rank() > b.type().rank()) { - // Well now we have entered the wonderful world of "broadcasting" - // https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html - // I'm not able to extract from that any unambiguous specification of which dimensions - // should be "stretched" when the tensor do not have the same number of dimensions. - // From trying this with TensorFlow it appears that the second tensor is matched to the - // "end" (highest numbered) dimensions of the first, but I'm not sure whether this is generally true. - // Anyway, we move the dimensions of b to the last dimensions of a (instead of by default, the first). - List<String> renameFrom = new ArrayList<>(); - List<String> renameTo = new ArrayList<>(); - int sizeDifference = a.type().rank() - b.type().rank(); - for (int i = 0; i < b.type().rank(); i++) { - renameFrom.add(b.type().dimensions().get(i).name()); - renameTo.add("d" + (sizeDifference + i)); - } - bFunction = new Rename(bFunction, renameFrom, renameTo); + TensorFunction renameFunction = renameForBroadcast(a, b); + return new TypedTensorFunction(a.type(), new Join(a.function(), renameFunction, doubleFunction)); } + TensorFunction renameFunction = renameForBroadcast(b, a); + return new TypedTensorFunction(b.type(), new Join(renameFunction, b.function(), doubleFunction)); + } - Join function = new Join(a.function(), bFunction, doubleFunction); - return new TypedTensorFunction(a.type(), function); // output type is a type by TF definition and a.rank>=b.rank + private TensorFunction renameForBroadcast(TypedTensorFunction a, TypedTensorFunction b) { + List<String> renameFrom = new ArrayList<>(); + List<String> renameTo = new ArrayList<>(); + int sizeDifference = a.type().rank() - b.type().rank(); + for (int i = 0; i < b.type().rank(); i++) { + renameFrom.add(b.type().dimensions().get(i).name()); + renameTo.add("d" + (sizeDifference + i)); + } + return new Rename(b.function(), renameFrom, renameTo); } TypedTensorFunction map(List<TypedTensorFunction> arguments, DoubleUnaryOperator doubleFunction) { @@ -97,27 +122,53 @@ class OperationMapper { return new TypedTensorFunction(type, new VariableTensor(name)); } + TypedTensorFunction placeholderWithDefault(NodeDef tfNode, SavedModelBundle model, TensorFlowModel result) { + String name = tfNode.getInput(0); + Tensor defaultValue = getConstantTensor(model, name); + result.constant(name, defaultValue); + result.macro(name, new RankingExpression(name, new ReferenceNode("constant(\"" + name + "\")"))); + // The default value will be provided by the macro. Users can override macro to change value. + return new TypedTensorFunction(defaultValue.type(), new VariableTensor(name)); + } + + TypedTensorFunction constant(NodeDef tfNode, SavedModelBundle model, TensorFlowModel result) { + String name = tfNode.getName(); + if (tfNode.getInputList().size() != 0) { + throw new IllegalArgumentException("A constant node must have zero inputs but '" + name + "' has " + + tfNode.getInputList().size()); + } + return importConstantTensor(tfNode, model, result, name); + } + TypedTensorFunction identity(NodeDef tfNode, SavedModelBundle model, TensorFlowModel result) { if ( ! tfNode.getName().endsWith("/read")) throw new IllegalArgumentException("Encountered identity node " + tfNode.getName() + ", but identify " + "nodes are only supported when reading variables"); if (tfNode.getInputList().size() != 1) - throw new IllegalArgumentException("A Variable/read node must have one input but has " + - tfNode.getInputList().size()); + throw new IllegalArgumentException("A Variable/read node must have one input but '" + + tfNode.getName() + "' has " + tfNode.getInputList().size()); String name = tfNode.getInput(0); + return importConstantTensor(tfNode, model, result, name); + } + + private TypedTensorFunction importConstantTensor(NodeDef tfNode, SavedModelBundle model, TensorFlowModel result, String name) { AttrValue shapes = tfNode.getAttrMap().get("_output_shapes"); if (shapes == null) - throw new IllegalArgumentException("Referenced variable '" + name + "' is missing a tensor output shape"); - Session.Runner fetched = model.session().runner().fetch(name); - List<org.tensorflow.Tensor<?>> importedTensors = fetched.run(); - if ( importedTensors.size() != 1) - throw new IllegalStateException("Expected 1 tensor from reading Variable " + name + ", but got " + - importedTensors.size()); - Tensor constant = tensorConverter.toVespaTensor(importedTensors.get(0)); + throw new IllegalArgumentException("'" + name + "' is missing a tensor shape"); + Tensor constant = getConstantTensor(model, name); result.constant(name, constant); return new TypedTensorFunction(constant.type(), - new TensorFunctionNode.TensorFunctionExpressionNode(new ReferenceNode("constant(\"" + name + "\")"))); + new TensorFunctionNode.TensorFunctionExpressionNode(new ReferenceNode("constant(\"" + name + "\")"))); + } + + private Tensor getConstantTensor(SavedModelBundle model, String name) { + Session.Runner fetched = model.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 tensorConverter.toVespaTensor(importedTensors.get(0)); } TypedTensorFunction matmul(List<TypedTensorFunction> arguments) { @@ -143,6 +194,222 @@ class OperationMapper { new Rename(matmul, afterLastDim, "d1")); } + TypedTensorFunction mean(NodeDef tfNode, SavedModelBundle model, List<TypedTensorFunction> arguments) { + ensureArguments(2, arguments, "mean"); + Tensor reductionIndices = getConstantTensor(model, tfNode.getInput(1)); + + TensorFunction inputFunction = arguments.get(0).function(); + TensorType inputType = arguments.get(0).type(); + + List<String> reduceDimensions = new ArrayList<>(); + for (Iterator<Tensor.Cell> cellIterator = reductionIndices.cellIterator(); cellIterator.hasNext();) { + Tensor.Cell cell = cellIterator.next(); + int dimensionIndex = cell.getValue().intValue(); + if (dimensionIndex < 0) { + dimensionIndex = inputType.dimensions().size() - dimensionIndex; + } + reduceDimensions.add(inputType.dimensions().get(dimensionIndex).name()); + } + + TensorType outputType = Reduce.outputType(inputType, reduceDimensions); + TensorFunction outputFunction = new Reduce(inputFunction, Reduce.Aggregator.avg, reduceDimensions); + + if (shouldKeepDimensions(tfNode)) { + return reshape(outputFunction, outputType, keepDimensionType(inputType, reduceDimensions)); + } + + TypedTensorFunction output = checkNamingConvention(outputType, outputFunction); + return output; + } + + private boolean shouldKeepDimensions(NodeDef tfNode) { + AttrValue keepDimsAttr = tfNode.getAttrMap().get("keep_dims"); + return keepDimsAttr != null && keepDimsAttr.getB(); + } + + private TensorType keepDimensionType(TensorType inputType, List<String> reduceDimensions) { + TensorType.Builder builder = new TensorType.Builder(); + for (TensorType.Dimension dimension: inputType.dimensions()) { + String name = dimension.name(); + Long size = dimensionSize(dimension); + if (reduceDimensions.contains(name)) { + size = 1L; + } + builder.indexed(name, size); + } + return builder.build(); + } + + private TypedTensorFunction checkNamingConvention(TensorType type, TensorFunction function) { + for (int i = 0; i < type.dimensions().size(); ++i) { + String correct = String.format("d%d", i); + String current = type.dimensions().get(i).name(); + if (!current.equals(correct)) { + return fixNamingConvention(type, function); + } + } + return new TypedTensorFunction(type, function); + } + + private TypedTensorFunction fixNamingConvention(TensorType type, TensorFunction function) { + TensorType.Builder correctType = new TensorType.Builder(); + List<String> from = new ArrayList<>(); + List<String> to = new ArrayList<>(); + for (int i = 0; i < type.dimensions().size(); ++i) { + String correct = String.format("d%d", i); + String current = type.dimensions().get(i).name(); + if (!current.equals(correct)) { + from.add(current); + to.add(correct); + } + correctType.indexed(correct, dimensionSize(type.dimensions().get(i))); + } + if (from.size() > 0) { + function = new Rename(function, from, to); + type = correctType.build(); + } + return new TypedTensorFunction(type, function); + } + + TypedTensorFunction noOp(List<TypedTensorFunction> arguments) { + ensureArguments(1, arguments, "noOp"); + return arguments.get(0); + } + + TypedTensorFunction expandDims(NodeDef tfNode, SavedModelBundle model, List<TypedTensorFunction> arguments) { + ensureArguments(2, arguments, "expandDims"); + Tensor axis = getConstantTensor(model, tfNode.getInput(1)); + if (axis.type().rank() != 0) { + throw new IllegalArgumentException("Axis argument to ExpandDims must be a scalar"); + } + + TensorFunction inputFunction = arguments.get(0).function(); + TensorType inputType = arguments.get(0).type(); + + int dimensionToInsert = (int)axis.asDouble(); + if (dimensionToInsert < 0) { + dimensionToInsert = inputType.dimensions().size() - dimensionToInsert; + } + + TensorType.Builder outputTypeBuilder = new TensorType.Builder(); + int dimensionIndex = 0; + for (int i = 0; i < inputType.dimensions().size() + 1; ++i) { + String name = String.format("temp_%d", i); + Long size; + if (i == dimensionToInsert) { + size = 1L; + } else { + size = dimensionSize(inputType.dimensions().get(dimensionIndex)); + dimensionIndex++; + } + outputTypeBuilder.indexed(name, size); + } + + return reshape(inputFunction, inputType, outputTypeBuilder.build()); + } + + TypedTensorFunction reshape(NodeDef tfNode, SavedModelBundle model, List<TypedTensorFunction> arguments) { + ensureArguments(2, arguments, "reshape"); + Tensor shape = getConstantTensor(model, tfNode.getInput(1)); + + TensorFunction inputFunction = arguments.get(0).function(); + TensorType inputType = arguments.get(0).type(); + + TensorType.Builder outputTypeBuilder = new TensorType.Builder(); + int dimensionIndex = 0; + for (Iterator<Tensor.Cell> cellIterator = shape.cellIterator(); cellIterator.hasNext();) { + Tensor.Cell cell = cellIterator.next(); + int size = cell.getValue().intValue(); + if (size < 0) { + size = -1 * (int)shape.reduce(Reduce.Aggregator.prod).asDouble() / tensorSize(inputType).intValue(); + } + outputTypeBuilder.indexed(String.format("temp_%d", dimensionIndex), size); + dimensionIndex++; + } + return reshape(inputFunction, inputType, outputTypeBuilder.build()); + } + + private TypedTensorFunction reshape(TensorFunction inputFunction, TensorType inputType, TensorType outputType) { + if (!tensorSize(inputType).equals(tensorSize(outputType))) { + throw new IllegalArgumentException("New and old shape of tensor must have the same size when reshaping"); + } + + // Conceptually, reshaping consists on unrolling a tensor to an array using the dimension order, + // then use the dimension order of the new shape to roll back into a tensor. + // Here we create a transformation tensor that is multiplied with the from tensor to map into + // the new shape. We have to introduce temporary dimension names and rename back if dimension names + // in the new and old tensor type overlap. + + ExpressionNode unrollFrom = unrollTensorExpression(inputType); + ExpressionNode unrollTo = unrollTensorExpression(outputType); + ExpressionNode transformExpression = new ComparisonNode(unrollFrom, TruthOperator.EQUAL, unrollTo); + + TensorType transformationType = new TensorType.Builder(inputType, outputType).build(); + Generate transformTensor = new Generate(transformationType, + new GeneratorLambdaFunctionNode(transformationType, transformExpression).asLongListToDoubleOperator()); + + TensorFunction outputFunction = new Reduce( + new Join(inputFunction, transformTensor, ScalarFunctions.multiply()), + Reduce.Aggregator.sum, + inputType.dimensions().stream().map(TensorType.Dimension::name).collect(Collectors.toList())); + TypedTensorFunction output = checkNamingConvention(outputType, outputFunction); + return output; + } + + private ExpressionNode unrollTensorExpression(TensorType type) { + if (type.rank() == 0) { + return new ConstantNode(DoubleValue.zero); + } + List<ExpressionNode> children = new ArrayList<>(); + List<ArithmeticOperator> operators = new ArrayList<>(); + int size = 1; + for (int i = type.dimensions().size() - 1; i >= 0; --i) { + TensorType.Dimension dimension = type.dimensions().get(i); + children.add(0, new ReferenceNode(dimension.name())); + if (size > 1) { + operators.add(0, ArithmeticOperator.MULTIPLY); + children.add(0, new ConstantNode(new DoubleValue(size))); + } + size *= dimensionSize(dimension); + if (i > 0) { + operators.add(0, ArithmeticOperator.PLUS); + } + } + return new ArithmeticNode(children, operators); + } + + TypedTensorFunction select(NodeDef tfNode, SavedModelBundle model, TensorFlowModel result, List<TypedTensorFunction> arguments) { + ensureArguments(3, arguments, "select"); + Tensor condition = getConstantTensor(model, tfNode.getInput(0)); + + TypedTensorFunction x = arguments.get(1); + TypedTensorFunction y = arguments.get(2); + if ((x.type().rank() != y.type().rank()) || !(tensorSize(x.type()).equals(tensorSize(y.type())))) { + throw new IllegalArgumentException("'Select': input tensors must have the same shape"); + } + + if (condition.type().rank() == 0) { + return (int)condition.asDouble() == 0 ? y : x; + } + if (condition.type().rank() == 1 && dimensionSize(condition.type().dimensions().get(0)) == 1) { + return condition.cellIterator().next().getValue().intValue() == 0 ? y : x; + } + + // The task is to select cells from 'x' or 'y' based on 'condition'. + // If 'condition' is 0 (false), select from 'y', if 1 (true) select + // from 'x'. We do this by individually joining 'x' and 'y' with + // 'condition', and then joining the resulting two tensors. + + TypedTensorFunction conditionFunction = importConstantTensor(tfNode, model, result, tfNode.getInput(0)); + TensorFunction xCond = new Join(x.function(), conditionFunction.function(), ScalarFunctions.multiply()); + TensorFunction yCond = new Join(y.function(), conditionFunction.function(), new DoubleBinaryOperator() { + @Override public double applyAsDouble(double a, double b) { return a * (1.0 - b); } + @Override public String toString() { return "f(a,b)(a * (1-b))"; } + }); + TensorFunction outputFunction = new Join(xCond, yCond, ScalarFunctions.add()); + return new TypedTensorFunction(x.type(), outputFunction); + } + TypedTensorFunction softmax(List<TypedTensorFunction> arguments) { ensureArguments(1, arguments, "softmax"); TypedTensorFunction a = arguments.get(0); @@ -152,6 +419,50 @@ class OperationMapper { return new TypedTensorFunction(Softmax.outputType(a.type(), dimension), softmax); } + TypedTensorFunction squeeze(NodeDef tfNode, List<TypedTensorFunction> arguments) { + ensureArguments(1, arguments, "squeeze"); + + TensorFunction inputFunction = arguments.get(0).function(); + TensorType inputType = arguments.get(0).type(); + List<String> squeezeDimensions; + + AttrValue squeezeDimsAttr = tfNode.getAttrMap().get("squeeze_dims"); + if (squeezeDimsAttr == null) { + squeezeDimensions = inputType.dimensions().stream(). + filter(dim -> dimensionSize(dim) == 1). + map(TensorType.Dimension::name). + collect(Collectors.toList()); + } else { + squeezeDimensions = squeezeDimsAttr.getList().getIList().stream(). + map(i -> i < 0 ? inputType.dimensions().size() - i : i). + map(i -> inputType.dimensions().get(i.intValue())). + filter(dim -> dimensionSize(dim) == 1). + map(TensorType.Dimension::name). + collect(Collectors.toList()); + } + + if (squeezeDimensions.isEmpty()) { + return arguments.get(0); + } + + TensorFunction outputFunction = new Reduce(inputFunction, Reduce.Aggregator.sum, squeezeDimensions); + TensorType outputType = Reduce.outputType(inputType, squeezeDimensions); + TypedTensorFunction output = checkNamingConvention(outputType, outputFunction); + return output; + } + + private Long tensorSize(TensorType type) { + Long size = 1L; + for (TensorType.Dimension dimension : type.dimensions()) { + size *= dimensionSize(dimension); + } + return size; + } + + private Long dimensionSize(TensorType.Dimension dim) { + return dim.size().orElseThrow(() -> new IllegalArgumentException("Dimension has no size")); + } + private void ensureArguments(int count, List<TypedTensorFunction> arguments, String operationName) { if ( arguments.size() != count) throw new IllegalArgumentException("Expected " + count + " arguments to " + operationName + diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorConverter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorConverter.java index cabc1138b5b..ca880e6f310 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorConverter.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorConverter.java @@ -5,8 +5,12 @@ import com.yahoo.tensor.IndexedTensor; import com.yahoo.tensor.Tensor; import com.yahoo.tensor.TensorType; +import java.nio.ByteBuffer; import java.nio.DoubleBuffer; import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; + /** * @author bratseth @@ -36,7 +40,10 @@ public class TensorConverter { switch (tfTensor.dataType()) { case DOUBLE: return new DoubleValues(tfTensor); case FLOAT: return new FloatValues(tfTensor); - // TODO: The rest + case BOOL: return new BoolValues(tfTensor); + case UINT8: return new IntValues(tfTensor); + case INT32: return new IntValues(tfTensor); + case INT64: return new LongValues(tfTensor); default: throw new IllegalArgumentException("Cannot convert a tensor with elements of type " + tfTensor.dataType() + " to a Vespa tensor"); @@ -92,4 +99,54 @@ public class TensorConverter { } + private static class BoolValues extends Values { + + 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 Values { + + 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 Values { + + 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); + } + + } } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowImporter.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowImporter.java index a8cb5e6e1c7..b9e244a3e08 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowImporter.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowImporter.java @@ -117,20 +117,49 @@ public class TensorFlowImporter { } } + + private TypedTensorFunction tensorFunctionOf(NodeDef tfNode, GraphDef graph, SavedModelBundle model, TensorFlowModel result) { // Import arguments lazily below, as some nodes have arguments unused arguments leading to unsupported ops // TODO: Implement mapping of more functions from https://www.tensorflow.org/api_docs/python/ switch (tfNode.getOp().toLowerCase()) { - case "add" : case "add_n" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.add()); - case "acos" : return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.acos()); - case "elu": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.elu()); + // array ops + case "const" : return operationMapper.constant(tfNode, model, result); + case "expanddims" : return operationMapper.expandDims(tfNode, model, importArguments(tfNode, graph, model, result)); case "identity" : return operationMapper.identity(tfNode, model, result); case "placeholder" : return operationMapper.placeholder(tfNode, result); - case "relu": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.relu()); + case "placeholderwithdefault" : return operationMapper.placeholderWithDefault(tfNode, model, result); + case "reshape" : return operationMapper.reshape(tfNode, model, importArguments(tfNode, graph, model, result)); + case "squeeze" : return operationMapper.squeeze(tfNode, importArguments(tfNode, graph, model, result)); + + // math ops + case "add" : case "add_n" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.add()); + case "acos" : return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.acos()); case "matmul" : return operationMapper.matmul(importArguments(tfNode, graph, model, result)); + case "maximum" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.max()); + case "mean" : case "reducemean": return operationMapper.mean(tfNode, model, importArguments(tfNode, graph, model, result)); + case "multiply": case "mul" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.multiply()); + case "rsqrt": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.rsqrt()); + case "where3": case "select" : return operationMapper.select(tfNode, model, result, importArguments(tfNode, graph, model, result)); case "sigmoid": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.sigmoid()); + case "squareddifference" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.squareddifference()); + case "subtract" : case "sub" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.subtract()); + + // nn ops + case "biasadd" : return operationMapper.join(importArguments(tfNode, graph, model, result), ScalarFunctions.add()); + case "elu": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.elu()); + case "relu": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.relu()); + case "selu": return operationMapper.map(importArguments(tfNode, graph, model, result), ScalarFunctions.selu()); case "softmax" : return operationMapper.softmax(importArguments(tfNode, graph, model, result)); - default : throw new IllegalArgumentException("Conversion of TensorFlow operation '" + tfNode.getOp() + "' is not supported"); + + // evaluation no-ops + case "stopgradient" : + case "noop": + return operationMapper.noOp(importArguments(tfNode, graph, model, result)); + + // not supported + default : + throw new IllegalArgumentException("Conversion of TensorFlow operation '" + tfNode.getOp() + "' is not supported (" + tfNode.getName() + ")"); } } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowModel.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowModel.java index 9fdc45ab3bc..1a6c93384ea 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowModel.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorFlowModel.java @@ -24,10 +24,12 @@ public class TensorFlowModel { private final Map<String, TensorType> arguments = new HashMap<>(); private final Map<String, Tensor> constants = new HashMap<>(); private final Map<String, RankingExpression> expressions = new HashMap<>(); + private final Map<String, RankingExpression> macros = new HashMap<>(); void argument(String name, TensorType argumentType) { arguments.put(name, argumentType); } void constant(String name, Tensor constant) { constants.put(name, constant); } void expression(String name, RankingExpression expression) { expressions.put(name, expression); } + void macro(String name, RankingExpression expression) { macros.put(name, expression); } /** Returns the given signature. If it does not already exist it is added to this. */ Signature signature(String name) { @@ -47,6 +49,11 @@ public class TensorFlowModel { */ public Map<String, RankingExpression> expressions() { return Collections.unmodifiableMap(expressions); } + /** + * Returns an immutable map of expressions that can be overridden - such as PlaceholderWithDefault/ + */ + public Map<String, RankingExpression> macros() { return Collections.unmodifiableMap(macros); } + /** Returns an immutable map of the signatures of this */ public Map<String, Signature> signatures() { return Collections.unmodifiableMap(signatures); } diff --git a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/saved_model.pbtxt b/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/saved_model.pbtxt deleted file mode 100644 index c8f7ecf11f8..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/saved_model.pbtxt +++ /dev/null @@ -1,8550 +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: "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: "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: "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: "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: "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: "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: "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: "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: "X" - 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/Elu" - op: "Elu" - 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/Elu" - 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/Relu" - op: "Relu" - 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/hidden3/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(\000\000\000" - } - } - } - } - node { - name: "dnn/hidden3/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/hidden3/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/hidden3/truncated_normal/TruncatedNormal" - op: "TruncatedNormal" - input: "dnn/hidden3/truncated_normal/shape" - attr { - key: "T" - value { - type: DT_INT32 - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "seed" - value { - i: 0 - } - } - attr { - key: "seed2" - value { - i: 0 - } - } - } - node { - name: "dnn/hidden3/truncated_normal/mul" - op: "Mul" - input: "dnn/hidden3/truncated_normal/TruncatedNormal" - input: "dnn/hidden3/truncated_normal/stddev" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "dnn/hidden3/truncated_normal" - op: "Add" - input: "dnn/hidden3/truncated_normal/mul" - input: "dnn/hidden3/truncated_normal/mean" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "dnn/hidden3/weights" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden3/weights/Assign" - op: "Assign" - input: "dnn/hidden3/weights" - input: "dnn/hidden3/truncated_normal" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden3/weights/read" - op: "Identity" - input: "dnn/hidden3/weights" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "dnn/hidden3/zeros" - op: "Const" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_FLOAT - tensor_shape { - dim { - size: 40 - } - } - float_val: 0.0 - } - } - } - } - node { - name: "dnn/hidden3/bias" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 40 - } - } - } - } - attr { - key: "shared_name" - value { - s: "" - } - } - } - node { - name: "dnn/hidden3/bias/Assign" - op: "Assign" - input: "dnn/hidden3/bias" - input: "dnn/hidden3/zeros" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: true - } - } - attr { - key: "validate_shape" - value { - b: true - } - } - } - node { - name: "dnn/hidden3/bias/read" - op: "Identity" - input: "dnn/hidden3/bias" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - } - node { - name: "dnn/hidden3/MatMul" - op: "MatMul" - input: "dnn/hidden2/Relu" - input: "dnn/hidden3/weights/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: false - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "dnn/hidden3/add" - op: "Add" - input: "dnn/hidden3/MatMul" - input: "dnn/hidden3/bias/read" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "dnn/hidden3/Sigmoid" - op: "Sigmoid" - input: "dnn/hidden3/add" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 40 - } - } - } - } - } - } - 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: "(\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.3162277638912201 - } - } - } - } - 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: 40 - } - 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: 40 - } - 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: 40 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "dnn/outputs/weights" - op: "VariableV2" - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - dim { - size: 10 - } - } - } - } - } - attr { - key: "container" - value { - s: "" - } - } - attr { - key: "dtype" - value { - type: DT_FLOAT - } - } - attr { - key: "shape" - value { - shape { - dim { - size: 40 - } - 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: 40 - } - 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: 40 - } - 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/hidden3/Sigmoid" - 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: 40 - } - } - } - } - } - 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/hidden3/Sigmoid" - 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: 40 - } - 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: 40 - } - } - } - } - } - } - 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: 40 - } - dim { - size: 10 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/Sigmoid_grad/SigmoidGrad" - op: "SigmoidGrad" - input: "dnn/hidden3/Sigmoid" - input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/add_grad/Shape" - op: "Shape" - input: "dnn/hidden3/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/hidden3/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: 40 - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/add_grad/BroadcastGradientArgs" - op: "BroadcastGradientArgs" - input: "train/gradients/dnn/hidden3/add_grad/Shape" - input: "train/gradients/dnn/hidden3/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/hidden3/add_grad/Sum" - op: "Sum" - input: "train/gradients/dnn/hidden3/Sigmoid_grad/SigmoidGrad" - input: "train/gradients/dnn/hidden3/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/hidden3/add_grad/Reshape" - op: "Reshape" - input: "train/gradients/dnn/hidden3/add_grad/Sum" - input: "train/gradients/dnn/hidden3/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: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/add_grad/Sum_1" - op: "Sum" - input: "train/gradients/dnn/hidden3/Sigmoid_grad/SigmoidGrad" - input: "train/gradients/dnn/hidden3/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/hidden3/add_grad/Reshape_1" - op: "Reshape" - input: "train/gradients/dnn/hidden3/add_grad/Sum_1" - input: "train/gradients/dnn/hidden3/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: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/add_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden3/add_grad/Reshape" - input: "^train/gradients/dnn/hidden3/add_grad/Reshape_1" - } - node { - name: "train/gradients/dnn/hidden3/add_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden3/add_grad/Reshape" - input: "^train/gradients/dnn/hidden3/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden3/add_grad/Reshape" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/add_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden3/add_grad/Reshape_1" - input: "^train/gradients/dnn/hidden3/add_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden3/add_grad/Reshape_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/MatMul_grad/MatMul" - op: "MatMul" - input: "train/gradients/dnn/hidden3/add_grad/tuple/control_dependency" - input: "dnn/hidden3/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/hidden3/MatMul_grad/MatMul_1" - op: "MatMul" - input: "dnn/hidden2/Relu" - input: "train/gradients/dnn/hidden3/add_grad/tuple/control_dependency" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "transpose_a" - value { - b: true - } - } - attr { - key: "transpose_b" - value { - b: false - } - } - } - node { - name: "train/gradients/dnn/hidden3/MatMul_grad/tuple/group_deps" - op: "NoOp" - input: "^train/gradients/dnn/hidden3/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden3/MatMul_grad/MatMul_1" - } - node { - name: "train/gradients/dnn/hidden3/MatMul_grad/tuple/control_dependency" - op: "Identity" - input: "train/gradients/dnn/hidden3/MatMul_grad/MatMul" - input: "^train/gradients/dnn/hidden3/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden3/MatMul_grad/MatMul" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: -1 - } - dim { - size: 100 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden3/MatMul_grad/tuple/control_dependency_1" - op: "Identity" - input: "train/gradients/dnn/hidden3/MatMul_grad/MatMul_1" - input: "^train/gradients/dnn/hidden3/MatMul_grad/tuple/group_deps" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@train/gradients/dnn/hidden3/MatMul_grad/MatMul_1" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - } - node { - name: "train/gradients/dnn/hidden2/Relu_grad/ReluGrad" - op: "ReluGrad" - input: "train/gradients/dnn/hidden3/MatMul_grad/tuple/control_dependency" - input: "dnn/hidden2/Relu" - 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/Relu_grad/ReluGrad" - 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/Relu_grad/ReluGrad" - 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/Elu" - 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/Elu_grad/EluGrad" - op: "EluGrad" - input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency" - input: "dnn/hidden1/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/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/dnn/hidden1/Elu_grad/EluGrad" - 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/dnn/hidden1/Elu_grad/EluGrad" - 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: "X" - 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/hidden3/weights/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden3/weights" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden3/MatMul_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - attr { - key: "use_locking" - value { - b: false - } - } - } - node { - name: "train/GradientDescent/update_dnn/hidden3/bias/ApplyGradientDescent" - op: "ApplyGradientDescent" - input: "dnn/hidden3/bias" - input: "train/GradientDescent/learning_rate" - input: "train/gradients/dnn/hidden3/add_grad/tuple/control_dependency_1" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - 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: 40 - } - 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/hidden3/weights/ApplyGradientDescent" - input: "^train/GradientDescent/update_dnn/hidden3/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/hidden3/weights/Assign" - input: "^dnn/hidden3/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_b37397c1a53b45c6ad354497f210d9d4/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: 8 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 8 - } - } - string_val: "dnn/hidden1/bias" - string_val: "dnn/hidden1/weights" - string_val: "dnn/hidden2/bias" - string_val: "dnn/hidden2/weights" - string_val: "dnn/hidden3/bias" - string_val: "dnn/hidden3/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: 8 - } - } - } - } - } - attr { - key: "dtype" - value { - type: DT_STRING - } - } - attr { - key: "value" - value { - tensor { - dtype: DT_STRING - tensor_shape { - dim { - size: 8 - } - } - 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: "dnn/hidden1/bias" - input: "dnn/hidden1/weights" - input: "dnn/hidden2/bias" - input: "dnn/hidden2/weights" - input: "dnn/hidden3/bias" - input: "dnn/hidden3/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 - 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/hidden3/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/hidden3/bias" - input: "save/RestoreV2_4" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/bias" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 40 - } - } - } - } - } - 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/hidden3/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/hidden3/weights" - input: "save/RestoreV2_5" - attr { - key: "T" - value { - type: DT_FLOAT - } - } - attr { - key: "_class" - value { - list { - s: "loc:@dnn/hidden3/weights" - } - } - } - attr { - key: "_output_shapes" - value { - list { - shape { - dim { - size: 100 - } - dim { - size: 40 - } - } - } - } - } - 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: "dnn/outputs/bias" - } - } - } - } - 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: "dnn/outputs/bias" - input: "save/RestoreV2_6" - 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_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: "dnn/outputs/weights" - } - } - } - } - 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: "dnn/outputs/weights" - input: "save/RestoreV2_7" - 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: 40 - } - 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" - } - 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/hidden3/weights:0\022\032dnn/hidden3/weights/Assign\032\032dnn/hidden3/weights/read:02\036dnn/hidden3/truncated_normal:0" - value: "\n\022dnn/hidden3/bias:0\022\027dnn/hidden3/bias/Assign\032\027dnn/hidden3/bias/read:02\023dnn/hidden3/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/hidden3/weights:0\022\032dnn/hidden3/weights/Assign\032\032dnn/hidden3/weights/read:02\036dnn/hidden3/truncated_normal:0" - value: "\n\022dnn/hidden3/bias:0\022\027dnn/hidden3/bias/Assign\032\027dnn/hidden3/bias/read:02\023dnn/hidden3/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: "X: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/3_layer_mnist/saved/variables/variables.data-00000-of-00001 b/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/variables/variables.data-00000-of-00001 Binary files differdeleted file mode 100644 index e286d3bb9de..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/variables/variables.data-00000-of-00001 +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/variables/variables.index b/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/variables/variables.index Binary files differdeleted file mode 100644 index 7643ec22a7d..00000000000 --- a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/saved/variables/variables.index +++ /dev/null diff --git a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/mnist.py b/searchlib/src/test/files/integration/tensorflow/batch_norm/batch_normalization_mnist.py index 090ab2a9b81..bc6ea13ebc1 100644 --- a/searchlib/src/test/files/integration/tensorflow/3_layer_mnist/mnist.py +++ b/searchlib/src/test/files/integration/tensorflow/batch_norm/batch_normalization_mnist.py @@ -1,8 +1,8 @@ +# 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 functools import partial from tensorflow.examples.tutorials.mnist import input_data from datetime import datetime @@ -23,32 +23,29 @@ n_hidden3 = 40 n_outputs = 10 learning_rate = 0.01 -n_epochs = 40 -batch_size = 50 +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) -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 +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) -with tf.name_scope("dnn"): - hidden1 = neuron_layer(X, n_hidden1, name="hidden1", activation=tf.nn.elu) - hidden2 = neuron_layer(hidden1, n_hidden2, name="hidden2", activation=tf.nn.relu) - hidden3 = neuron_layer(hidden2, n_hidden3, name="hidden3", activation=tf.nn.sigmoid) - logits = neuron_layer(hidden3, n_outputs, name="outputs") #, activation=tf.nn.sigmoid) + 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) @@ -65,21 +62,23 @@ with tf.name_scope("eval"): 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, feed_dict={X: X_batch, y: y_batch}) - acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch}) - acc_val = accuracy.eval(feed_dict={X: mnist.validation.images, - y: mnist.validation.labels}) - print(epoch, "Train accuracy:", acc_train, "Val accuracy:", acc_val) + 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}) + y: mnist.validation.labels}) file_writer.add_summary(summary_str, epoch) export_path = "saved" @@ -93,3 +92,4 @@ with tf.Session() as sess: 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 new file mode 100644 index 00000000000..f3ce68a1cbd --- /dev/null +++ b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/saved_model.pbtxt @@ -0,0 +1,32648 @@ +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 differnew file mode 100644 index 00000000000..875e8361e10 --- /dev/null +++ b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 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 differnew file mode 100644 index 00000000000..46c7b258cf5 --- /dev/null +++ b/searchlib/src/test/files/integration/tensorflow/batch_norm/saved/variables/variables.index diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorflowImportTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorflowImportTestCase.java index cb0ccad100b..13d042ee5dd 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorflowImportTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/integration/tensorflow/TensorflowImportTestCase.java @@ -71,99 +71,21 @@ public class TensorflowImportTestCase { } @Test - public void test3LayerMnistImport() { - String modelDir = "src/test/files/integration/tensorflow/3_layer_mnist/saved"; + public void testBatchNormImport() { + String modelDir = "src/test/files/integration/tensorflow/batch_norm/saved"; SavedModelBundle model = SavedModelBundle.load(modelDir, "serve"); TensorFlowModel result = new TensorFlowImporter().importModel(model); + TensorFlowModel.Signature signature = result.signature("serving_default"); - // Check constants - assertEquals(8, result.constants().size()); - - Tensor outputBias = result.constants().get("dnn/outputs/bias"); - assertNotNull(outputBias); - assertEquals(new TensorType.Builder().indexed("d0", 10).build(), outputBias.type()); - assertEquals(10, outputBias.size()); - - Tensor outputWeights = result.constants().get("dnn/outputs/weights"); - assertNotNull(outputWeights); - assertEquals(new TensorType.Builder().indexed("d0", 40).indexed("d1", 10).build(), outputWeights.type()); - assertEquals(400, outputWeights.size()); - - Tensor hidden3Bias = result.constants().get("dnn/hidden3/bias"); - assertNotNull(hidden3Bias); - assertEquals(new TensorType.Builder().indexed("d0", 40).build(), hidden3Bias.type()); - assertEquals(40, hidden3Bias.size()); - - Tensor hidden3Weights = result.constants().get("dnn/hidden3/weights"); - assertNotNull(hidden3Weights); - assertEquals(new TensorType.Builder().indexed("d0", 100).indexed("d1", 40).build(), hidden3Weights.type()); - assertEquals(4000, hidden3Weights.size()); - - Tensor hidden2Bias = result.constants().get("dnn/hidden2/bias"); - assertNotNull(hidden2Bias); - assertEquals(new TensorType.Builder().indexed("d0", 100).build(), hidden2Bias.type()); - assertEquals(100, hidden2Bias.size()); - - Tensor hidden2Weights = result.constants().get("dnn/hidden2/weights"); - assertNotNull(hidden2Weights); - assertEquals(new TensorType.Builder().indexed("d0", 300).indexed("d1", 100).build(), hidden2Weights.type()); - assertEquals(30000, hidden2Weights.size()); - - Tensor hidden1Bias = result.constants().get("dnn/hidden1/bias"); - assertNotNull(hidden1Bias); - assertEquals(new TensorType.Builder().indexed("d0", 300).build(), hidden1Bias.type()); - assertEquals(300, hidden1Bias.size()); - - Tensor hidden1Weights = result.constants().get("dnn/hidden1/weights"); - assertNotNull(hidden1Weights); - assertEquals(new TensorType.Builder().indexed("d0", 784).indexed("d1", 300).build(), hidden1Weights.type()); - assertEquals(235200, hidden1Weights.size()); - - // Check signatures - assertEquals(1, result.signatures().size()); - TensorFlowModel.Signature signature = result.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); + assertEquals("Has skipped outputs", 0, result.signature("serving_default").skippedOutputs().size()); - // ... signature outputs - assertEquals(1, signature.outputs().size()); RankingExpression output = signature.outputExpression("y"); assertNotNull(output); - assertEquals("dnn/outputs/add", output.getName()); - assertEquals("" + - "join(rename(reduce(join(map(join(rename(reduce(join(map(join(rename(reduce(join(map(join(rename(reduce(join(X, rename(constant(\"dnn/hidden1/weights\"), (d0, d1), (d1, d3)), f(a,b)(a * b)), sum, d1), d3, d1), rename(constant(\"dnn/hidden1/bias\"), d0, d1), f(a,b)(a + b)), f(a)(if (a < 0, exp(a) - 1, a))), rename(constant(\"dnn/hidden2/weights\"), (d0, d1), (d1, d3)), f(a,b)(a * b)), sum, d1), d3, d1), rename(constant(\"dnn/hidden2/bias\"), d0, d1), f(a,b)(a + b)), f(a)(max(0,a))), rename(constant(\"dnn/hidden3/weights\"), (d0, d1), (d1, d3)), f(a,b)(a * b)), sum, d1), d3, d1), rename(constant(\"dnn/hidden3/bias\"), d0, d1), f(a,b)(a + b)), f(a)(1 / (1 + exp(-a)))), rename(constant(\"dnn/outputs/weights\"), (d0, d1), (d1, d3)), f(a,b)(a * b)), sum, d1), d3, d1), rename(constant(\"dnn/outputs/bias\"), d0, d1), f(a,b)(a + b))", - toNonPrimitiveString(output)); - - // Test constants - assertEqualResult(model, result, "X", "dnn/hidden1/weights/read"); - assertEqualResult(model, result, "X", "dnn/hidden1/bias/read"); - assertEqualResult(model, result, "X", "dnn/hidden2/weights/read"); - assertEqualResult(model, result, "X", "dnn/hidden2/bias/read"); - assertEqualResult(model, result, "X", "dnn/hidden3/weights/read"); - assertEqualResult(model, result, "X", "dnn/hidden3/bias/read"); - assertEqualResult(model, result, "X", "dnn/outputs/weights/read"); - assertEqualResult(model, result, "X", "dnn/outputs/bias/read"); + assertEquals("dnn/batch_normalization_3/batchnorm/add_1", output.getName()); + assertEqualResult(model, result, "X", output.getName()); - // Test execution - assertEqualResult(model, result, "X", "dnn/hidden1/MatMul"); - assertEqualResult(model, result, "X", "dnn/hidden1/add"); - assertEqualResult(model, result, "X", "dnn/hidden1/Elu"); - assertEqualResult(model, result, "X", "dnn/hidden2/MatMul"); - assertEqualResult(model, result, "X", "dnn/hidden2/add"); - assertEqualResult(model, result, "X", "dnn/hidden2/Relu"); - assertEqualResult(model, result, "X", "dnn/hidden3/MatMul"); - assertEqualResult(model, result, "X", "dnn/hidden3/add"); - assertEqualResult(model, result, "X", "dnn/hidden3/Sigmoid"); - assertEqualResult(model, result, "X", "dnn/outputs/MatMul"); - assertEqualResult(model, result, "X", "dnn/outputs/add"); } - private void assertEqualResult(SavedModelBundle model, TensorFlowModel result, String inputName, String operationName) { Tensor tfResult = tensorFlowExecute(model, inputName, operationName); Context context = contextFrom(result); |