aboutsummaryrefslogtreecommitdiffstats
path: root/model-integration
diff options
context:
space:
mode:
authorLester Solbakken <lesters@oath.com>2021-10-04 13:38:42 +0200
committerLester Solbakken <lesters@oath.com>2021-10-04 13:38:42 +0200
commit765571b29407071271806bf95766f100dde82dd8 (patch)
tree573e62f6382dd5cec386b3c74b31acb8d87cf7f8 /model-integration
parentfed386f182a0b600a72b333bb308c15870c3f04e (diff)
Remove Java dependencies to tensorflow
Diffstat (limited to 'model-integration')
-rw-r--r--model-integration/README2
-rw-r--r--model-integration/pom.xml8
-rw-r--r--model-integration/src/main/config/model-integration.xml2
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java87
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java254
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java238
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java15
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java128
-rw-r--r--model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java59
-rw-r--r--model-integration/src/main/java/org/tensorflow/package-info.java7
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java40
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java153
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java43
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java116
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java28
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java43
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java28
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java30
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java79
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java29
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java73
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java173
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java61
-rw-r--r--model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java21
-rw-r--r--model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt1318
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py95
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt32648
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001bin1073000 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.indexbin686 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt14726
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001bin1579020 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/blog/saved/variables/variables.indexbin520 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/dropout.py44
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt2875
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.indexbin165 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt1368
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt1368
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt11403
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001bin48 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.indexbin393 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt959
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt8622
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001bin24 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.indexbin209 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pbbin170845 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001bin56124 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.indexbin896 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pbbin194189 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001bin56932 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.indexbin1046 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/external/train.py53
-rw-r--r--model-integration/src/test/models/tensorflow/external/train_embed.py66
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt7982
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001bin1066440 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.indexbin308 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist/simple_mnist.py98
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py90
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt5039
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt5039
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001bin31400 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt6172
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001bin86072 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test1/variables/variables.indexbin159 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt389
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt1999
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001bin72 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.indexbin155 -> 0 bytes
-rw-r--r--model-integration/src/test/models/tensorflow/softmax/softmax.py29
72 files changed, 2 insertions, 104097 deletions
diff --git a/model-integration/README b/model-integration/README
index 7b29ac16e34..a58d88dc311 100644
--- a/model-integration/README
+++ b/model-integration/README
@@ -4,5 +4,3 @@ This has two purposes
- Make converters (importers) available to config models while loading them in just a single instance even when
there are multiple config models.
- Make third party models directly available to the container.
-
-TensorFlow depends on JNI code which necessitates using a separate bundle to achieve the above. \ No newline at end of file
diff --git a/model-integration/pom.xml b/model-integration/pom.xml
index 62014ef174a..549cd07594f 100644
--- a/model-integration/pom.xml
+++ b/model-integration/pom.xml
@@ -60,14 +60,6 @@
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</dependency>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>proto</artifactId>
- </dependency>
- <dependency>
- <groupId>org.tensorflow</groupId>
- <artifactId>tensorflow</artifactId>
- </dependency>
</dependencies>
<build>
<plugins>
diff --git a/model-integration/src/main/config/model-integration.xml b/model-integration/src/main/config/model-integration.xml
index 8b2fa28b9df..675f1e13456 100644
--- a/model-integration/src/main/config/model-integration.xml
+++ b/model-integration/src/main/config/model-integration.xml
@@ -4,7 +4,7 @@
model pseudo features in ranking expressions during config model building.
The importers are order by the cost of their probing method, from cheap to expensive.
It is provided as separate bundles instead of being included in the config model
- because some of these (TensorFlow) includes
+ because some of these includes
JNI code, and so can only exist in one instance in the server. -->
<component id="ai.vespa.rankingexpression.importer.vespa.VespaImporter" bundle="model-integration" />
<component id="ai.vespa.rankingexpression.importer.onnx.OnnxImporter" bundle="model-integration" />
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java
deleted file mode 100644
index f2c6dfd9069..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/AttributeConverter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.evaluation.BooleanValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.DoubleValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import com.yahoo.searchlib.rankingexpression.evaluation.Value;
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import ai.vespa.rankingexpression.importer.operations.IntermediateOperation;
-import org.tensorflow.framework.AttrValue;
-import org.tensorflow.framework.NodeDef;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-/**
- * Converts TensorFlow node attributes to Vespa attribute values.
- *
- * @author lesters
- */
-class AttributeConverter implements IntermediateOperation.AttributeMap {
-
- private final Map<String, AttrValue> attributeMap;
-
- private AttributeConverter(NodeDef node) {
- attributeMap = node.getAttrMap();
- }
-
- static AttributeConverter convert(NodeDef node) {
- return new AttributeConverter(node);
- }
-
- @Override
- public Optional<Value> get(String key) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) {
- return Optional.empty(); // requires type
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.B) {
- return Optional.of(new BooleanValue(attrValue.getB()));
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.I) {
- return Optional.of(new DoubleValue(attrValue.getI()));
- }
- if (attrValue.getValueCase() == AttrValue.ValueCase.F) {
- return Optional.of(new DoubleValue(attrValue.getF()));
- }
- }
- return Optional.empty();
- }
-
- @Override
- public Optional<Value> get(String key, OrderedTensorType type) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.TENSOR) {
- return Optional.of(new TensorValue(TensorConverter.toVespaTensor(attrValue.getTensor(), type)));
- }
- }
- return get(key);
- }
-
- @Override
- public Optional<List<Value>> getList(String key) {
- if (attributeMap.containsKey(key)) {
- AttrValue attrValue = attributeMap.get(key);
- if (attrValue.getValueCase() == AttrValue.ValueCase.LIST) {
- AttrValue.ListValue listValue = attrValue.getList();
- if ( ! listValue.getBList().isEmpty()) {
- return Optional.of(listValue.getBList().stream().map(BooleanValue::new).collect(Collectors.toList()));
- }
- if ( ! listValue.getIList().isEmpty()) {
- return Optional.of(listValue.getIList().stream().map(DoubleValue::new).collect(Collectors.toList()));
- }
- if ( ! listValue.getFList().isEmpty()) {
- return Optional.of(listValue.getFList().stream().map(DoubleValue::new).collect(Collectors.toList()));
- }
- // add the rest
- }
- }
- return Optional.empty();
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java
deleted file mode 100644
index 0d2ba0cc714..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/GraphImporter.java
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.operations.Softmax;
-import ai.vespa.rankingexpression.importer.operations.Sum;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.IntermediateGraph;
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import ai.vespa.rankingexpression.importer.operations.Argument;
-import ai.vespa.rankingexpression.importer.operations.ConcatV2;
-import ai.vespa.rankingexpression.importer.operations.Const;
-import ai.vespa.rankingexpression.importer.operations.Constant;
-import ai.vespa.rankingexpression.importer.operations.ExpandDims;
-import ai.vespa.rankingexpression.importer.operations.Identity;
-import ai.vespa.rankingexpression.importer.operations.IntermediateOperation;
-import ai.vespa.rankingexpression.importer.operations.Join;
-import ai.vespa.rankingexpression.importer.operations.Map;
-import ai.vespa.rankingexpression.importer.operations.MatMul;
-import ai.vespa.rankingexpression.importer.operations.Mean;
-import ai.vespa.rankingexpression.importer.operations.Merge;
-import ai.vespa.rankingexpression.importer.operations.NoOp;
-import ai.vespa.rankingexpression.importer.operations.PlaceholderWithDefault;
-import ai.vespa.rankingexpression.importer.operations.Reshape;
-import ai.vespa.rankingexpression.importer.operations.Select;
-import ai.vespa.rankingexpression.importer.operations.Shape;
-import ai.vespa.rankingexpression.importer.operations.Squeeze;
-import ai.vespa.rankingexpression.importer.operations.Switch;
-import com.yahoo.tensor.functions.ScalarFunctions;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-import org.tensorflow.framework.GraphDef;
-import org.tensorflow.framework.MetaGraphDef;
-import org.tensorflow.framework.NodeDef;
-import org.tensorflow.framework.SignatureDef;
-import org.tensorflow.framework.TensorInfo;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * Converts a TensorFlow graph to a Vespa IntermediateGraph which is the basis
- * for generating Vespa ranking expressions.
- *
- * @author lesters
- */
-class GraphImporter {
-
- private static IntermediateOperation mapOperation(NodeDef node,
- List<IntermediateOperation> inputs,
- IntermediateGraph graph) {
- String nodeName = node.getName();
- String modelName = graph.name();
- int nodePort = IntermediateOperation.indexPartOf(nodeName);
- OrderedTensorType nodeType = TypeConverter.typeFrom(node);
- AttributeConverter attributes = AttributeConverter.convert(node);
-
- switch (node.getOp().toLowerCase()) {
- // array ops
- case "concatv2": return new ConcatV2(modelName, nodeName, inputs);
- case "const": return new Const(modelName, nodeName, inputs, attributes, nodeType);
- case "expanddims": return new ExpandDims(modelName, nodeName, inputs);
- case "identity": return new Identity(modelName, nodeName, inputs);
- case "placeholder": return new Argument(modelName, nodeName, nodeType);
- case "placeholderwithdefault": return new PlaceholderWithDefault(modelName, nodeName, inputs);
- case "reshape": return new Reshape(modelName, nodeName, inputs, attributes);
- case "shape": return new Shape(modelName, nodeName, inputs);
- case "squeeze": return new Squeeze(modelName, nodeName, inputs, attributes);
-
- // control flow
- case "merge": return new Merge(modelName, nodeName, inputs);
- case "switch": return new Switch(modelName, nodeName, inputs, nodePort);
-
- // math ops
- case "abs": return new Map(modelName, nodeName, inputs, ScalarFunctions.abs());
- case "acos": return new Map(modelName, nodeName, inputs, ScalarFunctions.acos());
- case "add": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "add_n": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "asin": return new Map(modelName, nodeName, inputs, ScalarFunctions.asin());
- case "atan": return new Map(modelName, nodeName, inputs, ScalarFunctions.atan());
- case "ceil": return new Map(modelName, nodeName, inputs, ScalarFunctions.ceil());
- case "cos": return new Map(modelName, nodeName, inputs, ScalarFunctions.cos());
- case "div": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide());
- case "exp": return new Map(modelName, nodeName, inputs, ScalarFunctions.exp());
- case "realdiv": return new Join(modelName, nodeName, inputs, ScalarFunctions.divide());
- case "floor": return new Map(modelName, nodeName, inputs, ScalarFunctions.floor());
- case "log": return new Map(modelName, nodeName, inputs, ScalarFunctions.log());
- case "matmul": return new MatMul(modelName, nodeName, inputs);
- case "maximum": return new Join(modelName, nodeName, inputs, ScalarFunctions.max());
- case "mean": return new Mean(modelName, nodeName, inputs, attributes);
- case "reducemean": return new Mean(modelName, nodeName, inputs, attributes);
- case "mul": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply());
- case "multiply": return new Join(modelName, nodeName, inputs, ScalarFunctions.multiply());
- case "negate": return new Map(modelName, nodeName, inputs, ScalarFunctions.neg());
- case "reciprocal": return new Map(modelName, nodeName, inputs, ScalarFunctions.reciprocal());
- case "rsqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.rsqrt());
- case "select": return new Select(modelName, nodeName, inputs);
- case "where3": return new Select(modelName, nodeName, inputs);
- case "sigmoid": return new Map(modelName, nodeName, inputs, ScalarFunctions.sigmoid());
- case "sin": return new Map(modelName, nodeName, inputs, ScalarFunctions.sin());
- case "squareddifference": return new Join(modelName, nodeName, inputs, ScalarFunctions.squareddifference());
- case "sub": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract());
- case "subtract": return new Join(modelName, nodeName, inputs, ScalarFunctions.subtract());
- case "sum": return new Sum(modelName, nodeName, inputs, attributes);
- case "square": return new Map(modelName, nodeName, inputs, ScalarFunctions.square());
- case "sqrt": return new Map(modelName, nodeName, inputs, ScalarFunctions.sqrt());
- case "tan": return new Map(modelName, nodeName, inputs, ScalarFunctions.tan());
- case "tanh": return new Map(modelName, nodeName, inputs, ScalarFunctions.tanh());
-
- // nn ops
- case "biasadd": return new Join(modelName, nodeName, inputs, ScalarFunctions.add());
- case "elu": return new Map(modelName, nodeName, inputs, ScalarFunctions.elu());
- case "relu": return new Map(modelName, nodeName, inputs, ScalarFunctions.relu());
- case "selu": return new Map(modelName, nodeName, inputs, ScalarFunctions.selu());
- case "softmax": return new Softmax(modelName, nodeName, inputs, attributes);
-
- // state ops
- case "variable": return new Constant(modelName, nodeName, nodeType);
- case "variablev2": return new Constant(modelName, nodeName, nodeType);
- case "varhandleop": return new Constant(modelName, nodeName, nodeType);
- case "readvariableop":return new Identity(modelName, nodeName, inputs);
-
- // evaluation no-ops
- case "stopgradient":return new Identity(modelName, nodeName, inputs);
- case "noop": return new NoOp(modelName, nodeName, inputs);
-
- }
-
- IntermediateOperation op = new NoOp(modelName, node.getName(), inputs);
- op.warning("Operation '" + node.getOp() + "' is currently not implemented");
- return op;
- }
-
- static IntermediateGraph importGraph(String modelName, SavedModelBundle bundle) throws IOException {
- MetaGraphDef tfGraph = MetaGraphDef.parseFrom(bundle.metaGraphDef());
-
- IntermediateGraph intermediateGraph = new IntermediateGraph(modelName);
- importSignatures(tfGraph, intermediateGraph);
- importOperations(tfGraph, intermediateGraph, bundle);
- verifyOutputTypes(tfGraph, intermediateGraph);
-
- return intermediateGraph;
- }
-
- private static void importSignatures(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) {
- for (java.util.Map.Entry<String, SignatureDef> signatureEntry : tfGraph.getSignatureDefMap().entrySet()) {
- String signatureName = signatureEntry.getKey();
- java.util.Map<String, TensorInfo> inputInfoMap = signatureEntry.getValue().getInputsMap();
- for (java.util.Map.Entry<String, TensorInfo> input : inputInfoMap.entrySet()) {
- String inputName = input.getKey();
- String nodeName = input.getValue().getName();
- intermediateGraph.inputs(signatureName).put(inputName, IntermediateOperation.namePartOf(nodeName));
- }
- java.util.Map<String, TensorInfo> outputInfoMap = signatureEntry.getValue().getOutputsMap();
- for (java.util.Map.Entry<String, TensorInfo> output : outputInfoMap.entrySet()) {
- String outputName = output.getKey();
- String nodeName = output.getValue().getName();
- intermediateGraph.outputs(signatureName).put(outputName, IntermediateOperation.namePartOf(nodeName));
- }
- }
- }
-
- private static void importOperations(MetaGraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- for (String signatureName : intermediateGraph.signatures()) {
- for (String outputName : intermediateGraph.outputs(signatureName).values()) {
- importOperation(outputName, tfGraph.getGraphDef(), intermediateGraph, bundle);
- }
- }
- }
-
- private static IntermediateOperation importOperation(String nodeName,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- if (intermediateGraph.alreadyImported(nodeName)) {
- return intermediateGraph.get(nodeName);
- }
- NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(nodeName), tfGraph);
- List<IntermediateOperation> inputs = importOperationInputs(node, tfGraph, intermediateGraph, bundle);
- IntermediateOperation operation = mapOperation(node, inputs, intermediateGraph);
- intermediateGraph.put(nodeName, operation);
-
- List<IntermediateOperation> controlInputs = importControlInputs(node, tfGraph, intermediateGraph, bundle);
- if (controlInputs.size() > 0) {
- operation.setControlInputs(controlInputs);
- }
-
- if (operation.isConstant()) {
- operation.setConstantValueFunction(
- type -> new TensorValue(TensorConverter.toVespaTensor(readVariable(nodeName, bundle), type)));
- }
-
- return operation;
- }
-
- private static List<IntermediateOperation> importOperationInputs(NodeDef node,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- return node.getInputList().stream()
- .filter(name -> ! isControlDependency(name))
- .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle))
- .collect(Collectors.toList());
- }
-
- private static List<IntermediateOperation> importControlInputs(NodeDef node,
- GraphDef tfGraph,
- IntermediateGraph intermediateGraph,
- SavedModelBundle bundle) {
- return node.getInputList().stream()
- .filter(nodeName -> isControlDependency(nodeName))
- .map(nodeName -> importOperation(nodeName, tfGraph, intermediateGraph, bundle))
- .collect(Collectors.toList());
- }
-
- private static boolean isControlDependency(String name) {
- return name.startsWith("^");
- }
-
- private static NodeDef getTensorFlowNodeFromGraph(String name, GraphDef tfGraph) {
- for (NodeDef node : tfGraph.getNodeList()) {
- if (node.getName().equals(name)) {
- return node;
- }
- }
- throw new IllegalArgumentException("Could not find node '" + name + "'");
- }
-
- static org.tensorflow.Tensor<?> readVariable(String name, SavedModelBundle bundle) {
- Session.Runner fetched = bundle.session().runner().fetch(name);
- List<org.tensorflow.Tensor<?>> importedTensors = fetched.run();
- if (importedTensors.size() != 1)
- throw new IllegalStateException("Expected 1 tensor from fetching " + name +
- ", but got " + importedTensors.size());
- return importedTensors.get(0);
- }
-
- private static void verifyOutputTypes(MetaGraphDef tfGraph, IntermediateGraph intermediateGraph) {
- for (String signatureName : intermediateGraph.signatures()) {
- for (String outputName : intermediateGraph.outputs(signatureName).values()) {
- IntermediateOperation operation = intermediateGraph.get(outputName);
- NodeDef node = getTensorFlowNodeFromGraph(IntermediateOperation.namePartOf(operation.name()), tfGraph.getGraphDef());
- OrderedTensorType type = operation.type().orElseThrow(
- () -> new IllegalArgumentException("Output of '" + outputName + "' has no type."));
- TypeConverter.verifyType(node, type);
- }
- }
-
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java
deleted file mode 100644
index 95727acb5b4..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorConverter.java
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.IndexedTensor;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.framework.DataType;
-import org.tensorflow.framework.TensorProto;
-import org.tensorflow.framework.TensorShapeProto;
-
-import java.nio.ByteBuffer;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.nio.IntBuffer;
-import java.nio.LongBuffer;
-import java.util.List;
-
-/**
- * Converts TensorFlow tensors into Vespa tensors.
- *
- * @author bratseth
- * @author lesters
- */
-public class TensorConverter {
-
- public static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor) {
- return toVespaTensor(tfTensor, "d");
- }
-
- private static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, String dimensionPrefix) {
- TensorType type = TypeConverter.typeFrom(tfTensor, dimensionPrefix);
- Values values = readValuesOf(tfTensor);
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type);
- for (int i = 0; i < values.size(); i++)
- builder.cellByDirectIndex(i, values.get(i));
- return builder.build();
- }
-
- static Tensor toVespaTensor(org.tensorflow.Tensor<?> tfTensor, OrderedTensorType type) {
- Values values = readValuesOf(tfTensor);
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder) Tensor.Builder.of(type.type());
- for (int i = 0; i < values.size(); i++) {
- builder.cellByDirectIndex(type.toDirectIndex(i), values.get(i));
- }
- return builder.build();
- }
-
- static Tensor toVespaTensor(TensorProto tensorProto, OrderedTensorType type) {
- Values values = readValuesOf(tensorProto);
- if (values.size() == 0) { // Might be stored as "tensor_content" instead
- return toVespaTensor(readTensorContentOf(tensorProto), type);
- }
- IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type.type());
- for (int i = 0; i < values.size(); ++i)
- builder.cellByDirectIndex(i, values.get(i));
- return builder.build();
- }
-
- public static Long tensorSize(TensorType type) {
- Long size = 1L;
- for (TensorType.Dimension dimension : type.dimensions()) {
- size *= dimensionSize(dimension);
- }
- return size;
- }
-
- private static Long dimensionSize(TensorType.Dimension dim) {
- return dim.size().orElseThrow(() -> new IllegalArgumentException("Dimension has no size"));
- }
-
- private static Values readValuesOf(org.tensorflow.Tensor<?> tfTensor) {
- switch (tfTensor.dataType()) {
- case DOUBLE: return new DoubleValues(tfTensor);
- case FLOAT: return new FloatValues(tfTensor);
- case BOOL: return new BoolValues(tfTensor);
- case UINT8: return new IntValues(tfTensor);
- case INT32: return new IntValues(tfTensor);
- case INT64: return new LongValues(tfTensor);
- default: throw new IllegalArgumentException("Cannot convert a tensor with elements of type " +
- tfTensor.dataType() + " to a Vespa tensor");
- }
- }
-
- private static Values readValuesOf(TensorProto tensorProto) {
- switch (tensorProto.getDtype()) {
- case DT_BOOL: return new ProtoBoolValues(tensorProto);
- case DT_HALF: return new ProtoHalfValues(tensorProto);
- case DT_INT16: case DT_INT32: return new ProtoIntValues(tensorProto);
- case DT_INT64: return new ProtoInt64Values(tensorProto);
- case DT_FLOAT: return new ProtoFloatValues(tensorProto);
- case DT_DOUBLE: return new ProtoDoubleValues(tensorProto);
- default: throw new IllegalArgumentException("Unsupported data type in attribute tensor import");
- }
- }
-
- private static Class dataTypeToClass(DataType dataType) {
- switch (dataType) {
- case DT_BOOL: return Boolean.class;
- case DT_INT16: return Short.class;
- case DT_INT32: return Integer.class;
- case DT_INT64: return Long.class;
- case DT_HALF: return Float.class;
- case DT_FLOAT: return Float.class;
- case DT_DOUBLE: return Double.class;
- default: throw new IllegalArgumentException("Unsupported data type in attribute tensor import");
- }
- }
-
- private static org.tensorflow.Tensor readTensorContentOf(TensorProto tensorProto) {
- return org.tensorflow.Tensor.create(dataTypeToClass(tensorProto.getDtype()),
- asSizeArray(tensorProto.getTensorShape().getDimList()),
- tensorProto.getTensorContent().asReadOnlyByteBuffer());
- }
-
- private static long[] asSizeArray(List<TensorShapeProto.Dim> dimensions) {
- long[] sizes = new long[dimensions.size()];
- for (int i = 0; i < dimensions.size(); i++)
- sizes[i] = dimensions.get(i).getSize();
- return sizes;
- }
-
- /** Allows reading values from buffers of various numeric types as bytes */
- private static abstract class Values {
- abstract double get(int i);
- abstract int size();
- }
-
- private static abstract class TensorFlowValues extends Values {
- private final int size;
- TensorFlowValues(int size) {
- this.size = size;
- }
- @Override int size() { return this.size; }
- }
-
- private static class DoubleValues extends TensorFlowValues {
- private final DoubleBuffer values;
- DoubleValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = DoubleBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class FloatValues extends TensorFlowValues {
- private final FloatBuffer values;
- FloatValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = FloatBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class BoolValues extends TensorFlowValues {
- private final ByteBuffer values;
- BoolValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = ByteBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class IntValues extends TensorFlowValues {
- private final IntBuffer values;
- IntValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = IntBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static class LongValues extends TensorFlowValues {
- private final LongBuffer values;
- LongValues(org.tensorflow.Tensor<?> tfTensor) {
- super(tfTensor.numElements());
- values = LongBuffer.allocate(tfTensor.numElements());
- tfTensor.writeTo(values);
- }
- @Override double get(int i) {
- return values.get(i);
- }
- }
-
- private static abstract class ProtoValues extends Values {
- final TensorProto tensorProto;
- ProtoValues(TensorProto tensorProto) { this.tensorProto = tensorProto; }
- }
-
- private static class ProtoBoolValues extends ProtoValues {
- ProtoBoolValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getBoolVal(i) ? 1.0 : 0.0; }
- @Override int size() { return tensorProto.getBoolValCount(); }
- }
-
- private static class ProtoHalfValues extends ProtoValues {
- ProtoHalfValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getHalfVal(i); }
- @Override int size() { return tensorProto.getHalfValCount(); }
- }
-
- private static class ProtoIntValues extends ProtoValues {
- ProtoIntValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getIntVal(i); }
- @Override int size() { return tensorProto.getIntValCount(); }
- }
-
- private static class ProtoInt64Values extends ProtoValues {
- ProtoInt64Values(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getInt64Val(i); }
- @Override int size() { return tensorProto.getInt64ValCount(); }
- }
-
- private static class ProtoFloatValues extends ProtoValues {
- ProtoFloatValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getFloatVal(i); }
- @Override int size() { return tensorProto.getFloatValCount(); }
- }
-
- private static class ProtoDoubleValues extends ProtoValues {
- ProtoDoubleValues(TensorProto tensorProto) { super(tensorProto); }
- @Override double get(int i) { return tensorProto.getDoubleVal(i); }
- @Override int size() { return tensorProto.getDoubleValCount(); }
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
index 0e307992143..04ddb48e859 100644
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
+++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowImporter.java
@@ -2,14 +2,12 @@
package ai.vespa.rankingexpression.importer.tensorflow;
import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.IntermediateGraph;
import ai.vespa.rankingexpression.importer.ModelImporter;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
import ai.vespa.rankingexpression.importer.onnx.OnnxImporter;
import com.yahoo.collections.Pair;
import com.yahoo.io.IOUtils;
import com.yahoo.system.ProcessExecuter;
-import org.tensorflow.SavedModelBundle;
import java.io.File;
import java.io.IOException;
@@ -27,7 +25,7 @@ public class TensorFlowImporter extends ModelImporter {
private static final Logger log = Logger.getLogger(TensorFlowImporter.class.getName());
- private final static int[] onnxOpsetsToTry = {8, 10, 12};
+ private final static int[] onnxOpsetsToTry = {12, 10, 8};
private final OnnxImporter onnxImporter = new OnnxImporter();
@@ -56,17 +54,6 @@ public class TensorFlowImporter extends ModelImporter {
return convertToOnnxAndImport(modelName, modelDir);
}
- /** Imports a TensorFlow model - DEPRECATED */
- public ImportedModel importModel(String modelName, String modelDir, SavedModelBundle model) {
- try {
- IntermediateGraph graph = GraphImporter.importGraph(modelName, model);
- return convertIntermediateGraphToModel(graph, modelDir, ImportedMlModel.ModelType.TENSORFLOW);
- }
- catch (IOException e) {
- throw new IllegalArgumentException("Could not import TensorFlow model '" + model + "'", e);
- }
- }
-
private ImportedModel convertToOnnxAndImport(String modelName, String modelDir) {
Path tempDir = null;
try {
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java
deleted file mode 100644
index 3102d5431d4..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/TypeConverter.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.framework.AttrValue;
-import org.tensorflow.framework.DataType;
-import org.tensorflow.framework.NodeDef;
-import org.tensorflow.framework.TensorShapeProto;
-
-/**
- * Converts and verifies TensorFlow tensor types into Vespa tensor types.
- *
- * @author lesters
- */
-class TypeConverter {
-
- static void verifyType(NodeDef node, OrderedTensorType type) {
- TensorShapeProto shape = tensorFlowShape(node);
- if (shape != null) {
- if (shape.getDimCount() != type.rank()) {
- throw new IllegalArgumentException("TensorFlow shape of '" + node.getName() + "' " +
- "does not match Vespa shape");
- }
- for (int tensorFlowIndex = 0; tensorFlowIndex < type.dimensions().size(); ++tensorFlowIndex) {
- int vespaIndex = type.dimensionMap(tensorFlowIndex);
- TensorShapeProto.Dim tensorFlowDimension = shape.getDim(tensorFlowIndex);
- TensorType.Dimension vespaDimension = type.type().dimensions().get(vespaIndex);
- if (tensorFlowDimension.getSize() != vespaDimension.size().orElse(-1L)) {
- throw new IllegalArgumentException("TensorFlow dimensions of '" + node.getName() + "' " +
- "does not match Vespa dimensions");
- }
- }
- }
- }
-
- static OrderedTensorType typeFrom(NodeDef node) {
- String dimensionPrefix = "d"; // standard naming convention: d0, d1, ...
- TensorShapeProto shape = tensorFlowShape(node);
- OrderedTensorType.Builder builder = new OrderedTensorType.Builder(toValueType(tensorFlowValueType(node)));
- for (int i = 0; i < shape.getDimCount(); ++ i) {
- String dimensionName = dimensionPrefix + i;
- TensorShapeProto.Dim tensorFlowDimension = shape.getDim(i);
- if (tensorFlowDimension.getSize() >= 0) {
- builder.add(TensorType.Dimension.indexed(dimensionName, tensorFlowDimension.getSize()));
- } else {
- builder.add(TensorType.Dimension.indexed(dimensionName));
- }
- }
- return builder.build();
- }
-
- static TensorType typeFrom(org.tensorflow.Tensor<?> tfTensor, String dimensionPrefix) {
- TensorType.Builder b = new TensorType.Builder(toValueType(tfTensor.dataType()));
- int dimensionIndex = 0;
- for (long dimensionSize : tfTensor.shape()) {
- if (dimensionSize == 0) dimensionSize = 1; // TensorFlow ...
- b.indexed(dimensionPrefix + (dimensionIndex++), dimensionSize);
- }
- return b.build();
- }
-
- private static TensorShapeProto tensorFlowShape(NodeDef node) {
- // Use specific shape if available...
- AttrValue attrShape = node.getAttrMap().get("shape");
- if (attrShape != null && attrShape.getValueCase() == AttrValue.ValueCase.SHAPE) {
- return attrShape.getShape();
- }
-
- // ... else use inferred shape
- AttrValue attrOutputShapes = node.getAttrMap().get("_output_shapes");
- if (attrOutputShapes == null)
- throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " +
- "does not exist");
- if (attrOutputShapes.getValueCase() != AttrValue.ValueCase.LIST)
- throw new IllegalArgumentException("_output_shapes attribute of '" + node.getName() + "' " +
- "is not of expected type");
-
- return attrOutputShapes.getList().getShape(0); // support multiple outputs?
- }
-
- private static DataType tensorFlowValueType(NodeDef node) {
- AttrValue attrValueList = node.getAttrMap().get("dtypes");
- if (attrValueList == null)
- return DataType.DT_DOUBLE; // default. This will usually (always?) be used. TODO: How can we do better?
- if (attrValueList.getValueCase() != AttrValue.ValueCase.LIST)
- return DataType.DT_DOUBLE; // default
-
- return attrValueList.getList().getType(0); // support multiple outputs?
- }
-
- private static TensorType.Value toValueType(DataType dataType) {
- switch (dataType) {
- case DT_FLOAT: return TensorType.Value.FLOAT;
- case DT_DOUBLE: return TensorType.Value.DOUBLE;
- // Imperfect conversion, for now:
- case DT_BOOL: return TensorType.Value.FLOAT;
- case DT_BFLOAT16: return TensorType.Value.FLOAT;
- case DT_HALF: return TensorType.Value.FLOAT;
- case DT_INT8: return TensorType.Value.FLOAT;
- case DT_INT16: return TensorType.Value.DOUBLE;
- case DT_INT32: return TensorType.Value.DOUBLE;
- case DT_INT64: return TensorType.Value.DOUBLE;
- case DT_UINT8: return TensorType.Value.FLOAT;
- case DT_UINT16: return TensorType.Value.DOUBLE;
- case DT_UINT32: return TensorType.Value.DOUBLE;
- case DT_UINT64: return TensorType.Value.DOUBLE;
- default: throw new IllegalArgumentException("A TensorFlow tensor with data type " + dataType +
- " cannot be converted to a Vespa tensor type");
- }
- }
-
- private static TensorType.Value toValueType(org.tensorflow.DataType dataType) {
- switch (dataType) {
- case FLOAT: return TensorType.Value.FLOAT;
- case DOUBLE: return TensorType.Value.DOUBLE;
- // Imperfect conversion, for now:
- case BOOL: return TensorType.Value.FLOAT;
- case INT32: return TensorType.Value.DOUBLE;
- case UINT8: return TensorType.Value.FLOAT;
- case INT64: return TensorType.Value.DOUBLE;
- default: throw new IllegalArgumentException("A TensorFlow tensor with data type " + dataType +
- " cannot be converted to a Vespa tensor type");
- }
- }
-
-}
diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java
deleted file mode 100644
index 85ae5238bae..00000000000
--- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.OrderedTensorType;
-import com.yahoo.tensor.serialization.JsonFormat;
-import com.yahoo.yolean.Exceptions;
-import org.tensorflow.SavedModelBundle;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * Converts TensorFlow Variables to the Vespa document format.
- * Intended to be used from the command line to convert trained tensors to document form.
- *
- * @author bratseth
- */
-class VariableConverter {
-
- /**
- * Reads the tensor with the given TensorFlow name at the given model location,
- * and encodes it as UTF-8 Vespa document tensor JSON having the given ordered tensor type.
- * Note that order of dimensions in the tensor type does matter as the TensorFlow tensor
- * tensor dimensions are implicitly ordered.
- */
- static byte[] importVariable(String modelDir, String tensorFlowVariableName, String orderedTypeSpec) {
- try (SavedModelBundle bundle = SavedModelBundle.load(modelDir, "serve")) {
- return JsonFormat.encode(TensorConverter.toVespaTensor(GraphImporter.readVariable(tensorFlowVariableName,
- bundle),
- OrderedTensorType.fromSpec(orderedTypeSpec)));
- }
- catch (IllegalArgumentException e) {
- throw new IllegalArgumentException("Could not import TensorFlow model from directory '" + modelDir + "'", e);
- }
- }
-
- public static void main(String[] args) {
- if ( args.length != 3) {
- System.out.println("Converts a TensorFlow variable into Vespa tensor document field value JSON:");
- System.out.println("A JSON map containing a 'cells' array, see");
- System.out.println("https://docs.vespa.ai/en/reference/document-json-format.html#tensor");
- System.out.println("");
- System.out.println("Arguments: modelDirectory tensorFlowVariableName orderedTypeSpec");
- System.out.println(" - modelDirectory: The directory of the TensorFlow SavedModel");
- System.out.println(" - tensorFlowVariableName: The name of the TensorFlow variable to convert");
- System.out.println(" - orderedTypeSpec: The tensor type, e.g tensor(b[],a[10]), where dimensions are ");
- System.out.println(" ordered as given in the deployment log message starting by ");
- System.out.println(" 'Importing TensorFlow variable'");
- return;
- }
-
- try {
- System.out.println(new String(importVariable(args[0], args[1], args[2]), StandardCharsets.UTF_8));
- }
- catch (Exception e) {
- System.err.println("Import failed: " + Exceptions.toMessageString(e));
- }
- }
-
-}
diff --git a/model-integration/src/main/java/org/tensorflow/package-info.java b/model-integration/src/main/java/org/tensorflow/package-info.java
deleted file mode 100644
index 237cb36a77a..00000000000
--- a/model-integration/src/main/java/org/tensorflow/package-info.java
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-@ExportPackage
-@PublicApi
-package org.tensorflow;
-
-import com.yahoo.api.annotations.PublicApi;
-import com.yahoo.osgi.annotation.ExportPackage;
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
index c5355ebdf6f..fc9785f8cc0 100644
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
+++ b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/TestableModel.java
@@ -2,7 +2,6 @@
package ai.vespa.rankingexpression.importer.onnx;
import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.tensorflow.TensorConverter;
import com.yahoo.searchlib.rankingexpression.RankingExpression;
import com.yahoo.searchlib.rankingexpression.evaluation.Context;
import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
@@ -14,16 +13,9 @@ import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode;
import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.util.List;
import java.util.Map;
-import static org.junit.Assert.assertEquals;
-
public class TestableModel {
Tensor evaluateVespa(ImportedModel model, String operationName, Map<String, TensorType> inputs) {
@@ -39,38 +31,6 @@ public class TestableModel {
return expression.evaluate(context).asTensor();
}
- Tensor evaluateTF(SavedModelBundle tensorFlowModel, String operationName, Map<String, TensorType> inputs) {
- Session.Runner runner = tensorFlowModel.session().runner();
- for (Map.Entry<String, TensorType> entry : inputs.entrySet()) {
- try {
- runner.feed(entry.getKey(), tensorFlowFloatInputArgument(1, entry.getValue().dimensions().get(1).size().get().intValue()));
- } catch (Exception e) {
- runner.feed(entry.getKey(), tensorFlowDoubleInputArgument(1, entry.getValue().dimensions().get(1).size().get().intValue()));
- }
- }
- List<org.tensorflow.Tensor<?>> results = runner.fetch(operationName).run();
- assertEquals(1, results.size());
- return TensorConverter.toVespaTensor(results.get(0));
- }
-
- private org.tensorflow.Tensor<?> tensorFlowFloatInputArgument(int d0Size, int d1Size) {
- FloatBuffer fb1 = FloatBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb1.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb1);
- }
-
- private org.tensorflow.Tensor<?> tensorFlowDoubleInputArgument(int d0Size, int d1Size) {
- DoubleBuffer fb1 = DoubleBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb1.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb1);
- }
-
private Tensor vespaInputArgument(int d0Size, int d1Size) {
Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", d0Size).indexed("d1", d1Size).build());
for (int d0 = 0; d0 < d0Size; d0++)
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java
deleted file mode 100644
index c7245fe53e8..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/Tf2OnnxImportTestCase.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.onnx;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.tensorflow.TensorFlowImporter;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.yahoo.collections.Pair;
-import com.yahoo.system.ProcessExecuter;
-import com.yahoo.tensor.Tensor;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.tensorflow.SavedModelBundle;
-
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Tries to convert a set of TensorFlow models to ONNX using the tf2onnx tool,
- * and asserts that the result when evaluated on TensorFlow, the imported
- * TensorFlow model and the imported ONNX model are equal.
- *
- * Requires the tf2onnx tool to be installed so the test itself should be ignored.
- *
- * @author lesters
- */
-public class Tf2OnnxImportTestCase extends TestableModel {
-
- @Rule
- public TemporaryFolder testFolder = new TemporaryFolder();
-
- @Test
- @Ignore
- public void testOnnxConversionAndImport() {
- Report report = new Report();
- for (int i = 1; i < 12; ++i) {
- testModelsWithOpset(report, i);
- }
- System.out.println(report);
- }
-
- private void testModelsWithOpset(Report report, int opset) {
- String [] models = {
- "tensorflow/mnist/saved/",
- "tensorflow/mnist_softmax/saved/",
- "tensorflow/9662/",
- "tensorflow/regression/test1/",
- "tensorflow/regression/test2/",
- "tensorflow/softmax/saved/",
- "tensorflow/blog/saved/",
- "tensorflow/batch_norm/saved/",
- "tensorflow/dropout/saved/",
- "tensorflow/external/Model_A/optimized_v2/",
- "tensorflow/external/Model_B/factorization_machine_v1/export/optimized/",
- "tensorflow/external/Model_B/factorization_machine_v1/export/standard/",
- "tensorflow/external/Model_C/factorization_machine_v1/export/optimized/",
- "tensorflow/external/Model_C/factorization_machine_v1/export/standard/",
- "tensorflow/external/modelv1/",
- "tensorflow/external/modelv2/"
- };
- for (String model : models) {
- try {
- testModelWithOpset(report, opset, "src/test/models/" + model);
- } catch (Exception e) {
- report.add(model, opset, false, "Exception: " + e.getMessage());
- }
- }
- }
-
- private boolean testModelWithOpset(Report report, int opset, String tfModel) throws IOException {
- String onnxModel = Paths.get(testFolder.getRoot().getAbsolutePath(), "converted.onnx").toString();
-
- var res = tf2onnxConvert(tfModel, onnxModel, opset);
- if (res.getFirst() != 0) {
- return reportAndFail(report, opset, tfModel, "tf2onnx conversion failed: " + res.getSecond());
- }
-
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(tfModel, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("test", tfModel, tensorFlowModel);
- ImportedModel onnxImportedModel = new OnnxImporter().importModel("test", onnxModel);
-
- if (model.signature("serving_default").skippedOutputs().size() > 0) {
- return reportAndFail(report, opset, tfModel, "Failed to import model from TensorFlow due to skipped outputs");
- }
- if (onnxImportedModel.signature("default").skippedOutputs().size() > 0) {
- return reportAndFail(report, opset, tfModel, "Failed to import model from ONNX due to skipped outputs");
- }
-
- ImportedModel.Signature sig = model.signatures().values().iterator().next();
- String output = sig.outputs().values().iterator().next();
- String onnxOutput = onnxImportedModel.signatures().values().iterator().next().outputs().values().iterator().next();
-
- Tensor tfResult = evaluateTF(tensorFlowModel, output, model.inputs());
- Tensor vespaResult = evaluateVespa(model, output, model.inputs());
- Tensor onnxResult = evaluateVespa(onnxImportedModel, onnxOutput, model.inputs());
-
- if ( ! tfResult.equals(vespaResult) ) {
- return reportAndFail(report, opset, tfModel, "Diff between tf and imported tf evaluation:\n\t" + tfResult + "\n\t" + vespaResult);
- }
- if ( ! vespaResult.equals(onnxResult) ) {
- return reportAndFail(report, opset, tfModel, "Diff between imported tf eval and onnx eval:\n\t" + vespaResult + "\n\t" + onnxResult);
- }
-
- return reportAndSucceed(report, opset, tfModel, "Ok");
- }
-
- private Pair<Integer, String> tf2onnxConvert(String savedModel, String output, int opset) throws IOException {
- ProcessExecuter executer = new ProcessExecuter();
- String job = "python3 -m tf2onnx.convert --saved-model " + savedModel + " --output " + output + " --opset " + opset;
- return executer.exec(job);
- }
-
- private static class Report {
- final ObjectMapper mapper = new ObjectMapper();
- final Map<String, ArrayNode> results = new HashMap<>();
-
- public boolean add(String model, int opset, boolean ok, String desc) {
- ObjectNode obj = mapper.createObjectNode().
- put("opset", opset).
- put("ok", ok).
- put("desc", desc);
- results.computeIfAbsent(model, r -> mapper.createArrayNode()).add(obj);
- return ok;
- }
-
- public String toString() {
- ArrayNode array = mapper.createArrayNode();
- results.forEach((key, value) -> array.add(mapper.createObjectNode().
- put("model", key).
- set("tests", value)));
- try {
- return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(array);
- } catch (JsonProcessingException e) {
- return e.getMessage();
- }
- }
- }
-
- private static boolean reportAndFail(Report report, int opset, String model, String desc) {
- return report.add(model, opset, false, desc);
- }
-
- private static boolean reportAndSucceed(Report report, int opset, String model, String desc) {
- return report.add(model, opset, true, desc);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java
deleted file mode 100644
index e75c7fd4da3..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BatchNormImportTestCase.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Test;
-
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author lesters
- */
-public class BatchNormImportTestCase {
-
- @Test
- public void testBatchNormImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/batch_norm/saved");
- ImportedModel.Signature signature = model.get().signature("serving_default");
-
- assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
-
- // Test signature
- ImportedMlFunction function = signature.outputFunction("y", "y");
- assertNotNull(function);
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
-
- // Test outputs
- List<ImportedMlFunction> outputs = model.get().outputExpressions();
- assertEquals(1, outputs.size());
- assertEquals("serving_default.y", outputs.get(0).name());
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
- model.assertEqualResult("X", "dnn/batch_normalization_3/batchnorm/add_1");
- }
-
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java
deleted file mode 100644
index 37104ab43db..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationBenchmark.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
-import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer;
-import com.yahoo.searchlib.rankingexpression.evaluation.OptimizationReport;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.parser.ParseException;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-
-import java.nio.FloatBuffer;
-import java.util.List;
-
-/**
- * Microbenchmark of imported ML model evaluation.
- *
- * @author lesters
- */
-public class BlogEvaluationBenchmark {
-
- static final String modelDir = "src/test/models/tensorflow/blog/saved";
-
- public static void main(String[] args) throws ParseException {
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("blog", modelDir, tensorFlowModel);
-
- Context context = TestableTensorFlowModel.contextFrom(model);
- Tensor u = generateInputTensor();
- Tensor d = generateInputTensor();
- context.put("input_u", new TensorValue(u));
- context.put("input_d", new TensorValue(d));
-
- // Parse the ranking expression from imported string to force primitive tensor functions.
- RankingExpression expression = new RankingExpression(model.expressions().get("y").getRoot().toString());
- benchmarkJava(expression, context, 20, 200);
-
- System.out.println("*** Optimizing expression ***");
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- OptimizationReport report = optimizer.optimize(expression, (ContextIndex)context);
- System.out.println(report.toString());
-
- benchmarkJava(expression, context, 2000, 20000);
- benchmarkTensorFlow(tensorFlowModel, 2000, 20000);
- }
-
- private static void benchmarkJava(RankingExpression expression, Context context, int warmup, int iterations) {
- System.out.println("*** Java evaluation - warmup ***");
- evaluate(expression, context, warmup);
- System.gc();
- System.out.println("*** Java evaluation - " + iterations + " iterations ***");
- double startTime = System.nanoTime();
- evaluate(expression, context, iterations);
- double endTime = System.nanoTime();
- System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000)) + " ms");
- System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms");
- }
-
- private static double evaluate(RankingExpression expression, Context context, int iterations) {
- double result = 0;
- for (int i = 0 ; i < iterations; i++) {
- result = expression.evaluate(context).asTensor().sum().asDouble();
- }
- return result;
- }
-
- private static Tensor generateInputTensor() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 128).build());
- for (int d0 = 0; d0 < 1; d0++)
- for (int d1 = 0; d1 < 128; d1++)
- b.cell(d1 * 1.0 / 128, d0, d1);
- return b.build();
- }
-
- private static void benchmarkTensorFlow(SavedModelBundle tensorFlowModel, int warmup, int iterations) {
- org.tensorflow.Tensor<?> u = generateInputTensorFlow();
- org.tensorflow.Tensor<?> d = generateInputTensorFlow();
-
- System.out.println("*** TensorFlow evaluation - warmup ***");
- evaluateTensorflow(tensorFlowModel, u, d, warmup);
-
- System.gc();
- System.out.println("*** TensorFlow evaluation - " + iterations + " iterations ***");
- double startTime = System.nanoTime();
- evaluateTensorflow(tensorFlowModel, u, d, iterations);
- double endTime = System.nanoTime();
- System.out.println("Model evaluation time is " + ((endTime-startTime) / (1000*1000) + " ms"));
- System.out.println("Average model evaluation time is " + ((endTime-startTime) / (1000*1000)) / iterations + " ms");
- }
-
- private static double evaluateTensorflow(SavedModelBundle tensorFlowModel, org.tensorflow.Tensor<?> u, org.tensorflow.Tensor<?> d, int iterations) {
- double result = 0;
- for (int i = 0 ; i < iterations; i++) {
- Session.Runner runner = tensorFlowModel.session().runner();
- runner.feed("input_u", u);
- runner.feed("input_d", d);
- List<org.tensorflow.Tensor<?>> results = runner.fetch("y").run();
- result = TensorConverter.toVespaTensor(results.get(0)).sum().asDouble();
- }
- return result;
- }
-
- private static org.tensorflow.Tensor<?> generateInputTensorFlow() {
- FloatBuffer fb = FloatBuffer.allocate(1 * 128);
- for (int i = 0; i < 128; ++i) {
- fb.put(i, (float)(i * 1.0 / 128));
- }
- return org.tensorflow.Tensor.create(new long[]{ 1, 128 }, fb);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java
deleted file mode 100644
index 3a35efed2c0..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/BlogEvaluationTestCase.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Test;
-import org.tensorflow.SavedModelBundle;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class BlogEvaluationTestCase {
-
- static final String modelDir = "src/test/models/tensorflow/blog/saved";
-
- @Test
- public void testImport() {
- SavedModelBundle tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- ImportedModel model = new TensorFlowImporter().importModel("blog", modelDir, tensorFlowModel);
-
- ImportedModel.Signature y = model.signature("serving_default.y");
- assertNotNull(y);
- assertEquals(0, y.inputs().size());
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java
deleted file mode 100644
index 25f8acf1f6d..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/DropoutImportTestCase.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author lesters
- */
-public class DropoutImportTestCase {
-
- @Test
- public void testDropoutImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/dropout/saved");
-
- // Check required functions
- Assert.assertEquals(1, model.get().inputs().size());
- assertTrue(model.get().inputs().containsKey("X"));
- Assert.assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(),
- model.get().inputs().get("X"));
-
- ImportedModel.Signature signature = model.get().signature("serving_default");
-
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction function = signature.outputFunction("y", "y");
- assertNotNull(function);
- assertEquals("join(join(reduce(constant(test_outputs_Const), sum, d1), imported_ml_function_test_outputs_BiasAdd, f(a,b)(a * b)), imported_ml_function_test_outputs_BiasAdd, f(a,b)(max(a,b)))",
- function.expression());
- model.assertEqualResult("X", "outputs/Maximum");
- assertEquals("{X=tensor(d0[],d1[784])}", function.argumentTypes().toString());
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java
deleted file mode 100644
index 25b36535b50..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Issue9662TestCase.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class Issue9662TestCase {
-
- @Test
- public void testImporting() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/9662");
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("output", "output");
- assertNotNull(output);
- model.assertEqualResultSum("input_embedding_user_guid", "dense_out/Sigmoid", 0.0001);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java
deleted file mode 100644
index 56f31f6f788..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/MnistImportTestCase.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class MnistImportTestCase {
-
- @Test
- public void testMnistImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/mnist/saved");
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- model.assertEqualResultSum("input", "dnn/outputs/add", 0.0001);
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java
deleted file mode 100644
index 46ced6f42ad..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/RegressionTestCase.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author bratseth
- */
-public class RegressionTestCase {
-
- @Test
- public void testRegressionModel1() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/regression/test1",
- 14,
- 1536);
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- Tensor constant0 = Tensor.from(model.get().largeConstants().get("test_Variable_read"));
- assertNotNull(constant0);
- assertEquals(new TensorType.Builder().indexed("d2", 1536).indexed("d1", 14).build(),
- constant0.type());
- assertEquals(21504, constant0.size());
-
- Tensor constant1 = Tensor.from(model.get().largeConstants().get("test_Variable_1_read"));
- assertNotNull(constant1);
- assertEquals(new TensorType.Builder().indexed("d1", 14).build(), constant1.type());
- assertEquals(14, constant1.size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // Test execution
- model.assertEqualResult("input", "MatMul");
- model.assertEqualResult("input", "logits");
- model.assertEqualResult("input", "Sigmoid");
- model.assertEqualResult("input", "add");
- }
-
- @Test
- public void testRegressionModel2() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test",
- "src/test/models/tensorflow/regression/test2",
- 14,
- 1536,
- false);
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // Test execution
- model.assertEqualResult("input", "MatMul");
- model.assertEqualResult("input", "add");
- model.assertEqualResult("input", "predict");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java
deleted file mode 100644
index 525f915b252..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/SoftmaxImportTestCase.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import org.junit.Assert;
-import org.junit.Test;
-
-
-import static org.junit.Assert.assertNotNull;
-
-/**
- * @author lesters
- */
-public class SoftmaxImportTestCase {
-
- @Test
- public void testSoftmaxImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/softmax/saved", 1, 5);
- ImportedModel.Signature signature = model.get().signature("serving_default");
- Assert.assertEquals("Should have no skipped outputs",
- 0, model.get().signature("serving_default").skippedOutputs().size());
-
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- model.assertEqualResult("input", "output");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java
deleted file mode 100644
index 50e24f20972..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TensorFlowMnistSoftmaxImportTestCase.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlFunction;
-import com.yahoo.searchlib.rankingexpression.ExpressionFunction;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author bratseth
- */
-public class TensorFlowMnistSoftmaxImportTestCase {
-
- @Test
- public void testMnistSoftmaxImport() {
- TestableTensorFlowModel model = new TestableTensorFlowModel("test", "src/test/models/tensorflow/mnist_softmax/saved");
-
- // Check constants
- Assert.assertEquals(2, model.get().largeConstants().size());
-
- Tensor constant0 = Tensor.from(model.get().largeConstants().get("test_Variable_read"));
- assertNotNull(constant0);
- assertEquals(new TensorType.Builder().indexed("d2", 784).indexed("d1", 10).build(),
- constant0.type());
- assertEquals(7840, constant0.size());
-
- Tensor constant1 = Tensor.from(model.get().largeConstants().get("test_Variable_1_read"));
- assertNotNull(constant1);
- assertEquals(new TensorType.Builder().indexed("d1", 10).build(),
- constant1.type());
- assertEquals(10, constant1.size());
-
- // Check (provided) functions
- Assert.assertEquals(0, model.get().functions().size());
-
- // Check required functions
- Assert.assertEquals(1, model.get().inputs().size());
- assertTrue(model.get().inputs().containsKey("Placeholder"));
- Assert.assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(),
- model.get().inputs().get("Placeholder"));
-
- // Check signatures
- Assert.assertEquals(1, model.get().signatures().size());
- ImportedModel.Signature signature = model.get().signatures().get("serving_default");
- assertNotNull(signature);
-
- // ... signature inputs
- assertEquals(1, signature.inputs().size());
- TensorType argument0 = signature.inputArgument("x");
- assertNotNull(argument0);
- assertEquals(new TensorType.Builder().indexed("d0").indexed("d1", 784).build(), argument0);
-
- // ... signature outputs
- assertEquals(1, signature.outputs().size());
- ImportedMlFunction output = signature.outputFunction("y", "y");
- assertNotNull(output);
- assertEquals("join(reduce(join(rename(Placeholder, (d0, d1), (d0, d2)), constant(test_Variable_read), f(a,b)(a * b)), sum, d2), constant(test_Variable_1_read), f(a,b)(a + b))",
- output.expression());
- assertEquals("{Placeholder=tensor(d0[],d1[784])}", output.argumentTypes().toString());
-
- // Test execution
- model.assertEqualResult("Placeholder", "MatMul");
- model.assertEqualResult("Placeholder", "add");
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java
deleted file mode 100644
index 41f343dbdaa..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/TestableTensorFlowModel.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.ContextIndex;
-import com.yahoo.searchlib.rankingexpression.evaluation.ExpressionOptimizer;
-import com.yahoo.searchlib.rankingexpression.evaluation.MapContext;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.rule.CompositeNode;
-import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode;
-import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.tensorflow.SavedModelBundle;
-import org.tensorflow.Session;
-
-import java.nio.DoubleBuffer;
-import java.nio.FloatBuffer;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * Helper for TensorFlow import tests: Imports a model and provides asserts on it.
- *
- * @author bratseth
- */
-public class TestableTensorFlowModel {
-
- private SavedModelBundle tensorFlowModel;
- private ImportedModel model;
-
- // Spec of the input vector
- private final boolean floatInput; // false: double
- private final int d0Size;
- private final int d1Size;
-
-
- public TestableTensorFlowModel(String modelName, String modelDir) {
- this(modelName, modelDir, 1, 784);
- }
-
- public TestableTensorFlowModel(String modelName, String modelDir, int d0Size, int d1Size) {
- this(modelName, modelDir, d0Size, d1Size, true);
- }
-
- public TestableTensorFlowModel(String modelName, String modelDir, int d0Size, int d1Size, boolean floatInput) {
- tensorFlowModel = SavedModelBundle.load(modelDir, "serve");
- model = new TensorFlowImporter().importModel(modelName, modelDir, tensorFlowModel);
- this.d0Size = d0Size;
- this.d1Size = d1Size;
- this.floatInput = floatInput;
- }
-
- public ImportedModel get() { return model; }
-
- /** Compare that computing the expressions produce the same result to within some tolerance delta */
- public void assertEqualResultSum(String inputName, String operationName, double delta) {
- Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName);
- Context context = contextFrom(model);
- Tensor placeholder = vespaInputArgument();
- context.put(inputName, new TensorValue(placeholder));
-
- model.functions().forEach((k, v) -> evaluateFunction(context, model, k));
-
- RankingExpression expression = model.expressions().get(operationName);
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- optimizer.optimize(expression, (ContextIndex)context);
-
- Tensor vespaResult = expression.evaluate(context).asTensor();
- assertEquals("Operation '" + operationName + "' produces equal results",
- tfResult.sum().asDouble(), vespaResult.sum().asDouble(), delta);
- }
-
- /** Compare tensors 100% exactly */
- public void assertEqualResult(String inputName, String operationName) {
- Tensor tfResult = tensorFlowExecute(tensorFlowModel, inputName, operationName);
- Context context = contextFrom(model);
- Tensor inputValue = vespaInputArgument();
- context.put(inputName, new TensorValue(inputValue));
-
- model.functions().forEach((k, v) -> evaluateFunction(context, model, k));
-
- RankingExpression expression = model.expressions().get(operationName);
- ExpressionOptimizer optimizer = new ExpressionOptimizer();
- optimizer.optimize(expression, (ContextIndex)context);
-
- Tensor vespaResult = expression.evaluate(context).asTensor();
- assertEquals("Operation '" + operationName + "': Actual value from Vespa equals expected value from TensorFlow",
- tfResult, vespaResult);
- }
-
- private Tensor tensorFlowExecute(SavedModelBundle model, String inputName, String operationName) {
- Session.Runner runner = model.session().runner();
- org.tensorflow.Tensor<?> input = floatInput ? tensorFlowFloatInputArgument() : tensorFlowDoubleInputArgument();
- runner.feed(inputName, input);
- List<org.tensorflow.Tensor<?>> results = runner.fetch(operationName).run();
- assertEquals(1, results.size());
- return TensorConverter.toVespaTensor(results.get(0));
- }
-
- static Context contextFrom(ImportedModel result) {
- TestableModelContext context = new TestableModelContext();
- result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- return context;
- }
-
- /** Must be the same as vespaInputArgument() */
- private org.tensorflow.Tensor<?> tensorFlowDoubleInputArgument() {
- DoubleBuffer fb = DoubleBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb.put(i++, (d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb);
- }
-
- /** Must be the same as vespaInputArgument() */
- private org.tensorflow.Tensor<?> tensorFlowFloatInputArgument() {
- FloatBuffer fb = FloatBuffer.allocate(d0Size * d1Size);
- int i = 0;
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; ++d1)
- fb.put(i++, (float)(d1 * 1.0 / d1Size));
- return org.tensorflow.Tensor.create(new long[]{ d0Size, d1Size }, fb);
- }
-
- /** Must be the same as tensorFlowFloatInputArgument() */
- private Tensor vespaInputArgument() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", d0Size).indexed("d1", d1Size).build());
- for (int d0 = 0; d0 < d0Size; d0++)
- for (int d1 = 0; d1 < d1Size; d1++)
- b.cell(d1 * 1.0 / d1Size, d0, d1);
- return b.build();
- }
-
- private void evaluateFunction(Context context, ImportedModel model, String functionName) {
- if (!context.names().contains(functionName)) {
- RankingExpression e = RankingExpression.from(model.functions().get(functionName));
- evaluateFunctionDependencies(context, model, e.getRoot());
- context.put(functionName, new TensorValue(e.evaluate(context).asTensor()));
- }
- }
-
- private void evaluateFunctionDependencies(Context context, ImportedModel model, ExpressionNode node) {
- if (node instanceof ReferenceNode) {
- String name = node.toString();
- if (model.functions().containsKey(name)) {
- evaluateFunction(context, model, name);
- }
- }
- else if (node instanceof CompositeNode) {
- for (ExpressionNode child : ((CompositeNode)node).children()) {
- evaluateFunctionDependencies(context, model, child);
- }
- }
- }
-
- private static class TestableModelContext extends MapContext implements ContextIndex {
- @Override
- public int size() {
- return bindings().size();
- }
- @Override
- public int getIndex(String name) {
- throw new UnsupportedOperationException(this + " does not support index lookup by name");
- }
- }
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java
deleted file mode 100644
index 0510a433dd9..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/Tf2OnnxImportTestCase.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import ai.vespa.rankingexpression.importer.ImportedModel;
-import com.yahoo.searchlib.rankingexpression.RankingExpression;
-import com.yahoo.searchlib.rankingexpression.evaluation.Context;
-import com.yahoo.searchlib.rankingexpression.evaluation.MapContext;
-import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue;
-import com.yahoo.tensor.Tensor;
-import com.yahoo.tensor.TensorType;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author lesters
- */
-public class Tf2OnnxImportTestCase {
-
- @Ignore // Ignored because conversion requires python tf2onnx dependencies - tested in system test
- @Test
- public void testConversionFromTensorFlowToOnnx() {
- String modelPath = "src/test/models/tensorflow/mnist_softmax/saved";
- String modelPathToConvert = "src/test/models/tensorflow/mnist_softmax/tf_2_onnx";
-
- Tensor argument = placeholderArgument();
- Tensor tensorFlowResult = evaluateTensorFlowModel(modelPath, argument, "Placeholder", "add");
- Tensor tf2OnnxResult = evaluateTensorFlowModel(modelPathToConvert, argument, "Placeholder", "add");
-
- assertEquals("Operation 'add' produces equal results", tensorFlowResult, tf2OnnxResult);
- }
-
- private Tensor evaluateTensorFlowModel(String path, Tensor argument, String input, String output) {
- ImportedModel model = new TensorFlowImporter().importModel("test", path);
- String outputExpr = model.signatures().values().iterator().next().outputs().values().iterator().next();
- return evaluateExpression(model.expressions().get(outputExpr), contextFrom(model), argument, input);
- }
-
- private Tensor evaluateExpression(RankingExpression expression, Context context, Tensor argument, String input) {
- context.put(input, new TensorValue(argument));
- return expression.evaluate(context).asTensor();
- }
-
- private Context contextFrom(ImportedModel result) {
- MapContext context = new MapContext();
- result.largeConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- result.smallConstants().forEach((name, tensor) -> context.put("constant(" + name + ")", new TensorValue(Tensor.from(tensor))));
- return context;
- }
-
- private Tensor placeholderArgument() {
- Tensor.Builder b = Tensor.Builder.of(new TensorType.Builder().indexed("d0", 1).indexed("d1", 784).build());
- for (int d0 = 0; d0 < 1; d0++)
- for (int d1 = 0; d1 < 784; d1++)
- b.cell(d1 * 1.0 / 784, d0, d1);
- return b.build();
- }
-
-
-}
diff --git a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java b/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java
deleted file mode 100644
index c9fffe143b4..00000000000
--- a/model-integration/src/test/java/ai/vespa/rankingexpression/importer/tensorflow/VariableConverterTestCase.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.rankingexpression.importer.tensorflow;
-
-import org.junit.Test;
-
-import java.nio.charset.StandardCharsets;
-
-import static org.junit.Assert.assertEquals;
-
-public class VariableConverterTestCase {
-
- @Test
- public void testConversion() {
- byte[] converted = VariableConverter.importVariable("src/test/models/tensorflow/mnist_softmax/saved",
- "Variable_1",
- "tensor(d0[10],d1[1])");
- assertEquals("{\"cells\":[{\"address\":{\"d0\":\"0\",\"d1\":\"0\"},\"value\":-0.3546536862850189},{\"address\":{\"d0\":\"1\",\"d1\":\"0\"},\"value\":0.3759574592113495},{\"address\":{\"d0\":\"2\",\"d1\":\"0\"},\"value\":0.06054411828517914},{\"address\":{\"d0\":\"3\",\"d1\":\"0\"},\"value\":-0.251544713973999},{\"address\":{\"d0\":\"4\",\"d1\":\"0\"},\"value\":0.017951013520359993},{\"address\":{\"d0\":\"5\",\"d1\":\"0\"},\"value\":1.2899067401885986},{\"address\":{\"d0\":\"6\",\"d1\":\"0\"},\"value\":-0.10389615595340729},{\"address\":{\"d0\":\"7\",\"d1\":\"0\"},\"value\":0.6367976665496826},{\"address\":{\"d0\":\"8\",\"d1\":\"0\"},\"value\":-1.4136744737625122},{\"address\":{\"d0\":\"9\",\"d1\":\"0\"},\"value\":-0.2573896050453186}]}",
- new String(converted, StandardCharsets.UTF_8));
- }
-
-}
diff --git a/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt
deleted file mode 100644
index 83c601edfc0..00000000000
--- a/model-integration/src/test/models/tensorflow/9662/saved_model.pbtxt
+++ /dev/null
@@ -1,1318 +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_BFLOAT16
- 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: "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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Sum/reduction_indices"
- 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: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: 0.1835838258266449
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Sum"
- op: "Sum"
- input: "Dot/l2_normalize_1/Square"
- input: "Dot/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "Dot/l2_normalize/Maximum"
- op: "Maximum"
- input: "Dot/l2_normalize/Sum"
- input: "Dot/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "Dot/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "Dot/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/Mul"
- op: "Mul"
- input: "Dot/l2_normalize_1"
- input: "Dot/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "Dot/Sum"
- op: "Sum"
- input: "Dot/Mul"
- input: "Dot/l2_normalize/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "batch_normalization_v1/moving_variance"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "Dot/ExpandDims"
- op: "ExpandDims"
- input: "Dot/Sum"
- input: "Dot/l2_normalize/Sum/reduction_indices"
- 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: "batch_normalization_v1/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/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: "batch_normalization_v1/batchnorm/add"
- op: "Add"
- input: "batch_normalization_v1/moving_variance"
- input: "batch_normalization_v1/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "batch_normalization_v1/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul"
- op: "Mul"
- input: "batch_normalization_v1/batchnorm/Rsqrt"
- input: "batch_normalization_v1/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul_1"
- op: "Mul"
- input: "Dot/ExpandDims"
- input: "batch_normalization_v1/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/mul_2"
- op: "Mul"
- input: "batch_normalization_v1/moving_mean"
- input: "batch_normalization_v1/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_v1/moving_mean"
- input: "batch_normalization_v1/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_v1/batchnorm/add_1"
- op: "Add"
- input: "batch_normalization_v1/batchnorm/mul_1"
- input: "batch_normalization_v1/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_normalization_v1/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_normalization_v1/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py b/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py
deleted file mode 100644
index bc6ea13ebc1..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/batch_normalization_mnist.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-import tensorflow as tf
-
-from functools import partial
-from tensorflow.examples.tutorials.mnist import input_data
-from datetime import datetime
-
-now = datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-mnist = input_data.read_data_sets("/tmp/data/")
-X_train = mnist.train.images
-X_test = mnist.test.images
-y_train = mnist.train.labels.astype("int")
-y_test = mnist.test.labels.astype("int")
-
-n_inputs = 28*28 # MNIST
-n_hidden1 = 300
-n_hidden2 = 100
-n_hidden3 = 40
-n_outputs = 10
-
-learning_rate = 0.01
-n_epochs = 20
-batch_size = 200
-batch_norm_momentum = 0.9
-
-X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-training = tf.placeholder_with_default(False, shape=(), name='training')
-
-def leaky_relu(z, name=None):
- return tf.maximum(0.01 * z, z, name=name)
-
-with tf.name_scope("dnn"):
- he_init = tf.contrib.layers.variance_scaling_initializer()
-
- batch_norm_layer = partial(tf.layers.batch_normalization, training=training, momentum=batch_norm_momentum)
- dense_layer = partial(tf.layers.dense, kernel_initializer=he_init)
-
- hidden1 = dense_layer(X, n_hidden1, name="hidden1", activation=leaky_relu)
- bn1 = tf.nn.elu(batch_norm_layer(hidden1))
- hidden2 = dense_layer(bn1, n_hidden2, name="hidden2", activation=tf.nn.elu)
- bn2 = tf.nn.elu(batch_norm_layer(hidden2))
- logits_before_bn = dense_layer(bn2, n_outputs, name="outputs", activation=tf.nn.selu)
- logits = batch_norm_layer(logits_before_bn)
-
-with tf.name_scope("loss"):
- xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)
- loss = tf.reduce_mean(xentropy, name="loss")
-
-with tf.name_scope("train"):
- optimizer = tf.train.GradientDescentOptimizer(learning_rate)
- training_op = optimizer.minimize(loss)
-
-with tf.name_scope("eval"):
- correct = tf.nn.in_top_k(logits, y, 1)
- accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
-
-init = tf.global_variables_initializer()
-accuracy_summary = tf.summary.scalar('Accuracy', accuracy)
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-extra_update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
-
-with tf.Session() as sess:
- init.run()
- for epoch in range(n_epochs):
- for iteration in range(mnist.train.num_examples // batch_size):
- X_batch, y_batch = mnist.train.next_batch(batch_size)
- sess.run([training_op, extra_update_ops],
- feed_dict={training: True, X: X_batch, y: y_batch})
-
- accuracy_val = accuracy.eval(feed_dict={X: mnist.test.images,
- y: mnist.test.labels})
- print(epoch, "Test accuracy:", accuracy_val)
-
- # Save summary for tensorboard
- summary_str = accuracy_summary.eval(feed_dict={X: mnist.validation.images,
- y: mnist.validation.labels})
- file_writer.add_summary(summary_str, epoch)
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':logits})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
-
-
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt
deleted file mode 100644
index f3ce68a1cbd..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,32648 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "AssignSub"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "BiasAddGrad"
- input_arg {
- name: "out_backprop"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DynamicStitch"
- input_arg {
- name: "indices"
- type: DT_INT32
- number_attr: "N"
- }
- input_arg {
- name: "data"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "merged"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Elu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "EluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "FloorMod"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "InTopKV2"
- input_arg {
- name: "predictions"
- type: DT_FLOAT
- }
- input_arg {
- name: "targets"
- type_attr: "T"
- }
- input_arg {
- name: "k"
- type_attr: "T"
- }
- output_arg {
- name: "precision"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "PreventGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "message"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Range"
- input_arg {
- name: "start"
- type_attr: "Tidx"
- }
- input_arg {
- name: "limit"
- type_attr: "Tidx"
- }
- input_arg {
- name: "delta"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "Tidx"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Rsqrt"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RsqrtGrad"
- input_arg {
- name: "y"
- type_attr: "T"
- }
- input_arg {
- name: "dy"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Selu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "SeluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "SparseSoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "Tlabels"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "Tlabels"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SquaredDifference"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Squeeze"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "squeeze_dims"
- type: "list(int)"
- default_value {
- list {
- }
- }
- has_minimum: true
- }
- }
- op {
- name: "StopGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "X"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "training/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "training"
- op: "PlaceholderWithDefault"
- input: "training/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.057587556540966034
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "hidden1/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "hidden1/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "hidden1/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "hidden1/kernel/Initializer/truncated_normal/mul"
- input: "hidden1/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden1/kernel/Assign"
- op: "Assign"
- input: "hidden1/kernel"
- input: "hidden1/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden1/kernel/read"
- op: "Identity"
- input: "hidden1/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden1/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden1/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden1/bias/Assign"
- op: "Assign"
- input: "hidden1/bias"
- input: "hidden1/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden1/bias/read"
- op: "Identity"
- input: "hidden1/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/MatMul"
- op: "MatMul"
- input: "X"
- input: "hidden1/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden1/BiasAdd"
- op: "BiasAdd"
- input: "dnn/hidden1/MatMul"
- input: "hidden1/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/hidden1/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/Maximum"
- op: "Maximum"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/gamma/Assign"
- op: "Assign"
- input: "batch_normalization/gamma"
- input: "batch_normalization/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/gamma/read"
- op: "Identity"
- input: "batch_normalization/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/beta/Assign"
- op: "Assign"
- input: "batch_normalization/beta"
- input: "batch_normalization/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/beta/read"
- op: "Identity"
- input: "batch_normalization/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization/moving_mean"
- input: "batch_normalization/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/moving_mean/read"
- op: "Identity"
- input: "batch_normalization/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization/moving_variance"
- input: "batch_normalization/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization/moving_variance/read"
- op: "Identity"
- input: "batch_normalization/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/mean"
- op: "Mean"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- input: "dnn/batch_normalization/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization/moments/Squeeze"
- input: "dnn/batch_normalization/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization/moving_mean/read"
- input: "dnn/batch_normalization/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "dnn/batch_normalization/ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization/moments/Squeeze_1"
- input: "dnn/batch_normalization/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization/moving_variance/read"
- input: "dnn/batch_normalization/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "dnn/batch_normalization/ExpandDims_2"
- input: "dnn/batch_normalization/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_4/input"
- input: "dnn/batch_normalization/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization/ExpandDims_5/input"
- input: "dnn/batch_normalization/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Select_2"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_2"
- input: "dnn/batch_normalization/ExpandDims_4"
- input: "dnn/batch_normalization/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization/moving_mean/read"
- input: "dnn/batch_normalization/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization/moving_mean"
- input: "dnn/batch_normalization/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization/moving_variance/read"
- input: "dnn/batch_normalization/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization/moving_variance"
- input: "dnn/batch_normalization/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization/Squeeze_1"
- input: "dnn/batch_normalization/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "batch_normalization/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization/Squeeze"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization/beta/read"
- input: "dnn/batch_normalization/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization/batchnorm/mul_1"
- input: "dnn/batch_normalization/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/Elu"
- op: "Elu"
- input: "dnn/batch_normalization/batchnorm/add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: ",\001\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.09309493005275726
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "hidden2/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "hidden2/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "hidden2/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "hidden2/kernel/Initializer/truncated_normal/mul"
- input: "hidden2/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden2/kernel/Assign"
- op: "Assign"
- input: "hidden2/kernel"
- input: "hidden2/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden2/kernel/read"
- op: "Identity"
- input: "hidden2/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden2/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "hidden2/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "hidden2/bias/Assign"
- op: "Assign"
- input: "hidden2/bias"
- input: "hidden2/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "hidden2/bias/read"
- op: "Identity"
- input: "hidden2/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/MatMul"
- op: "MatMul"
- input: "dnn/Elu"
- input: "hidden2/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden2/BiasAdd"
- op: "BiasAdd"
- input: "dnn/hidden2/MatMul"
- input: "hidden2/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/hidden2/Elu"
- op: "Elu"
- input: "dnn/hidden2/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/Assign"
- op: "Assign"
- input: "batch_normalization_1/gamma"
- input: "batch_normalization_1/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/gamma/read"
- op: "Identity"
- input: "batch_normalization_1/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/Assign"
- op: "Assign"
- input: "batch_normalization_1/beta"
- input: "batch_normalization_1/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/beta/read"
- op: "Identity"
- input: "batch_normalization_1/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization_1/moving_mean"
- input: "batch_normalization_1/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_mean/read"
- op: "Identity"
- input: "batch_normalization_1/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization_1/moving_variance"
- input: "batch_normalization_1/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_1/moving_variance/read"
- op: "Identity"
- input: "batch_normalization_1/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/mean"
- op: "Mean"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization_2/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- input: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/moments/Squeeze"
- input: "dnn/batch_normalization_2/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization_1/moving_mean/read"
- input: "dnn/batch_normalization_2/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "dnn/batch_normalization_2/ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/moments/Squeeze_1"
- input: "dnn/batch_normalization_2/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization_1/moving_variance/read"
- input: "dnn/batch_normalization_2/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "dnn/batch_normalization_2/ExpandDims_2"
- input: "dnn/batch_normalization_2/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_4/input"
- input: "dnn/batch_normalization_2/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization_2/ExpandDims_5/input"
- input: "dnn/batch_normalization_2/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_2/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Select_2"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_2"
- input: "dnn/batch_normalization_2/ExpandDims_4"
- input: "dnn/batch_normalization_2/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization_2/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization_2/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization_1/moving_mean/read"
- input: "dnn/batch_normalization_2/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization_2/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization_1/moving_mean"
- input: "dnn/batch_normalization_2/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization_2/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization_1/moving_variance/read"
- input: "dnn/batch_normalization_2/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization_1/moving_variance"
- input: "dnn/batch_normalization_2/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization_2/Squeeze_1"
- input: "dnn/batch_normalization_2/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization_2/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "batch_normalization_1/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization_2/Squeeze"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_1/beta/read"
- input: "dnn/batch_normalization_2/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_2/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization_2/batchnorm/mul_1"
- input: "dnn/batch_normalization_2/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/Elu_1"
- op: "Elu"
- input: "dnn/batch_normalization_2/batchnorm/add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "d\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.16124515235424042
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "outputs/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "outputs/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "outputs/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "outputs/kernel/Initializer/truncated_normal/mul"
- input: "outputs/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/kernel/Assign"
- op: "Assign"
- input: "outputs/kernel"
- input: "outputs/kernel/Initializer/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/kernel/read"
- op: "Identity"
- input: "outputs/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/bias/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "outputs/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/bias/read"
- op: "Identity"
- input: "outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/MatMul"
- op: "MatMul"
- input: "dnn/Elu_1"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/outputs/BiasAdd"
- op: "BiasAdd"
- input: "dnn/outputs/MatMul"
- input: "outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dnn/outputs/Selu"
- op: "Selu"
- input: "dnn/outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/Assign"
- op: "Assign"
- input: "batch_normalization_2/gamma"
- input: "batch_normalization_2/gamma/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/gamma/read"
- op: "Identity"
- input: "batch_normalization_2/gamma"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/beta"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/Assign"
- op: "Assign"
- input: "batch_normalization_2/beta"
- input: "batch_normalization_2/beta/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/beta/read"
- op: "Identity"
- input: "batch_normalization_2/beta"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/Assign"
- op: "Assign"
- input: "batch_normalization_2/moving_mean"
- input: "batch_normalization_2/moving_mean/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_mean/read"
- op: "Identity"
- input: "batch_normalization_2/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/Assign"
- op: "Assign"
- input: "batch_normalization_2/moving_variance"
- input: "batch_normalization_2/moving_variance/Initializer/ones"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "batch_normalization_2/moving_variance/read"
- op: "Identity"
- input: "batch_normalization_2/moving_variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/mean"
- op: "Mean"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/StopGradient"
- op: "StopGradient"
- input: "dnn/batch_normalization_3/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/SquaredDifference"
- op: "SquaredDifference"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/StopGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/variance"
- op: "Mean"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- input: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/moments/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/moments/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/moments/variance"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/moments/Squeeze"
- input: "dnn/batch_normalization_3/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_1/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_1"
- op: "ExpandDims"
- input: "batch_normalization_2/moving_mean/read"
- input: "dnn/batch_normalization_3/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "dnn/batch_normalization_3/ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_2/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_2"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/moments/Squeeze_1"
- input: "dnn/batch_normalization_3/ExpandDims_2/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_3/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_3"
- op: "ExpandDims"
- input: "batch_normalization_2/moving_variance/read"
- input: "dnn/batch_normalization_3/ExpandDims_3/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_1"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape_1/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "dnn/batch_normalization_3/ExpandDims_2"
- input: "dnn/batch_normalization_3/ExpandDims_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze_1"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.8999999761581421
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_4"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_4/input"
- input: "dnn/batch_normalization_3/ExpandDims_4/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/ExpandDims_5"
- op: "ExpandDims"
- input: "dnn/batch_normalization_3/ExpandDims_5/input"
- input: "dnn/batch_normalization_3/ExpandDims_5/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_2/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Reshape_2"
- op: "Reshape"
- input: "training"
- input: "dnn/batch_normalization_3/Reshape_2/shape"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Select_2"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_2"
- input: "dnn/batch_normalization_3/ExpandDims_4"
- input: "dnn/batch_normalization_3/ExpandDims_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/Squeeze_2"
- op: "Squeeze"
- input: "dnn/batch_normalization_3/Select_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "squeeze_dims"
- value {
- list {
- i: 0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub"
- op: "Sub"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub/x"
- input: "dnn/batch_normalization_3/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/sub_1"
- op: "Sub"
- input: "batch_normalization_2/moving_mean/read"
- input: "dnn/batch_normalization_3/Squeeze"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub_1"
- input: "dnn/batch_normalization_3/AssignMovingAvg/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg"
- op: "AssignSub"
- input: "batch_normalization_2/moving_mean"
- input: "dnn/batch_normalization_3/AssignMovingAvg/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub"
- op: "Sub"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub/x"
- input: "dnn/batch_normalization_3/Squeeze_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1"
- op: "Sub"
- input: "batch_normalization_2/moving_variance/read"
- input: "dnn/batch_normalization_3/Squeeze_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub_1"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/AssignMovingAvg_1"
- op: "AssignSub"
- input: "batch_normalization_2/moving_variance"
- input: "dnn/batch_normalization_3/AssignMovingAvg_1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0010000000474974513
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add"
- op: "Add"
- input: "dnn/batch_normalization_3/Squeeze_1"
- input: "dnn/batch_normalization_3/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "dnn/batch_normalization_3/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul"
- op: "Mul"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "batch_normalization_2/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul_1"
- op: "Mul"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/mul_2"
- op: "Mul"
- input: "dnn/batch_normalization_3/Squeeze"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/sub"
- op: "Sub"
- input: "batch_normalization_2/beta/read"
- input: "dnn/batch_normalization_3/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/batch_normalization_3/batchnorm/add_1"
- op: "Add"
- input: "dnn/batch_normalization_3/batchnorm/mul_1"
- input: "dnn/batch_normalization_3/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- op: "SparseSoftmaxCrossEntropyWithLogits"
- input: "dnn/batch_normalization_3/batchnorm/add_1"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tlabels"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/loss"
- op: "Mean"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- input: "loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "train/gradients/Fill"
- op: "Fill"
- input: "train/gradients/Shape"
- input: "train/gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/Fill"
- input: "train/gradients/loss/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Tile"
- op: "Tile"
- input: "train/gradients/loss/loss_grad/Reshape"
- input: "train/gradients/loss/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_1"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_1"
- input: "train/gradients/loss/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_2"
- input: "train/gradients/loss/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/loss/loss_grad/Prod_1"
- input: "train/gradients/loss/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/loss/loss_grad/Prod"
- input: "train/gradients/loss/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Cast"
- op: "Cast"
- input: "train/gradients/loss/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/loss/loss_grad/Tile"
- input: "train/gradients/loss/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/zeros_like"
- op: "ZerosLike"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- op: "PreventGradient"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "message"
- value {
- s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()"
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "train/gradients/loss/loss_grad/truediv"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_3/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/outputs/Selu"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization_3/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_3/Squeeze"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN"
- input: "batch_normalization_2/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "train/gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_3/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization_3/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_3/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_3/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_3/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization_3/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/outputs/Selu"
- input: "dnn/batch_normalization_3/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization_3/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_3/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_1"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_3/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_3/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- op: "SeluGrad"
- input: "train/gradients/AddN_1"
- input: "dnn/outputs/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/Selu_grad/SeluGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/outputs/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/Elu_1"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/Elu_1_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- input: "dnn/Elu_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_2/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/Elu_1_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/Elu_1_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden2/Elu"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization_2/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_2/Squeeze"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_2"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN_2"
- input: "batch_normalization_1/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "train/gradients/AddN_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_2/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization_2/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization_2/Reshape_1"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization_2/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_2/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization_2/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/hidden2/Elu"
- input: "dnn/batch_normalization_2/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization_2/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization_2/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_3"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization_2/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization_2/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/AddN_3"
- input: "dnn/hidden2/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/Elu_grad/EluGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/hidden2/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- input: "hidden2/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/Elu"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/Elu_grad/EluGrad"
- op: "EluGrad"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- input: "dnn/Elu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization/batchnorm/mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/Elu_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/Elu_grad/EluGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/Maximum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Neg"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- input: "dnn/batch_normalization/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization/Squeeze"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_4"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_2_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/AddN_4"
- input: "batch_normalization/gamma/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "train/gradients/AddN_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization/Squeeze_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- op: "RsqrtGrad"
- input: "dnn/batch_normalization/batchnorm/Rsqrt"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/batchnorm/Rsqrt_grad/RsqrtGrad"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- input: "^train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/batchnorm/add_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- op: "Select"
- input: "dnn/batch_normalization/Reshape_1"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/zeros_like"
- input: "train/gradients/dnn/batch_normalization/Squeeze_1_grad/Reshape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- input: "^train/gradients/dnn/batch_normalization/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/Select_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/ExpandDims_2_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- op: "Shape"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/add"
- op: "Add"
- input: "dnn/batch_normalization/moments/variance/reduction_indices"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/add"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/start"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Size"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/range"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/mod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_1_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- op: "Shape"
- input: "dnn/batch_normalization/moments/SquaredDifference"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Prod"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/variance_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Tile"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar"
- op: "Const"
- input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 2.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/scalar"
- input: "train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub"
- op: "Sub"
- input: "dnn/hidden1/Maximum"
- input: "dnn/batch_normalization/moments/StopGradient"
- input: "^train/gradients/dnn/batch_normalization/moments/variance_grad/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- op: "Mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/mul_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Sum_1"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- op: "Neg"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- input: "^train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/Neg"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/add"
- op: "Add"
- input: "dnn/batch_normalization/moments/mean/reduction_indices"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod"
- op: "FloorMod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/add"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/range"
- op: "Range"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/start"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Size"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range/delta"
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill"
- op: "Fill"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_1"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- op: "DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/range"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/mod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Fill"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/Squeeze_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/DynamicStitch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile"
- op: "Tile"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Reshape"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- op: "Shape"
- input: "dnn/hidden1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_3"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1"
- op: "Maximum"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod_1"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1"
- op: "FloorDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Prod"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Maximum_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/moments/mean_grad/Shape_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast"
- op: "Cast"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/floordiv_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Tile"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_5"
- op: "AddN"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/moments/SquaredDifference_grad/tuple/control_dependency"
- input: "train/gradients/dnn/batch_normalization/moments/mean_grad/truediv"
- attr {
- key: "N"
- value {
- i: 3
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/batch_normalization/batchnorm/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- op: "Shape"
- input: "train/gradients/AddN_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- op: "Fill"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/AddN_5"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- input: "train/gradients/AddN_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- input: "dnn/hidden1/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN_6"
- op: "AddN"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- op: "BiasAddGrad"
- input: "train/gradients/AddN_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/AddN_6"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/AddN_6"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- input: "^train/gradients/dnn/hidden1/BiasAdd_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/BiasAdd_grad/BiasAddGrad"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- input: "hidden1/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "X"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden1/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden1/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden1/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden2/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_hidden2/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "hidden2/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_1/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_1/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_2/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_outputs/kernel/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "outputs/kernel"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_outputs/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "outputs/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/BiasAdd_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_2/gamma"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "batch_normalization_2/beta"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/batch_normalization_3/batchnorm/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent"
- op: "NoOp"
- input: "^train/GradientDescent/update_hidden1/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden1/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization/beta/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden2/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_hidden2/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_1/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_1/beta/ApplyGradientDescent"
- input: "^train/GradientDescent/update_outputs/kernel/ApplyGradientDescent"
- input: "^train/GradientDescent/update_outputs/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_2/gamma/ApplyGradientDescent"
- input: "^train/GradientDescent/update_batch_normalization_2/beta/ApplyGradientDescent"
- }
- node {
- name: "eval/in_top_k/InTopKV2/k"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 1
- }
- }
- }
- }
- node {
- name: "eval/in_top_k/InTopKV2"
- op: "InTopKV2"
- input: "dnn/batch_normalization_3/batchnorm/add_1"
- input: "y"
- input: "eval/in_top_k/InTopKV2/k"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Cast"
- op: "Cast"
- input: "eval/in_top_k/InTopKV2"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "eval/Mean"
- op: "Mean"
- input: "eval/Cast"
- input: "eval/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^hidden1/kernel/Assign"
- input: "^hidden1/bias/Assign"
- input: "^batch_normalization/gamma/Assign"
- input: "^batch_normalization/beta/Assign"
- input: "^batch_normalization/moving_mean/Assign"
- input: "^batch_normalization/moving_variance/Assign"
- input: "^hidden2/kernel/Assign"
- input: "^hidden2/bias/Assign"
- input: "^batch_normalization_1/gamma/Assign"
- input: "^batch_normalization_1/beta/Assign"
- input: "^batch_normalization_1/moving_mean/Assign"
- input: "^batch_normalization_1/moving_variance/Assign"
- input: "^outputs/kernel/Assign"
- input: "^outputs/bias/Assign"
- input: "^batch_normalization_2/gamma/Assign"
- input: "^batch_normalization_2/beta/Assign"
- input: "^batch_normalization_2/moving_mean/Assign"
- input: "^batch_normalization_2/moving_variance/Assign"
- }
- node {
- name: "Accuracy/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "Accuracy"
- }
- }
- }
- }
- node {
- name: "Accuracy"
- op: "ScalarSummary"
- input: "Accuracy/tags"
- input: "eval/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_2105935f653947478038680db7095a2a/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 18
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 18
- }
- }
- string_val: "batch_normalization/beta"
- string_val: "batch_normalization/gamma"
- string_val: "batch_normalization/moving_mean"
- string_val: "batch_normalization/moving_variance"
- string_val: "batch_normalization_1/beta"
- string_val: "batch_normalization_1/gamma"
- string_val: "batch_normalization_1/moving_mean"
- string_val: "batch_normalization_1/moving_variance"
- string_val: "batch_normalization_2/beta"
- string_val: "batch_normalization_2/gamma"
- string_val: "batch_normalization_2/moving_mean"
- string_val: "batch_normalization_2/moving_variance"
- string_val: "hidden1/bias"
- string_val: "hidden1/kernel"
- string_val: "hidden2/bias"
- string_val: "hidden2/kernel"
- string_val: "outputs/bias"
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 18
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 18
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "batch_normalization/beta"
- input: "batch_normalization/gamma"
- input: "batch_normalization/moving_mean"
- input: "batch_normalization/moving_variance"
- input: "batch_normalization_1/beta"
- input: "batch_normalization_1/gamma"
- input: "batch_normalization_1/moving_mean"
- input: "batch_normalization_1/moving_variance"
- input: "batch_normalization_2/beta"
- input: "batch_normalization_2/gamma"
- input: "batch_normalization_2/moving_mean"
- input: "batch_normalization_2/moving_variance"
- input: "hidden1/bias"
- input: "hidden1/kernel"
- input: "hidden2/bias"
- input: "hidden2/kernel"
- input: "outputs/bias"
- input: "outputs/kernel"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "batch_normalization/beta"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "batch_normalization/gamma"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "batch_normalization/moving_mean"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "batch_normalization/moving_variance"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "batch_normalization_1/beta"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "batch_normalization_1/gamma"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_6/tensor_names"
- input: "save/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_6"
- op: "Assign"
- input: "batch_normalization_1/moving_mean"
- input: "save/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_1/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_7/tensor_names"
- input: "save/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_7"
- op: "Assign"
- input: "batch_normalization_1/moving_variance"
- input: "save/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_1/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/beta"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_8/tensor_names"
- input: "save/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_8"
- op: "Assign"
- input: "batch_normalization_2/beta"
- input: "save/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/gamma"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_9/tensor_names"
- input: "save/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_9"
- op: "Assign"
- input: "batch_normalization_2/gamma"
- input: "save/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/moving_mean"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_10/tensor_names"
- input: "save/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_10"
- op: "Assign"
- input: "batch_normalization_2/moving_mean"
- input: "save/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "batch_normalization_2/moving_variance"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_11/tensor_names"
- input: "save/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_11"
- op: "Assign"
- input: "batch_normalization_2/moving_variance"
- input: "save/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_normalization_2/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden1/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_12/tensor_names"
- input: "save/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_12"
- op: "Assign"
- input: "hidden1/bias"
- input: "save/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_13/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden1/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_13/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_13"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_13/tensor_names"
- input: "save/RestoreV2_13/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_13"
- op: "Assign"
- input: "hidden1/kernel"
- input: "save/RestoreV2_13"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden1/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_14/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden2/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_14/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_14"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_14/tensor_names"
- input: "save/RestoreV2_14/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_14"
- op: "Assign"
- input: "hidden2/bias"
- input: "save/RestoreV2_14"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_15/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "hidden2/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_15/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_15"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_15/tensor_names"
- input: "save/RestoreV2_15/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_15"
- op: "Assign"
- input: "hidden2/kernel"
- input: "save/RestoreV2_15"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@hidden2/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_16/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_16/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_16"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_16/tensor_names"
- input: "save/RestoreV2_16/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_16"
- op: "Assign"
- input: "outputs/bias"
- input: "save/RestoreV2_16"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_17/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_17/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_17"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_17/tensor_names"
- input: "save/RestoreV2_17/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_17"
- op: "Assign"
- input: "outputs/kernel"
- input: "save/RestoreV2_17"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- input: "^save/Assign_6"
- input: "^save/Assign_7"
- input: "^save/Assign_8"
- input: "^save/Assign_9"
- input: "^save/Assign_10"
- input: "^save/Assign_11"
- input: "^save/Assign_12"
- input: "^save/Assign_13"
- input: "^save/Assign_14"
- input: "^save/Assign_15"
- input: "^save/Assign_16"
- input: "^save/Assign_17"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "Accuracy:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "train/GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0"
- value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0"
- value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0"
- value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0"
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0"
- }
- }
- }
- collection_def {
- key: "update_ops"
- value {
- node_list {
- value: "dnn/batch_normalization/AssignMovingAvg:0"
- value: "dnn/batch_normalization/AssignMovingAvg_1:0"
- value: "dnn/batch_normalization_2/AssignMovingAvg:0"
- value: "dnn/batch_normalization_2/AssignMovingAvg_1:0"
- value: "dnn/batch_normalization_3/AssignMovingAvg:0"
- value: "dnn/batch_normalization_3/AssignMovingAvg_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\020hidden1/kernel:0\022\025hidden1/kernel/Assign\032\025hidden1/kernel/read:02-hidden1/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden1/bias:0\022\023hidden1/bias/Assign\032\023hidden1/bias/read:02 hidden1/bias/Initializer/zeros:0"
- value: "\n\033batch_normalization/gamma:0\022 batch_normalization/gamma/Assign\032 batch_normalization/gamma/read:02,batch_normalization/gamma/Initializer/ones:0"
- value: "\n\032batch_normalization/beta:0\022\037batch_normalization/beta/Assign\032\037batch_normalization/beta/read:02,batch_normalization/beta/Initializer/zeros:0"
- value: "\n!batch_normalization/moving_mean:0\022&batch_normalization/moving_mean/Assign\032&batch_normalization/moving_mean/read:023batch_normalization/moving_mean/Initializer/zeros:0"
- value: "\n%batch_normalization/moving_variance:0\022*batch_normalization/moving_variance/Assign\032*batch_normalization/moving_variance/read:026batch_normalization/moving_variance/Initializer/ones:0"
- value: "\n\020hidden2/kernel:0\022\025hidden2/kernel/Assign\032\025hidden2/kernel/read:02-hidden2/kernel/Initializer/truncated_normal:0"
- value: "\n\016hidden2/bias:0\022\023hidden2/bias/Assign\032\023hidden2/bias/read:02 hidden2/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_1/gamma:0\022\"batch_normalization_1/gamma/Assign\032\"batch_normalization_1/gamma/read:02.batch_normalization_1/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_1/beta:0\022!batch_normalization_1/beta/Assign\032!batch_normalization_1/beta/read:02.batch_normalization_1/beta/Initializer/zeros:0"
- value: "\n#batch_normalization_1/moving_mean:0\022(batch_normalization_1/moving_mean/Assign\032(batch_normalization_1/moving_mean/read:025batch_normalization_1/moving_mean/Initializer/zeros:0"
- value: "\n\'batch_normalization_1/moving_variance:0\022,batch_normalization_1/moving_variance/Assign\032,batch_normalization_1/moving_variance/read:028batch_normalization_1/moving_variance/Initializer/ones:0"
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02-outputs/kernel/Initializer/truncated_normal:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- value: "\n\035batch_normalization_2/gamma:0\022\"batch_normalization_2/gamma/Assign\032\"batch_normalization_2/gamma/read:02.batch_normalization_2/gamma/Initializer/ones:0"
- value: "\n\034batch_normalization_2/beta:0\022!batch_normalization_2/beta/Assign\032!batch_normalization_2/beta/read:02.batch_normalization_2/beta/Initializer/zeros:0"
- value: "\n#batch_normalization_2/moving_mean:0\022(batch_normalization_2/moving_mean/Assign\032(batch_normalization_2/moving_mean/read:025batch_normalization_2/moving_mean/Initializer/zeros:0"
- value: "\n\'batch_normalization_2/moving_variance:0\022,batch_normalization_2/moving_variance/Assign\032,batch_normalization_2/moving_variance/read:028batch_normalization_2/moving_variance/Initializer/ones:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "X:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "dnn/batch_normalization_3/batchnorm/add_1:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 875e8361e10..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index
deleted file mode 100644
index 46c7b258cf5..00000000000
--- a/model-integration/src/test/models/tensorflow/batch_norm/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt
deleted file mode 100644
index a669e69b709..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,14726 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyAdagrad"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "accum"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "lr"
- type_attr: "T"
- }
- input_arg {
- name: "grad"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "AssignAdd"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "LessEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeSummary"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Neg"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reciprocal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Relu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "ReluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "SigmoidGrad"
- input_arg {
- name: "y"
- type_attr: "T"
- }
- input_arg {
- name: "dy"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "input_u"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- node {
- name: "input_d"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- node {
- name: "input_y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "input_concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "input_concat"
- op: "ConcatV2"
- input: "input_d"
- input: "input_u"
- input: "input_concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\001\000\000\000\002\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal/mul"
- op: "Mul"
- input: "truncated_normal/TruncatedNormal"
- input: "truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal"
- op: "Add"
- input: "truncated_normal/mul"
- input: "truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden/Assign"
- op: "Assign"
- input: "W_hidden"
- input: "truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden/read"
- op: "Identity"
- input: "W_hidden"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden/Assign"
- op: "Assign"
- input: "b_hidden"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden/read"
- op: "Identity"
- input: "b_hidden"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input_concat"
- input: "W_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "b_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden_layer"
- op: "Relu"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\002\000\000\200\000\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "truncated_normal_1/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal_1/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal_1/mul"
- op: "Mul"
- input: "truncated_normal_1/TruncatedNormal"
- input: "truncated_normal_1/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal_1"
- op: "Add"
- input: "truncated_normal_1/mul"
- input: "truncated_normal_1/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden_2"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden_2/Assign"
- op: "Assign"
- input: "W_hidden_2"
- input: "truncated_normal_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden_2/read"
- op: "Identity"
- input: "W_hidden_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden_2"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden_2/Assign"
- op: "Assign"
- input: "b_hidden_2"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden_2/read"
- op: "Identity"
- input: "b_hidden_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul_1"
- op: "MatMul"
- input: "hidden_layer"
- input: "W_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add_1"
- op: "Add"
- input: "MatMul_1"
- input: "b_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "hidden_layer_2"
- op: "Relu"
- input: "add_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\200\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "random_uniform/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: -0.10000000149011612
- }
- }
- }
- }
- node {
- name: "random_uniform/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform/sub"
- op: "Sub"
- input: "random_uniform/max"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/mul"
- op: "Mul"
- input: "random_uniform/RandomUniform"
- input: "random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform"
- op: "Add"
- input: "random_uniform/mul"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "W_final"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_final/Assign"
- op: "Assign"
- input: "W_final"
- input: "random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_final/read"
- op: "Identity"
- input: "W_final"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "b_final"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_final/Assign"
- op: "Assign"
- input: "b_final"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_final/read"
- op: "Identity"
- input: "b_final"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul_2"
- op: "MatMul"
- input: "hidden_layer_2"
- input: "W_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add_2"
- op: "Add"
- input: "MatMul_2"
- input: "b_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Sigmoid"
- input: "add_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "GreaterEqual/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GreaterEqual"
- op: "GreaterEqual"
- input: "y"
- input: "GreaterEqual/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "prediction"
- op: "Cast"
- input: "GreaterEqual"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "clip_by_value/Minimum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.9999899864196777
- }
- }
- }
- }
- node {
- name: "clip_by_value/Minimum"
- op: "Minimum"
- input: "y"
- input: "clip_by_value/Minimum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "clip_by_value/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999747378752e-06
- }
- }
- }
- }
- node {
- name: "clip_by_value"
- op: "Maximum"
- input: "clip_by_value/Minimum"
- input: "clip_by_value/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Neg"
- op: "Neg"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Log"
- op: "Log"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "mul"
- op: "Mul"
- input: "Neg"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sub"
- op: "Sub"
- input: "sub/x"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sub_1"
- op: "Sub"
- input: "sub_1/x"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Log_1"
- op: "Log"
- input: "sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "mul_1"
- op: "Mul"
- input: "sub"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "sub_2"
- op: "Sub"
- input: "mul"
- input: "mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss"
- op: "Mean"
- input: "sub_2"
- input: "Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "prediction"
- input: "input_y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "accuracy"
- op: "Mean"
- input: "Cast"
- input: "Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "global_step/initial_value"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "global_step"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "global_step/Assign"
- op: "Assign"
- input: "global_step"
- input: "global_step/initial_value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "global_step/read"
- op: "Identity"
- input: "global_step"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape"
- op: "Shape"
- input: "sub_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/loss_grad/Tile"
- op: "Tile"
- input: "gradients/loss_grad/Reshape"
- input: "gradients/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape_1"
- op: "Shape"
- input: "sub_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Prod"
- op: "Prod"
- input: "gradients/loss_grad/Shape_1"
- input: "gradients/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Prod_1"
- op: "Prod"
- input: "gradients/loss_grad/Shape_2"
- input: "gradients/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Maximum"
- op: "Maximum"
- input: "gradients/loss_grad/Prod_1"
- input: "gradients/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/loss_grad/Prod"
- input: "gradients/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/Cast"
- op: "Cast"
- input: "gradients/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/loss_grad/truediv"
- op: "RealDiv"
- input: "gradients/loss_grad/Tile"
- input: "gradients/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Shape"
- op: "Shape"
- input: "mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Shape_1"
- op: "Shape"
- input: "mul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/sub_2_grad/Shape"
- input: "gradients/sub_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Sum"
- op: "Sum"
- input: "gradients/loss_grad/truediv"
- input: "gradients/sub_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/sub_2_grad/Sum"
- input: "gradients/sub_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Sum_1"
- op: "Sum"
- input: "gradients/loss_grad/truediv"
- input: "gradients/sub_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Neg"
- op: "Neg"
- input: "gradients/sub_2_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/sub_2_grad/Neg"
- input: "gradients/sub_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/sub_2_grad/Reshape"
- input: "^gradients/sub_2_grad/Reshape_1"
- }
- node {
- name: "gradients/sub_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/sub_2_grad/Reshape"
- input: "^gradients/sub_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/sub_2_grad/Reshape_1"
- input: "^gradients/sub_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Shape"
- op: "Shape"
- input: "Neg"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_grad/Shape_1"
- op: "Shape"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/mul_grad/Shape"
- input: "gradients/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/mul"
- op: "Mul"
- input: "gradients/sub_2_grad/tuple/control_dependency"
- input: "Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Sum"
- op: "Sum"
- input: "gradients/mul_grad/mul"
- input: "gradients/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_grad/Reshape"
- op: "Reshape"
- input: "gradients/mul_grad/Sum"
- input: "gradients/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/mul_1"
- op: "Mul"
- input: "Neg"
- input: "gradients/sub_2_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Sum_1"
- op: "Sum"
- input: "gradients/mul_grad/mul_1"
- input: "gradients/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/mul_grad/Sum_1"
- input: "gradients/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_grad/Reshape"
- input: "^gradients/mul_grad/Reshape_1"
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_grad/Reshape"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_grad/Reshape_1"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Shape"
- op: "Shape"
- input: "sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Shape_1"
- op: "Shape"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/mul_1_grad/Shape"
- input: "gradients/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/mul"
- op: "Mul"
- input: "gradients/sub_2_grad/tuple/control_dependency_1"
- input: "Log_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Sum"
- op: "Sum"
- input: "gradients/mul_1_grad/mul"
- input: "gradients/mul_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/mul_1_grad/Sum"
- input: "gradients/mul_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/mul_1"
- op: "Mul"
- input: "sub"
- input: "gradients/sub_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/mul_1_grad/mul_1"
- input: "gradients/mul_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/mul_1_grad/Sum_1"
- input: "gradients/mul_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_1_grad/Reshape"
- input: "^gradients/mul_1_grad/Reshape_1"
- }
- node {
- name: "gradients/mul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_1_grad/Reshape"
- input: "^gradients/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_1_grad/Reshape_1"
- input: "^gradients/mul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_grad/Reciprocal"
- op: "Reciprocal"
- input: "clip_by_value"
- input: "^gradients/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_grad/mul"
- op: "Mul"
- input: "gradients/mul_grad/tuple/control_dependency_1"
- input: "gradients/Log_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_1_grad/Reciprocal"
- op: "Reciprocal"
- input: "sub_1"
- input: "^gradients/mul_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Log_1_grad/mul"
- op: "Mul"
- input: "gradients/mul_1_grad/tuple/control_dependency_1"
- input: "gradients/Log_1_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Shape_1"
- op: "Shape"
- input: "clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/sub_1_grad/Shape"
- input: "gradients/sub_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Sum"
- op: "Sum"
- input: "gradients/Log_1_grad/mul"
- input: "gradients/sub_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/sub_1_grad/Sum"
- input: "gradients/sub_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/Log_1_grad/mul"
- input: "gradients/sub_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Neg"
- op: "Neg"
- input: "gradients/sub_1_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/sub_1_grad/Neg"
- input: "gradients/sub_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/sub_1_grad/Reshape"
- input: "^gradients/sub_1_grad/Reshape_1"
- }
- node {
- name: "gradients/sub_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/sub_1_grad/Reshape"
- input: "^gradients/sub_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/sub_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/sub_1_grad/Reshape_1"
- input: "^gradients/sub_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/sub_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN"
- op: "AddN"
- input: "gradients/Log_grad/mul"
- input: "gradients/sub_1_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Log_grad/mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape"
- op: "Shape"
- input: "clip_by_value/Minimum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Shape_2"
- op: "Shape"
- input: "gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/zeros"
- op: "Fill"
- input: "gradients/clip_by_value_grad/Shape_2"
- input: "gradients/clip_by_value_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "clip_by_value/Minimum"
- input: "clip_by_value/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/clip_by_value_grad/Shape"
- input: "gradients/clip_by_value_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Select"
- op: "Select"
- input: "gradients/clip_by_value_grad/GreaterEqual"
- input: "gradients/AddN"
- input: "gradients/clip_by_value_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Select_1"
- op: "Select"
- input: "gradients/clip_by_value_grad/GreaterEqual"
- input: "gradients/clip_by_value_grad/zeros"
- input: "gradients/AddN"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Sum"
- op: "Sum"
- input: "gradients/clip_by_value_grad/Select"
- input: "gradients/clip_by_value_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Reshape"
- op: "Reshape"
- input: "gradients/clip_by_value_grad/Sum"
- input: "gradients/clip_by_value_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Sum_1"
- op: "Sum"
- input: "gradients/clip_by_value_grad/Select_1"
- input: "gradients/clip_by_value_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/clip_by_value_grad/Sum_1"
- input: "gradients/clip_by_value_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/clip_by_value_grad/Reshape"
- input: "^gradients/clip_by_value_grad/Reshape_1"
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/clip_by_value_grad/Reshape"
- input: "^gradients/clip_by_value_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/clip_by_value_grad/Reshape_1"
- input: "^gradients/clip_by_value_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Shape_2"
- op: "Shape"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/zeros"
- op: "Fill"
- input: "gradients/clip_by_value/Minimum_grad/Shape_2"
- input: "gradients/clip_by_value/Minimum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/LessEqual"
- op: "LessEqual"
- input: "y"
- input: "clip_by_value/Minimum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/clip_by_value/Minimum_grad/Shape"
- input: "gradients/clip_by_value/Minimum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Select"
- op: "Select"
- input: "gradients/clip_by_value/Minimum_grad/LessEqual"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- input: "gradients/clip_by_value/Minimum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Select_1"
- op: "Select"
- input: "gradients/clip_by_value/Minimum_grad/LessEqual"
- input: "gradients/clip_by_value/Minimum_grad/zeros"
- input: "gradients/clip_by_value_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Sum"
- op: "Sum"
- input: "gradients/clip_by_value/Minimum_grad/Select"
- input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Reshape"
- op: "Reshape"
- input: "gradients/clip_by_value/Minimum_grad/Sum"
- input: "gradients/clip_by_value/Minimum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Sum_1"
- op: "Sum"
- input: "gradients/clip_by_value/Minimum_grad/Select_1"
- input: "gradients/clip_by_value/Minimum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/clip_by_value/Minimum_grad/Sum_1"
- input: "gradients/clip_by_value/Minimum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/clip_by_value/Minimum_grad/Reshape"
- input: "^gradients/clip_by_value/Minimum_grad/Reshape_1"
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/clip_by_value/Minimum_grad/Reshape"
- input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/clip_by_value/Minimum_grad/Reshape_1"
- input: "^gradients/clip_by_value/Minimum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/clip_by_value/Minimum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/y_grad/SigmoidGrad"
- op: "SigmoidGrad"
- input: "y"
- input: "gradients/clip_by_value/Minimum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Shape"
- op: "Shape"
- input: "MatMul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_2_grad/Shape"
- input: "gradients/add_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Sum"
- op: "Sum"
- input: "gradients/y_grad/SigmoidGrad"
- input: "gradients/add_2_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_2_grad/Sum"
- input: "gradients/add_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Sum_1"
- op: "Sum"
- input: "gradients/y_grad/SigmoidGrad"
- input: "gradients/add_2_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_2_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_2_grad/Sum_1"
- input: "gradients/add_2_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_2_grad/Reshape"
- input: "^gradients/add_2_grad/Reshape_1"
- }
- node {
- name: "gradients/add_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_2_grad/Reshape"
- input: "^gradients/add_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_2_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_2_grad/Reshape_1"
- input: "^gradients/add_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_2_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_2_grad/tuple/control_dependency"
- input: "W_final/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/MatMul_1"
- op: "MatMul"
- input: "hidden_layer_2"
- input: "gradients/add_2_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_2_grad/MatMul"
- input: "^gradients/MatMul_2_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_2_grad/MatMul"
- input: "^gradients/MatMul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_2_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_2_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_2_grad/MatMul_1"
- input: "^gradients/MatMul_2_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_2_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/hidden_layer_2_grad/ReluGrad"
- op: "ReluGrad"
- input: "gradients/MatMul_2_grad/tuple/control_dependency"
- input: "hidden_layer_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Shape"
- op: "Shape"
- input: "MatMul_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 128
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_1_grad/Shape"
- input: "gradients/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Sum"
- op: "Sum"
- input: "gradients/hidden_layer_2_grad/ReluGrad"
- input: "gradients/add_1_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_1_grad/Sum"
- input: "gradients/add_1_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Sum_1"
- op: "Sum"
- input: "gradients/hidden_layer_2_grad/ReluGrad"
- input: "gradients/add_1_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_1_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_1_grad/Sum_1"
- input: "gradients/add_1_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_1_grad/Reshape"
- input: "^gradients/add_1_grad/Reshape_1"
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_1_grad/Reshape"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_1_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_1_grad/Reshape_1"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_1_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_1_grad/tuple/control_dependency"
- input: "W_hidden_2/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/MatMul_1"
- op: "MatMul"
- input: "hidden_layer"
- input: "gradients/add_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_1_grad/MatMul"
- input: "^gradients/MatMul_1_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_1_grad/MatMul"
- input: "^gradients/MatMul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_1_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_1_grad/MatMul_1"
- input: "^gradients/MatMul_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_1_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/hidden_layer_grad/ReluGrad"
- op: "ReluGrad"
- input: "gradients/MatMul_1_grad/tuple/control_dependency"
- input: "hidden_layer"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 512
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/hidden_layer_grad/ReluGrad"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/hidden_layer_grad/ReluGrad"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "W_hidden/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input_concat"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 256
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_hidden/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/Assign"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "W_hidden/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden/Adagrad/read"
- op: "Identity"
- input: "W_hidden/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/Assign"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "b_hidden/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden/Adagrad/read"
- op: "Identity"
- input: "b_hidden/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/Assign"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "W_hidden_2/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_hidden_2/Adagrad/read"
- op: "Identity"
- input: "W_hidden_2/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/Assign"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "b_hidden_2/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_hidden_2/Adagrad/read"
- op: "Identity"
- input: "b_hidden_2/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- }
- node {
- name: "W_final/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "W_final/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "W_final/Adagrad/Assign"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "W_final/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "W_final/Adagrad/read"
- op: "Identity"
- input: "W_final/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "b_final/Adagrad/Initializer/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "b_final/Adagrad"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "b_final/Adagrad/Assign"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "b_final/Adagrad/Initializer/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "b_final/Adagrad/read"
- op: "Identity"
- input: "b_final/Adagrad"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adagrad/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.10000000149011612
- }
- }
- }
- }
- node {
- name: "Adagrad/update_W_hidden/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_hidden/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_W_hidden_2/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_hidden_2/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_W_final/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/MatMul_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update_b_final/ApplyAdagrad"
- op: "ApplyAdagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "Adagrad/learning_rate"
- input: "gradients/add_2_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "Adagrad/update"
- op: "NoOp"
- input: "^Adagrad/update_W_hidden/ApplyAdagrad"
- input: "^Adagrad/update_b_hidden/ApplyAdagrad"
- input: "^Adagrad/update_W_hidden_2/ApplyAdagrad"
- input: "^Adagrad/update_b_hidden_2/ApplyAdagrad"
- input: "^Adagrad/update_W_final/ApplyAdagrad"
- input: "^Adagrad/update_b_final/ApplyAdagrad"
- }
- node {
- name: "Adagrad/value"
- op: "Const"
- input: "^Adagrad/update"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Adagrad"
- op: "AssignAdd"
- input: "global_step"
- input: "Adagrad/value"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss_1/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss_1"
- }
- }
- }
- }
- node {
- name: "loss_1"
- op: "ScalarSummary"
- input: "loss_1/tags"
- input: "loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "accuracy_1/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "accuracy_1"
- }
- }
- }
- }
- node {
- name: "accuracy_1"
- op: "ScalarSummary"
- input: "accuracy_1/tags"
- input: "accuracy"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Merge/MergeSummary"
- op: "MergeSummary"
- input: "loss_1"
- input: "accuracy_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Merge_1/MergeSummary"
- op: "MergeSummary"
- input: "loss_1"
- input: "accuracy_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: "W_final"
- string_val: "W_final/Adagrad"
- string_val: "W_hidden"
- string_val: "W_hidden/Adagrad"
- string_val: "W_hidden_2"
- string_val: "W_hidden_2/Adagrad"
- string_val: "b_final"
- string_val: "b_final/Adagrad"
- string_val: "b_hidden"
- string_val: "b_hidden/Adagrad"
- string_val: "b_hidden_2"
- string_val: "b_hidden_2/Adagrad"
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/Const"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "global_step"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/Const"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/Const"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "W_final"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "W_hidden"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "W_hidden_2"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_6"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_6/tensor_names"
- input: "save/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_6"
- op: "Assign"
- input: "b_final"
- input: "save/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_7"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_7/tensor_names"
- input: "save/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_7"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "save/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_8"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_8/tensor_names"
- input: "save/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_8"
- op: "Assign"
- input: "b_hidden"
- input: "save/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_9"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_9/tensor_names"
- input: "save/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_9"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "save/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_10"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_10/tensor_names"
- input: "save/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_10"
- op: "Assign"
- input: "b_hidden_2"
- input: "save/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_11"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_11/tensor_names"
- input: "save/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_11"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "save/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_12"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_12/tensor_names"
- input: "save/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save/Assign_12"
- op: "Assign"
- input: "global_step"
- input: "save/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- input: "^save/Assign_6"
- input: "^save/Assign_7"
- input: "^save/Assign_8"
- input: "^save/Assign_9"
- input: "^save/Assign_10"
- input: "^save/Assign_11"
- input: "^save/Assign_12"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^W_hidden/Assign"
- input: "^b_hidden/Assign"
- input: "^W_hidden_2/Assign"
- input: "^b_hidden_2/Assign"
- input: "^W_final/Assign"
- input: "^b_final/Assign"
- input: "^global_step/Assign"
- input: "^W_hidden/Adagrad/Assign"
- input: "^b_hidden/Adagrad/Assign"
- input: "^W_hidden_2/Adagrad/Assign"
- input: "^b_hidden_2/Adagrad/Assign"
- input: "^W_final/Adagrad/Assign"
- input: "^b_final/Adagrad/Assign"
- }
- node {
- name: "save_1/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save_1/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_5848b591c8704c928f801621ecceb1c5/part"
- }
- }
- }
- }
- node {
- name: "save_1/StringJoin"
- op: "StringJoin"
- input: "save_1/Const"
- input: "save_1/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save_1/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save_1/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save_1/ShardedFilename"
- op: "ShardedFilename"
- input: "save_1/StringJoin"
- input: "save_1/ShardedFilename/shard"
- input: "save_1/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: "W_final"
- string_val: "W_final/Adagrad"
- string_val: "W_hidden"
- string_val: "W_hidden/Adagrad"
- string_val: "W_hidden_2"
- string_val: "W_hidden_2/Adagrad"
- string_val: "b_final"
- string_val: "b_final/Adagrad"
- string_val: "b_hidden"
- string_val: "b_hidden/Adagrad"
- string_val: "b_hidden_2"
- string_val: "b_hidden_2/Adagrad"
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 13
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 13
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/SaveV2"
- op: "SaveV2"
- input: "save_1/ShardedFilename"
- input: "save_1/SaveV2/tensor_names"
- input: "save_1/SaveV2/shape_and_slices"
- input: "W_final"
- input: "W_final/Adagrad"
- input: "W_hidden"
- input: "W_hidden/Adagrad"
- input: "W_hidden_2"
- input: "W_hidden_2/Adagrad"
- input: "b_final"
- input: "b_final/Adagrad"
- input: "b_hidden"
- input: "b_hidden/Adagrad"
- input: "b_hidden_2"
- input: "b_hidden_2/Adagrad"
- input: "global_step"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save_1/control_dependency"
- op: "Identity"
- input: "save_1/ShardedFilename"
- input: "^save_1/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save_1/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save_1/ShardedFilename"
- input: "^save_1/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save_1/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save_1/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save_1/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/Identity"
- op: "Identity"
- input: "save_1/Const"
- input: "^save_1/control_dependency"
- input: "^save_1/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2/tensor_names"
- input: "save_1/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign"
- op: "Assign"
- input: "W_final"
- input: "save_1/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_1"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_1/tensor_names"
- input: "save_1/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_1"
- op: "Assign"
- input: "W_final/Adagrad"
- input: "save_1/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_2"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_2/tensor_names"
- input: "save_1/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_2"
- op: "Assign"
- input: "W_hidden"
- input: "save_1/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_3"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_3/tensor_names"
- input: "save_1/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_3"
- op: "Assign"
- input: "W_hidden/Adagrad"
- input: "save_1/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 256
- }
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_4"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_4/tensor_names"
- input: "save_1/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_4"
- op: "Assign"
- input: "W_hidden_2"
- input: "save_1/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "W_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_5"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_5/tensor_names"
- input: "save_1/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_5"
- op: "Assign"
- input: "W_hidden_2/Adagrad"
- input: "save_1/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@W_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_6"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_6/tensor_names"
- input: "save_1/RestoreV2_6/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_6"
- op: "Assign"
- input: "b_final"
- input: "save_1/RestoreV2_6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_final/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_7"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_7/tensor_names"
- input: "save_1/RestoreV2_7/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_7"
- op: "Assign"
- input: "b_final/Adagrad"
- input: "save_1/RestoreV2_7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_final"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_8"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_8/tensor_names"
- input: "save_1/RestoreV2_8/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_8"
- op: "Assign"
- input: "b_hidden"
- input: "save_1/RestoreV2_8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_9"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_9/tensor_names"
- input: "save_1/RestoreV2_9/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_9"
- op: "Assign"
- input: "b_hidden/Adagrad"
- input: "save_1/RestoreV2_9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 512
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_10"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_10/tensor_names"
- input: "save_1/RestoreV2_10/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_10"
- op: "Assign"
- input: "b_hidden_2"
- input: "save_1/RestoreV2_10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "b_hidden_2/Adagrad"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_11"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_11/tensor_names"
- input: "save_1/RestoreV2_11/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save_1/Assign_11"
- op: "Assign"
- input: "b_hidden_2/Adagrad"
- input: "save_1/RestoreV2_11"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@b_hidden_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 128
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "global_step"
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save_1/RestoreV2_12"
- op: "RestoreV2"
- input: "save_1/Const"
- input: "save_1/RestoreV2_12/tensor_names"
- input: "save_1/RestoreV2_12/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_INT32
- }
- }
- }
- }
- node {
- name: "save_1/Assign_12"
- op: "Assign"
- input: "global_step"
- input: "save_1/RestoreV2_12"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@global_step"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save_1/restore_shard"
- op: "NoOp"
- input: "^save_1/Assign"
- input: "^save_1/Assign_1"
- input: "^save_1/Assign_2"
- input: "^save_1/Assign_3"
- input: "^save_1/Assign_4"
- input: "^save_1/Assign_5"
- input: "^save_1/Assign_6"
- input: "^save_1/Assign_7"
- input: "^save_1/Assign_8"
- input: "^save_1/Assign_9"
- input: "^save_1/Assign_10"
- input: "^save_1/Assign_11"
- input: "^save_1/Assign_12"
- }
- node {
- name: "save_1/restore_all"
- op: "NoOp"
- input: "^save_1/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save_1/Const:0"
- save_tensor_name: "save_1/Identity:0"
- restore_op_name: "save_1/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "loss_1:0"
- value: "accuracy_1:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "Adagrad"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0"
- value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0"
- value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0"
- value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0"
- value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0"
- value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nW_hidden:0\022\017W_hidden/Assign\032\017W_hidden/read:02\022truncated_normal:0"
- value: "\n\nb_hidden:0\022\017b_hidden/Assign\032\017b_hidden/read:02\007Const:0"
- value: "\n\014W_hidden_2:0\022\021W_hidden_2/Assign\032\021W_hidden_2/read:02\024truncated_normal_1:0"
- value: "\n\014b_hidden_2:0\022\021b_hidden_2/Assign\032\021b_hidden_2/read:02\tConst_1:0"
- value: "\n\tW_final:0\022\016W_final/Assign\032\016W_final/read:02\020random_uniform:0"
- value: "\n\tb_final:0\022\016b_final/Assign\032\016b_final/read:02\007zeros:0"
- value: "\n\rglobal_step:0\022\022global_step/Assign\032\022global_step/read:02\033global_step/initial_value:0"
- value: "\n\022W_hidden/Adagrad:0\022\027W_hidden/Adagrad/Assign\032\027W_hidden/Adagrad/read:02$W_hidden/Adagrad/Initializer/Const:0"
- value: "\n\022b_hidden/Adagrad:0\022\027b_hidden/Adagrad/Assign\032\027b_hidden/Adagrad/read:02$b_hidden/Adagrad/Initializer/Const:0"
- value: "\n\024W_hidden_2/Adagrad:0\022\031W_hidden_2/Adagrad/Assign\032\031W_hidden_2/Adagrad/read:02&W_hidden_2/Adagrad/Initializer/Const:0"
- value: "\n\024b_hidden_2/Adagrad:0\022\031b_hidden_2/Adagrad/Assign\032\031b_hidden_2/Adagrad/read:02&b_hidden_2/Adagrad/Initializer/Const:0"
- value: "\n\021W_final/Adagrad:0\022\026W_final/Adagrad/Assign\032\026W_final/Adagrad/read:02#W_final/Adagrad/Initializer/Const:0"
- value: "\n\021b_final/Adagrad:0\022\026b_final/Adagrad/Assign\032\026b_final/Adagrad/read:02#b_final/Adagrad/Initializer/Const:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_d"
- value {
- name: "input_d:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- inputs {
- key: "input_u"
- value {
- name: "input_u:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 128
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "y:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 1efd102aef9..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index
deleted file mode 100644
index 56c60dbe529..00000000000
--- a/model-integration/src/test/models/tensorflow/blog/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/dropout/dropout.py b/model-integration/src/test/models/tensorflow/dropout/dropout.py
deleted file mode 100644
index 42c15cd2812..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/dropout.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-# Common imports
-import numpy as np
-import tensorflow as tf
-import datetime
-
-now = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-n_inputs = 784
-n_outputs = 10
-dropout_rate = 0.5 # == 1 - keep_prob
-
-X = tf.placeholder(tf.float32, shape=(None, n_inputs), name="X")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-training = tf.placeholder_with_default(False, shape=(), name='training')
-
-def leaky_relu_with_small_constant(z, name=None):
- return tf.maximum(tf.constant(0.01, shape=[1]) * z, z, name=name)
-
-X_drop = tf.layers.dropout(X, dropout_rate, training=training, name="xdrop")
-output = tf.layers.dense(X_drop, n_outputs, activation=leaky_relu_with_small_constant, name="outputs")
-
-init = tf.global_variables_initializer()
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-
-with tf.Session() as sess:
- init.run()
- sess.run(output, feed_dict={training: False, X: np.random.random((1,784))})
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':X}, outputs = {'y':output})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
-
-
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt
deleted file mode 100644
index ad431f0460d..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,2875 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Floor"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PlaceholderWithDefault"
- input_arg {
- name: "input"
- type_attr: "dtype"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- }
- op {
- name: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "X"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "training/input"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_BOOL
- tensor_shape {
- }
- bool_val: false
- }
- }
- }
- }
- node {
- name: "training"
- op: "PlaceholderWithDefault"
- input: "training/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Switch"
- op: "Switch"
- input: "training"
- input: "training"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/switch_t"
- op: "Identity"
- input: "xdrop/cond/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/switch_f"
- op: "Identity"
- input: "xdrop/cond/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/pred_id"
- op: "Identity"
- input: "training"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/keep_prob"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Shape/Switch"
- op: "Switch"
- input: "X"
- input: "xdrop/cond/pred_id"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@X"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Shape"
- op: "Shape"
- input: "xdrop/cond/dropout/Shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/min"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/max"
- op: "Const"
- input: "^xdrop/cond/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "xdrop/cond/dropout/Shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/sub"
- op: "Sub"
- input: "xdrop/cond/dropout/random_uniform/max"
- input: "xdrop/cond/dropout/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform/mul"
- op: "Mul"
- input: "xdrop/cond/dropout/random_uniform/RandomUniform"
- input: "xdrop/cond/dropout/random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/random_uniform"
- op: "Add"
- input: "xdrop/cond/dropout/random_uniform/mul"
- input: "xdrop/cond/dropout/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/add"
- op: "Add"
- input: "xdrop/cond/dropout/keep_prob"
- input: "xdrop/cond/dropout/random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/Floor"
- op: "Floor"
- input: "xdrop/cond/dropout/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/div"
- op: "RealDiv"
- input: "xdrop/cond/dropout/Shape/Switch:1"
- input: "xdrop/cond/dropout/keep_prob"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/dropout/mul"
- op: "Mul"
- input: "xdrop/cond/dropout/div"
- input: "xdrop/cond/dropout/Floor"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Identity/Switch"
- op: "Switch"
- input: "X"
- input: "xdrop/cond/pred_id"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@X"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Identity"
- op: "Identity"
- input: "xdrop/cond/Identity/Switch"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "xdrop/cond/Merge"
- op: "Merge"
- input: "xdrop/cond/Identity"
- input: "xdrop/cond/dropout/mul"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/min"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: -0.08692913502454758
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/max"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.08692913502454758
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "outputs/kernel/Initializer/random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/sub"
- op: "Sub"
- input: "outputs/kernel/Initializer/random_uniform/max"
- input: "outputs/kernel/Initializer/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform/mul"
- op: "Mul"
- input: "outputs/kernel/Initializer/random_uniform/RandomUniform"
- input: "outputs/kernel/Initializer/random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel/Initializer/random_uniform"
- op: "Add"
- input: "outputs/kernel/Initializer/random_uniform/mul"
- input: "outputs/kernel/Initializer/random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/kernel"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/kernel/Assign"
- op: "Assign"
- input: "outputs/kernel"
- input: "outputs/kernel/Initializer/random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/kernel/read"
- op: "Identity"
- input: "outputs/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "outputs/bias"
- op: "VariableV2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "outputs/bias/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "outputs/bias/Initializer/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "outputs/bias/read"
- op: "Identity"
- input: "outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/MatMul"
- op: "MatMul"
- input: "xdrop/cond/Merge"
- input: "outputs/kernel/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "outputs/BiasAdd"
- op: "BiasAdd"
- input: "outputs/MatMul"
- input: "outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "outputs/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "outputs/mul"
- op: "Mul"
- input: "outputs/Const"
- input: "outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "outputs/Maximum"
- op: "Maximum"
- input: "outputs/mul"
- input: "outputs/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^outputs/kernel/Assign"
- input: "^outputs/bias/Assign"
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6962088d414d471890a43f51e0ba56f9/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "outputs/bias"
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "outputs/bias"
- input: "outputs/kernel"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "outputs/bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "outputs/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "outputs/kernel"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@outputs/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\n\024xdrop/cond/cond_text\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_t:0 \001*\241\004\n\003X:0\n\032xdrop/cond/dropout/Floor:0\n!xdrop/cond/dropout/Shape/Switch:1\n\032xdrop/cond/dropout/Shape:0\n\030xdrop/cond/dropout/add:0\n\030xdrop/cond/dropout/div:0\n\036xdrop/cond/dropout/keep_prob:0\n\030xdrop/cond/dropout/mul:0\n1xdrop/cond/dropout/random_uniform/RandomUniform:0\n\'xdrop/cond/dropout/random_uniform/max:0\n\'xdrop/cond/dropout/random_uniform/min:0\n\'xdrop/cond/dropout/random_uniform/mul:0\n\'xdrop/cond/dropout/random_uniform/sub:0\n#xdrop/cond/dropout/random_uniform:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_t:0\022(\n\003X:0\022!xdrop/cond/dropout/Shape/Switch:1"
- value: "\n\026xdrop/cond/cond_text_1\022\024xdrop/cond/pred_id:0\032\025xdrop/cond/switch_f:0*\214\001\n\003X:0\n\034xdrop/cond/Identity/Switch:0\n\025xdrop/cond/Identity:0\n\024xdrop/cond/pred_id:0\n\025xdrop/cond/switch_f:0\022#\n\003X:0\022\034xdrop/cond/Identity/Switch:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\020outputs/kernel:0\022\025outputs/kernel/Assign\032\025outputs/kernel/read:02+outputs/kernel/Initializer/random_uniform:0"
- value: "\n\016outputs/bias:0\022\023outputs/bias/Assign\032\023outputs/bias/read:02 outputs/bias/Initializer/zeros:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "X:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "outputs/Maximum:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 000c9b3a7b5..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index
deleted file mode 100644
index 9492ef4bde2..00000000000
--- a/model-integration/src/test/models/tensorflow/dropout/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt
deleted file mode 100644
index d2dc51ac328..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_A/optimized_v2/saved_model.pbtxt
+++ /dev/null
@@ -1,1368 +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_BFLOAT16
- 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: "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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: -1.049525499343872
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/_0__cf__0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.9995003938674927
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub/_1__cf__1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul/_0__cf__0"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub/_1__cf__1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_norm/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt
deleted file mode 100644
index 102428b2cf2..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/optimized/saved_model.pbtxt
+++ /dev/null
@@ -1,1368 +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_BFLOAT16
- 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: "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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "dense_out/kernel"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- float_val: -1.278536081314087
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/_0__cf__2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.9995003938674927
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub/_1__cf__3"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul/_0__cf__2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub/_1__cf__3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/kernel"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "batch_norm/moving_mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt
deleted file mode 100644
index 50aee0ebcf7..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/saved_model.pbtxt
+++ /dev/null
@@ -1,11403 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Abs"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- 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_BFLOAT16
- 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: "Assert"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "data"
- type_list_attr: "T"
- }
- attr {
- name: "T"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "summarize"
- type: "int"
- default_value {
- i: 3
- }
- }
- is_stateful: true
- }
- op {
- name: "AssignAddVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "AssignVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "BiasAdd"
- input_arg {
- name: "value"
- type_attr: "T"
- }
- input_arg {
- name: "bias"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "data_format"
- type: "string"
- default_value {
- s: "NHWC"
- }
- allowed_values {
- list {
- s: "NHWC"
- s: "NCHW"
- }
- }
- }
- }
- 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"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DenseToDenseSetOperation"
- input_arg {
- name: "set1"
- type_attr: "T"
- }
- input_arg {
- name: "set2"
- type_attr: "T"
- }
- output_arg {
- name: "result_indices"
- type: DT_INT64
- }
- output_arg {
- name: "result_values"
- type_attr: "T"
- }
- output_arg {
- name: "result_shape"
- type: DT_INT64
- }
- attr {
- name: "set_operation"
- type: "string"
- }
- attr {
- name: "validate_indices"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_UINT16
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "DivNoNan"
- 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_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Greater"
- 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_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- 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_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- 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_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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_BFLOAT16
- 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: "ReadVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "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_BFLOAT16
- 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: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Size"
- 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: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "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_BFLOAT16
- 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: "VarHandleOp"
- output_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- is_stateful: true
- }
- op {
- name: "VarIsInitializedOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "is_initialized"
- type: DT_BOOL
- }
- 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.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "Const"
- 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: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum/reduction_indices"
- 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: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize_1/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize_1/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum/reduction_indices"
- 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: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/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: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/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: "batch_norm/gamma/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_norm/gamma"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/gamma"
- }
- }
- }
- node {
- name: "batch_norm/gamma/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/gamma/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "batch_norm/gamma/Initializer/ones"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/gamma/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/gamma"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/beta/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/beta"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/beta"
- }
- }
- }
- node {
- name: "batch_norm/beta/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/beta/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "batch_norm/beta/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/beta/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/beta"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/moving_mean"
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "batch_norm/moving_mean/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_mean/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_mean"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Initializer/ones"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_variance"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "batch_norm/moving_variance"
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Assign"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "batch_norm/moving_variance/Initializer/ones"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/moving_variance/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@batch_norm/moving_variance"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/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: "batch_norm/batchnorm/add"
- op: "Add"
- input: "batch_norm/batchnorm/ReadVariableOp"
- input: "batch_norm/batchnorm/add/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/Rsqrt"
- op: "Rsqrt"
- input: "batch_norm/batchnorm/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul/ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul"
- op: "Mul"
- input: "batch_norm/batchnorm/Rsqrt"
- input: "batch_norm/batchnorm/mul/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_1"
- op: "Mul"
- input: "dot_0/ExpandDims"
- input: "batch_norm/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/mul_2"
- op: "Mul"
- input: "batch_norm/batchnorm/ReadVariableOp_1"
- input: "batch_norm/batchnorm/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/ReadVariableOp_2"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/sub"
- op: "Sub"
- input: "batch_norm/batchnorm/ReadVariableOp_2"
- input: "batch_norm/batchnorm/mul_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "batch_norm/batchnorm/add_1"
- op: "Add"
- input: "batch_norm/batchnorm/mul_1"
- input: "batch_norm/batchnorm/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/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\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/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: "dense_out/kernel/Initializer/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/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: 1.607744812965393
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dense_out/kernel/Initializer/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal/mul"
- op: "Mul"
- input: "dense_out/kernel/Initializer/truncated_normal/TruncatedNormal"
- input: "dense_out/kernel/Initializer/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Initializer/truncated_normal"
- op: "Add"
- input: "dense_out/kernel/Initializer/truncated_normal/mul"
- input: "dense_out/kernel/Initializer/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "dense_out/kernel"
- }
- }
- }
- node {
- name: "dense_out/kernel/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dense_out/kernel/Assign"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "dense_out/kernel/Initializer/truncated_normal"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/kernel/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/kernel"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/bias/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dense_out/bias"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "dense_out/bias"
- }
- }
- }
- node {
- name: "dense_out/bias/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "dense_out/bias/Assign"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "dense_out/bias/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/bias/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dense_out/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/MatMul/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/MatMul"
- op: "MatMul"
- input: "batch_norm/batchnorm/add_1"
- input: "dense_out/MatMul/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dense_out/BiasAdd/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out/BiasAdd"
- op: "BiasAdd"
- input: "dense_out/MatMul"
- input: "dense_out/BiasAdd/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "data_format"
- value {
- s: "NHWC"
- }
- }
- }
- node {
- name: "dense_out/Sigmoid"
- op: "Sigmoid"
- input: "dense_out/BiasAdd"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- 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: 0
- }
- }
- }
- }
- node {
- name: "Adam/iterations"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/iterations"
- }
- }
- }
- node {
- name: "Adam/iterations/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Assign"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "Adam/iterations/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/iterations/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/iterations"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/lr/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- 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: "Adam/lr"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/lr"
- }
- }
- }
- node {
- name: "Adam/lr/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/lr/Assign"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "Adam/lr/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/lr/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/lr"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- 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: "Adam/beta_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_1"
- }
- }
- }
- node {
- name: "Adam/beta_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_1/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "Adam/beta_1/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- 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.9990000128746033
- }
- }
- }
- }
- node {
- name: "Adam/beta_2"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_2"
- }
- }
- }
- node {
- name: "Adam/beta_2/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_2/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "Adam/beta_2/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- 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: "Adam/decay"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/decay"
- }
- }
- }
- node {
- name: "Adam/decay/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/decay/Assign"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "Adam/decay/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/decay"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "dense_out_target"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "dense_out_sample_weights"
- op: "PlaceholderWithDefault"
- input: "Const_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "total/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- 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: "total"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total"
- }
- }
- }
- node {
- name: "total/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total/Assign"
- op: "AssignVariableOp"
- input: "total"
- input: "total/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- 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: "count"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count"
- }
- }
- }
- node {
- name: "count/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count/Assign"
- op: "AssignVariableOp"
- input: "count"
- input: "count/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- 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: "total_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total_1"
- }
- }
- }
- node {
- name: "total_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total_1/Assign"
- op: "AssignVariableOp"
- input: "total_1"
- input: "total_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- 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: "count_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count_1"
- }
- }
- }
- node {
- name: "count_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count_1/Assign"
- op: "AssignVariableOp"
- input: "count_1"
- input: "count_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/dense_out_loss/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.0000000116860974e-07
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub"
- op: "Sub"
- input: "loss/dense_out_loss/sub/x"
- input: "loss/dense_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/clip_by_value/Minimum"
- op: "Minimum"
- input: "dense_out/Sigmoid"
- input: "loss/dense_out_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/clip_by_value"
- op: "Maximum"
- input: "loss/dense_out_loss/clip_by_value/Minimum"
- input: "loss/dense_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/sub_1"
- op: "Sub"
- input: "loss/dense_out_loss/sub_1/x"
- input: "loss/dense_out_loss/clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/truediv"
- op: "RealDiv"
- input: "loss/dense_out_loss/clip_by_value"
- input: "loss/dense_out_loss/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Log"
- op: "Log"
- input: "loss/dense_out_loss/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "loss/dense_out_loss/Log"
- input: "loss/dense_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Select"
- op: "Select"
- input: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- input: "loss/dense_out_loss/Log"
- input: "loss/dense_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Neg"
- op: "Neg"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Select_1"
- op: "Select"
- input: "loss/dense_out_loss/logistic_loss/GreaterEqual"
- input: "loss/dense_out_loss/logistic_loss/Neg"
- input: "loss/dense_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/mul"
- op: "Mul"
- input: "loss/dense_out_loss/Log"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/sub"
- op: "Sub"
- input: "loss/dense_out_loss/logistic_loss/Select"
- input: "loss/dense_out_loss/logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Exp"
- op: "Exp"
- input: "loss/dense_out_loss/logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss/Log1p"
- op: "Log1p"
- input: "loss/dense_out_loss/logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/logistic_loss"
- op: "Add"
- input: "loss/dense_out_loss/logistic_loss/sub"
- input: "loss/dense_out_loss/logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mean/reduction_indices"
- 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: "loss/dense_out_loss/Mean"
- op: "Mean"
- input: "loss/dense_out_loss/logistic_loss"
- input: "loss/dense_out_loss/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- op: "Shape"
- input: "dense_out_sample_weights"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- op: "Shape"
- input: "loss/dense_out_loss/Mean"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- op: "ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- op: "Fill"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- op: "ConcatV2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- op: "ExpandDims"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation"
- op: "DenseToDenseSetOperation"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 2
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "set_operation"
- value {
- s: "a-b"
- }
- }
- attr {
- key: "validate_indices"
- value {
- b: true
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- op: "Size"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- op: "Equal"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/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: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_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: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_2"
- 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: "dense_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_3"
- 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: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_4"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/dense_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/Const_5"
- 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: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- op: "NoOp"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "dense_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/dense_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- op: "Assert"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- attr {
- key: "T"
- value {
- list {
- type: DT_STRING
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_BOOL
- }
- }
- }
- attr {
- key: "summarize"
- value {
- i: 3
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- op: "Switch"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- op: "Identity"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- op: "Merge"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- input: "loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights/ones_like/Shape"
- op: "Shape"
- input: "loss/dense_out_loss/Mean"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- 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: "loss/dense_out_loss/broadcast_weights/ones_like/Const"
- op: "Const"
- input: "^loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- 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: "loss/dense_out_loss/broadcast_weights/ones_like"
- op: "Fill"
- input: "loss/dense_out_loss/broadcast_weights/ones_like/Shape"
- input: "loss/dense_out_loss/broadcast_weights/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/dense_out_loss/broadcast_weights"
- op: "Mul"
- input: "dense_out_sample_weights"
- input: "loss/dense_out_loss/broadcast_weights/ones_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Mul"
- op: "Mul"
- input: "loss/dense_out_loss/Mean"
- input: "loss/dense_out_loss/broadcast_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Sum"
- op: "Sum"
- input: "loss/dense_out_loss/Mul"
- input: "loss/dense_out_loss/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_2"
- 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/dense_out_loss/Sum_1"
- op: "Sum"
- input: "loss/dense_out_loss/broadcast_weights"
- input: "loss/dense_out_loss/Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/dense_out_loss/div_no_nan"
- op: "DivNoNan"
- input: "loss/dense_out_loss/Sum"
- input: "loss/dense_out_loss/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/dense_out_loss/Const_3"
- 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: "loss/dense_out_loss/Mean_1"
- op: "Mean"
- input: "loss/dense_out_loss/div_no_nan"
- input: "loss/dense_out_loss/Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/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: 1.0
- }
- }
- }
- }
- node {
- name: "loss/mul"
- op: "Mul"
- input: "loss/mul/x"
- input: "loss/dense_out_loss/Mean_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Square/ReadVariableOp"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Square"
- op: "Square"
- input: "loss/kernel/Regularizer/Square/ReadVariableOp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/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.10000000149011612
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/mul"
- op: "Mul"
- input: "loss/kernel/Regularizer/mul/x"
- input: "loss/kernel/Regularizer/Square"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/Sum"
- op: "Sum"
- input: "loss/kernel/Regularizer/mul"
- input: "loss/kernel/Regularizer/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: "loss/kernel/Regularizer/add/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.0
- }
- }
- }
- }
- node {
- name: "loss/kernel/Regularizer/add"
- op: "Add"
- input: "loss/kernel/Regularizer/add/x"
- input: "loss/kernel/Regularizer/Sum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/add"
- op: "Add"
- input: "loss/mul"
- input: "loss/kernel/Regularizer/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast/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.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater"
- op: "Greater"
- input: "dense_out/Sigmoid"
- input: "metrics/acc/Cast/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_1"
- op: "Cast"
- input: "metrics/acc/Greater"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal"
- op: "Equal"
- input: "dense_out_target"
- input: "metrics/acc/Cast_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_2"
- op: "Cast"
- input: "metrics/acc/Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean/reduction_indices"
- 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: "metrics/acc/Mean"
- op: "Mean"
- input: "metrics/acc/Cast_2"
- input: "metrics/acc/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Size"
- op: "Size"
- input: "metrics/acc/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/acc/Cast_3"
- op: "Cast"
- input: "metrics/acc/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/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: "metrics/acc/Sum"
- op: "Sum"
- input: "metrics/acc/Mean"
- input: "metrics/acc/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: "metrics/acc/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total"
- input: "metrics/acc/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count"
- input: "metrics/acc/Cast_3"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/AssignAddVariableOp_1"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan"
- op: "DivNoNan"
- input: "metrics/acc/div_no_nan/ReadVariableOp"
- input: "metrics/acc/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_4/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.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater_1"
- op: "Greater"
- input: "dense_out/Sigmoid"
- input: "metrics/acc/Cast_4/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_5"
- op: "Cast"
- input: "metrics/acc/Greater_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal_1"
- op: "Equal"
- input: "dense_out_target"
- input: "metrics/acc/Cast_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_6"
- op: "Cast"
- input: "metrics/acc/Equal_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1/reduction_indices"
- 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: "metrics/acc/Mean_1"
- op: "Mean"
- input: "metrics/acc/Cast_6"
- input: "metrics/acc/Mean_1/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_2"
- op: "Mean"
- input: "metrics/acc/Mean_1"
- input: "metrics/acc/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub"
- op: "Sub"
- input: "dense_out/Sigmoid"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean/reduction_indices"
- 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: "metrics/mean_absolute_error/Mean"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs"
- input: "metrics/mean_absolute_error/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Size"
- op: "Size"
- input: "metrics/mean_absolute_error/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Cast"
- op: "Cast"
- input: "metrics/mean_absolute_error/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/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: "metrics/mean_absolute_error/Sum"
- op: "Sum"
- input: "metrics/mean_absolute_error/Mean"
- input: "metrics/mean_absolute_error/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: "metrics/mean_absolute_error/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total_1"
- input: "metrics/mean_absolute_error/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count_1"
- input: "metrics/mean_absolute_error/Cast"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan"
- op: "DivNoNan"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub_1"
- op: "Sub"
- input: "dense_out/Sigmoid"
- input: "dense_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs_1"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- 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: "metrics/mean_absolute_error/Mean_1"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs_1"
- input: "metrics/mean_absolute_error/Mean_1/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_2"
- op: "Mean"
- input: "metrics/mean_absolute_error/Mean_1"
- input: "metrics/mean_absolute_error/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "Placeholder"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp"
- op: "ReadVariableOp"
- input: "batch_norm/gamma"
- input: "^AssignVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "Placeholder_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "batch_norm/beta"
- input: "^AssignVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_2"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "Placeholder_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_2"
- op: "ReadVariableOp"
- input: "batch_norm/moving_mean"
- input: "^AssignVariableOp_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_3"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "Placeholder_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_3"
- op: "ReadVariableOp"
- input: "batch_norm/moving_variance"
- input: "^AssignVariableOp_3"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_4"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "Placeholder_4"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_4"
- op: "ReadVariableOp"
- input: "dense_out/kernel"
- input: "^AssignVariableOp_4"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Placeholder_5"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- node {
- name: "AssignVariableOp_5"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "Placeholder_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "ReadVariableOp_5"
- op: "ReadVariableOp"
- input: "dense_out/bias"
- input: "^AssignVariableOp_5"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_1"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_2"
- op: "VarIsInitializedOp"
- input: "batch_norm/gamma"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_3"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_variance"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_4"
- op: "VarIsInitializedOp"
- input: "batch_norm/beta"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_5"
- op: "VarIsInitializedOp"
- input: "dense_out/kernel"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_6"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_7"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_8"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_9"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_10"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_11"
- op: "VarIsInitializedOp"
- input: "batch_norm/moving_mean"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_12"
- op: "VarIsInitializedOp"
- input: "dense_out/bias"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_13"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_14"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^batch_norm/beta/Assign"
- input: "^batch_norm/gamma/Assign"
- input: "^batch_norm/moving_mean/Assign"
- input: "^batch_norm/moving_variance/Assign"
- input: "^count/Assign"
- input: "^count_1/Assign"
- input: "^dense_out/bias/Assign"
- input: "^dense_out/kernel/Assign"
- input: "^total/Assign"
- input: "^total_1/Assign"
- }
- node {
- name: "init_1"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^batch_norm/beta/Assign"
- input: "^batch_norm/gamma/Assign"
- input: "^batch_norm/moving_mean/Assign"
- input: "^batch_norm/moving_variance/Assign"
- input: "^dense_out/bias/Assign"
- input: "^dense_out/kernel/Assign"
- }
- node {
- name: "init_2"
- op: "NoOp"
- }
- node {
- name: "group_deps"
- op: "NoOp"
- input: "^init_1"
- input: "^init_2"
- }
- node {
- name: "save/filename/input"
- 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/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- 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_7f2179765c0043bba293f5b2b9e7ba06/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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- string_val: "batch_norm/beta"
- string_val: "batch_norm/gamma"
- string_val: "batch_norm/moving_mean"
- string_val: "batch_norm/moving_variance"
- string_val: "dense_out/bias"
- string_val: "dense_out/kernel"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- 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: "Adam/beta_1/Read/ReadVariableOp"
- input: "Adam/beta_2/Read/ReadVariableOp"
- input: "Adam/decay/Read/ReadVariableOp"
- input: "Adam/iterations/Read/ReadVariableOp"
- input: "Adam/lr/Read/ReadVariableOp"
- input: "batch_norm/beta/Read/ReadVariableOp"
- input: "batch_norm/gamma/Read/ReadVariableOp"
- input: "batch_norm/moving_mean/Read/ReadVariableOp"
- input: "batch_norm/moving_variance/Read/ReadVariableOp"
- input: "dense_out/bias/Read/ReadVariableOp"
- input: "dense_out/kernel/Read/ReadVariableOp"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- 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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- string_val: "batch_norm/beta"
- string_val: "batch_norm/gamma"
- string_val: "batch_norm/moving_mean"
- string_val: "batch_norm/moving_variance"
- string_val: "dense_out/bias"
- string_val: "dense_out/kernel"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 11
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 11
- }
- }
- 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/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Identity_1"
- op: "Identity"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "save/Identity_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_2"
- op: "Identity"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "save/Identity_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_3"
- op: "Identity"
- input: "save/RestoreV2:2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "save/Identity_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_4"
- op: "Identity"
- input: "save/RestoreV2:3"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "save/Identity_4"
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "save/Identity_5"
- op: "Identity"
- input: "save/RestoreV2:4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "save/Identity_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_6"
- op: "Identity"
- input: "save/RestoreV2:5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_5"
- op: "AssignVariableOp"
- input: "batch_norm/beta"
- input: "save/Identity_6"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_7"
- op: "Identity"
- input: "save/RestoreV2:6"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_6"
- op: "AssignVariableOp"
- input: "batch_norm/gamma"
- input: "save/Identity_7"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_8"
- op: "Identity"
- input: "save/RestoreV2:7"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_7"
- op: "AssignVariableOp"
- input: "batch_norm/moving_mean"
- input: "save/Identity_8"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_9"
- op: "Identity"
- input: "save/RestoreV2:8"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_8"
- op: "AssignVariableOp"
- input: "batch_norm/moving_variance"
- input: "save/Identity_9"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_10"
- op: "Identity"
- input: "save/RestoreV2:9"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_9"
- op: "AssignVariableOp"
- input: "dense_out/bias"
- input: "save/Identity_10"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_11"
- op: "Identity"
- input: "save/RestoreV2:10"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_10"
- op: "AssignVariableOp"
- input: "dense_out/kernel"
- input: "save/Identity_11"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/AssignVariableOp"
- input: "^save/AssignVariableOp_1"
- input: "^save/AssignVariableOp_10"
- input: "^save/AssignVariableOp_2"
- input: "^save/AssignVariableOp_3"
- input: "^save/AssignVariableOp_4"
- input: "^save/AssignVariableOp_5"
- input: "^save/AssignVariableOp_6"
- input: "^save/AssignVariableOp_7"
- input: "^save/AssignVariableOp_8"
- input: "^save/AssignVariableOp_9"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0 \001*\355\005\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0\022\236\001\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\022\252\001\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0"
- value: "\nUloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text_1\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Tloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0*\270*\nkloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:0\nkloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:1\nlloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:0\nlloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\205\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\201\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\203\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\202\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n}loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\200\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nxloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nvloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\nyloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\n{loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nTloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0\nHloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\326\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\310\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\022{loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\022\252\001\nSloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Sloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022\305\001\nHloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\022yloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\022\331\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:02\267#\n\264#\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0 \001*\341 \n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\217\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\205\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\201\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\203\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\202\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n}loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\207\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\206\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\200\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nxloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nvloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\232\002\n\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\333\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\214\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\022\330\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\212\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\022\226\002\n\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\210\001loss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\336\001\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:02\321\n\n\316\n\noloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text_1\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0*\373\007\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nnloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\022\336\001\nmloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022mloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022\344\001\nrloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\022nloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0"
- value: "\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Qloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0 \001*\251\003\n[loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency:0\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0\022\244\001\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0"
- value: "\nRloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text_1\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Qloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0*\367\021\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\nXloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5:0\nVloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7:0\n]loss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1:0\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\244\001\nPloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Ploss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022\246\001\nJloss/dense_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\022\245\001\nIloss/dense_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\022\242\001\nFloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Xloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\022\253\001\nQloss/dense_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\022Vloss/dense_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\022batch_norm/gamma:0\022\027batch_norm/gamma/Assign\032&batch_norm/gamma/Read/ReadVariableOp:0(\0012#batch_norm/gamma/Initializer/ones:08\001"
- value: "\n\021batch_norm/beta:0\022\026batch_norm/beta/Assign\032%batch_norm/beta/Read/ReadVariableOp:0(\0012#batch_norm/beta/Initializer/zeros:08\001"
- value: "\n\022dense_out/kernel:0\022\027dense_out/kernel/Assign\032&dense_out/kernel/Read/ReadVariableOp:0(\0012/dense_out/kernel/Initializer/truncated_normal:08\001"
- value: "\n\020dense_out/bias:0\022\025dense_out/bias/Assign\032$dense_out/bias/Read/ReadVariableOp:0(\0012\"dense_out/bias/Initializer/zeros:08\001"
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\022batch_norm/gamma:0\022\027batch_norm/gamma/Assign\032&batch_norm/gamma/Read/ReadVariableOp:0(\0012#batch_norm/gamma/Initializer/ones:08\001"
- value: "\n\021batch_norm/beta:0\022\026batch_norm/beta/Assign\032%batch_norm/beta/Read/ReadVariableOp:0(\0012#batch_norm/beta/Initializer/zeros:08\001"
- value: "\n\030batch_norm/moving_mean:0\022\035batch_norm/moving_mean/Assign\032,batch_norm/moving_mean/Read/ReadVariableOp:0(\0012*batch_norm/moving_mean/Initializer/zeros:0"
- value: "\n\034batch_norm/moving_variance:0\022!batch_norm/moving_variance/Assign\0320batch_norm/moving_variance/Read/ReadVariableOp:0(\0012-batch_norm/moving_variance/Initializer/ones:0"
- value: "\n\022dense_out/kernel:0\022\027dense_out/kernel/Assign\032&dense_out/kernel/Read/ReadVariableOp:0(\0012/dense_out/kernel/Initializer/truncated_normal:08\001"
- value: "\n\020dense_out/bias:0\022\025dense_out/bias/Assign\032$dense_out/bias/Read/ReadVariableOp:0(\0012\"dense_out/bias/Initializer/zeros:08\001"
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "dense_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
deleted file mode 100644
index 9997691bd2c..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index b/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index
deleted file mode 100644
index 98e80e982a9..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_B/factorization_machine_v1/export/standard/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt
deleted file mode 100644
index 4678d78fe68..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/optimized/saved_model.pbtxt
+++ /dev/null
@@ -1,959 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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: "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: "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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/l2_normalize/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "sigmoid_out/Sigmoid"
- op: "Sigmoid"
- input: "dot_0/ExpandDims"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- versions {
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "sigmoid_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt
deleted file mode 100644
index cad3db9d898..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/saved_model.pbtxt
+++ /dev/null
@@ -1,8622 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Abs"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- 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_BFLOAT16
- 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: "Assert"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "data"
- type_list_attr: "T"
- }
- attr {
- name: "T"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "summarize"
- type: "int"
- default_value {
- i: 3
- }
- }
- is_stateful: true
- }
- op {
- name: "AssignAddVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "AssignVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- input_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- 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"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "DenseToDenseSetOperation"
- input_arg {
- name: "set1"
- type_attr: "T"
- }
- input_arg {
- name: "set2"
- type_attr: "T"
- }
- output_arg {
- name: "result_indices"
- type: DT_INT64
- }
- output_arg {
- name: "result_values"
- type_attr: "T"
- }
- output_arg {
- name: "result_shape"
- type: DT_INT64
- }
- attr {
- name: "set_operation"
- type: "string"
- }
- attr {
- name: "validate_indices"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_UINT16
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "DivNoNan"
- 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_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Greater"
- 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_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- 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_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Log"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- 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_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Merge"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- output_arg {
- name: "value_index"
- type: DT_INT32
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Minimum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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_BFLOAT16
- 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: "ReadVariableOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "value"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- is_stateful: true
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "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_BFLOAT16
- 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: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Size"
- 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: "Square"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Switch"
- input_arg {
- name: "data"
- type_attr: "T"
- }
- input_arg {
- name: "pred"
- type: DT_BOOL
- }
- output_arg {
- name: "output_false"
- type_attr: "T"
- }
- output_arg {
- name: "output_true"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "VarHandleOp"
- output_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- }
- is_stateful: true
- }
- op {
- name: "VarIsInitializedOp"
- input_arg {
- name: "resource"
- type: DT_RESOURCE
- }
- output_arg {
- name: "is_initialized"
- type: DT_BOOL
- }
- 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.13.1"
- tensorflow_git_version: "b\'v1.13.1-0-g6612da8951\'"
- }
- graph_def {
- node {
- name: "keras_learning_phase/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: "keras_learning_phase"
- op: "PlaceholderWithDefault"
- input: "keras_learning_phase/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "input_embedding_user_guid"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "input_embedding_product_slug"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Square"
- op: "Square"
- input: "input_embedding_user_guid"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Sum/reduction_indices"
- 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: "dot_0/l2_normalize/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize/Square"
- input: "dot_0/l2_normalize/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize/Sum"
- input: "dot_0/l2_normalize/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize"
- op: "Mul"
- input: "input_embedding_user_guid"
- input: "dot_0/l2_normalize/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Square"
- op: "Square"
- input: "input_embedding_product_slug"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Sum/reduction_indices"
- 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: "dot_0/l2_normalize_1/Sum"
- op: "Sum"
- input: "dot_0/l2_normalize_1/Square"
- input: "dot_0/l2_normalize_1/Sum/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: 1
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: true
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 9.999999960041972e-13
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Maximum"
- op: "Maximum"
- input: "dot_0/l2_normalize_1/Sum"
- input: "dot_0/l2_normalize_1/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1/Rsqrt"
- op: "Rsqrt"
- input: "dot_0/l2_normalize_1/Maximum"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/l2_normalize_1"
- op: "Mul"
- input: "input_embedding_product_slug"
- input: "dot_0/l2_normalize_1/Rsqrt"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Mul"
- op: "Mul"
- input: "dot_0/l2_normalize"
- input: "dot_0/l2_normalize_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- }
- }
- node {
- name: "dot_0/Sum/reduction_indices"
- 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: "dot_0/Sum"
- op: "Sum"
- input: "dot_0/Mul"
- input: "dot_0/Sum/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "dot_0/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: "dot_0/ExpandDims"
- op: "ExpandDims"
- input: "dot_0/Sum"
- input: "dot_0/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: "sigmoid_out/Sigmoid"
- op: "Sigmoid"
- input: "dot_0/ExpandDims"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- 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: 0
- }
- }
- }
- }
- node {
- name: "Adam/iterations"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/iterations"
- }
- }
- }
- node {
- name: "Adam/iterations/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/iterations/Assign"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "Adam/iterations/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/iterations/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/iterations"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/iterations"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Adam/lr/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- 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: "Adam/lr"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/lr"
- }
- }
- }
- node {
- name: "Adam/lr/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/lr/Assign"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "Adam/lr/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/lr/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/lr"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/lr"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- 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: "Adam/beta_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_1"
- }
- }
- }
- node {
- name: "Adam/beta_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_1/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "Adam/beta_1/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- 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.9990000128746033
- }
- }
- }
- }
- node {
- name: "Adam/beta_2"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/beta_2"
- }
- }
- }
- node {
- name: "Adam/beta_2/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/beta_2/Assign"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "Adam/beta_2/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/beta_2/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/beta_2"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/beta_2"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Initializer/initial_value"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- 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: "Adam/decay"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "Adam/decay"
- }
- }
- }
- node {
- name: "Adam/decay/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Adam/decay/Assign"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "Adam/decay/Initializer/initial_value"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "Adam/decay/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "Adam/decay"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Adam/decay"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "sigmoid_out_target"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 1
- }
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "sigmoid_out_sample_weights"
- op: "PlaceholderWithDefault"
- input: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- node {
- name: "total/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- 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: "total"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total"
- }
- }
- }
- node {
- name: "total/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total/Assign"
- op: "AssignVariableOp"
- input: "total"
- input: "total/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- 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: "count"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count"
- }
- }
- }
- node {
- name: "count/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count/Assign"
- op: "AssignVariableOp"
- input: "count"
- input: "count/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- 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: "total_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "total_1"
- }
- }
- }
- node {
- name: "total_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "total_1/Assign"
- op: "AssignVariableOp"
- input: "total_1"
- input: "total_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "total_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@total_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Initializer/zeros"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- 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: "count_1"
- op: "VarHandleOp"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: "count_1"
- }
- }
- }
- node {
- name: "count_1/IsInitialized/VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "count_1/Assign"
- op: "AssignVariableOp"
- input: "count_1"
- input: "count_1/Initializer/zeros"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "count_1/Read/ReadVariableOp"
- op: "ReadVariableOp"
- input: "count_1"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@count_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/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.0000000116860974e-07
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub"
- op: "Sub"
- input: "loss/sigmoid_out_loss/sub/x"
- input: "loss/sigmoid_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/clip_by_value/Minimum"
- op: "Minimum"
- input: "sigmoid_out/Sigmoid"
- input: "loss/sigmoid_out_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/clip_by_value"
- op: "Maximum"
- input: "loss/sigmoid_out_loss/clip_by_value/Minimum"
- input: "loss/sigmoid_out_loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub_1/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/sub_1"
- op: "Sub"
- input: "loss/sigmoid_out_loss/sub_1/x"
- input: "loss/sigmoid_out_loss/clip_by_value"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/truediv"
- op: "RealDiv"
- input: "loss/sigmoid_out_loss/clip_by_value"
- input: "loss/sigmoid_out_loss/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Log"
- op: "Log"
- input: "loss/sigmoid_out_loss/truediv"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "loss/sigmoid_out_loss/Log"
- input: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Select"
- op: "Select"
- input: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- input: "loss/sigmoid_out_loss/Log"
- input: "loss/sigmoid_out_loss/logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Neg"
- op: "Neg"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Select_1"
- op: "Select"
- input: "loss/sigmoid_out_loss/logistic_loss/GreaterEqual"
- input: "loss/sigmoid_out_loss/logistic_loss/Neg"
- input: "loss/sigmoid_out_loss/Log"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/mul"
- op: "Mul"
- input: "loss/sigmoid_out_loss/Log"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/sub"
- op: "Sub"
- input: "loss/sigmoid_out_loss/logistic_loss/Select"
- input: "loss/sigmoid_out_loss/logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Exp"
- op: "Exp"
- input: "loss/sigmoid_out_loss/logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss/Log1p"
- op: "Log1p"
- input: "loss/sigmoid_out_loss/logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/logistic_loss"
- op: "Add"
- input: "loss/sigmoid_out_loss/logistic_loss/sub"
- input: "loss/sigmoid_out_loss/logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mean/reduction_indices"
- 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: "loss/sigmoid_out_loss/Mean"
- op: "Mean"
- input: "loss/sigmoid_out_loss/logistic_loss"
- input: "loss/sigmoid_out_loss/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- op: "Shape"
- input: "sigmoid_out_sample_weights"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- op: "Shape"
- input: "loss/sigmoid_out_loss/Mean"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar/x"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- op: "ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- op: "Fill"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- op: "ConcatV2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- op: "ExpandDims"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation"
- op: "DenseToDenseSetOperation"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 2
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "set_operation"
- value {
- s: "a-b"
- }
- }
- attr {
- key: "validate_indices"
- value {
- b: true
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- op: "Size"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t"
- 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: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- op: "Equal"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/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: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_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: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_2"
- 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: "sigmoid_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_3"
- 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: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_4"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/sigmoid_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/Const_5"
- 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: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch:1"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- op: "NoOp"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/NoOp"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "weights can not be broadcast to values."
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "weights.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "sigmoid_out_sample_weights:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "values.shape="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "loss/sigmoid_out_loss/Mean:0"
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- 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: "is_scalar="
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- op: "Assert"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- attr {
- key: "T"
- value {
- list {
- type: DT_STRING
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_STRING
- type: DT_INT32
- type: DT_STRING
- type: DT_BOOL
- }
- }
- }
- attr {
- key: "summarize"
- value {
- i: 3
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3"
- op: "Switch"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- op: "Identity"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert"
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- op: "Merge"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1"
- input: "loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Shape"
- op: "Shape"
- input: "loss/sigmoid_out_loss/Mean"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- 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: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Const"
- op: "Const"
- input: "^loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Merge"
- 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: "loss/sigmoid_out_loss/broadcast_weights/ones_like"
- op: "Fill"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Shape"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/broadcast_weights"
- op: "Mul"
- input: "sigmoid_out_sample_weights"
- input: "loss/sigmoid_out_loss/broadcast_weights/ones_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Mul"
- op: "Mul"
- input: "loss/sigmoid_out_loss/Mean"
- input: "loss/sigmoid_out_loss/broadcast_weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Sum"
- op: "Sum"
- input: "loss/sigmoid_out_loss/Mul"
- input: "loss/sigmoid_out_loss/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_2"
- 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/sigmoid_out_loss/Sum_1"
- op: "Sum"
- input: "loss/sigmoid_out_loss/broadcast_weights"
- input: "loss/sigmoid_out_loss/Const_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/div_no_nan"
- op: "DivNoNan"
- input: "loss/sigmoid_out_loss/Sum"
- input: "loss/sigmoid_out_loss/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "loss/sigmoid_out_loss/Const_3"
- 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: "loss/sigmoid_out_loss/Mean_1"
- op: "Mean"
- input: "loss/sigmoid_out_loss/div_no_nan"
- input: "loss/sigmoid_out_loss/Const_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "loss/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: 1.0
- }
- }
- }
- }
- node {
- name: "loss/mul"
- op: "Mul"
- input: "loss/mul/x"
- input: "loss/sigmoid_out_loss/Mean_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast/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.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater"
- op: "Greater"
- input: "sigmoid_out/Sigmoid"
- input: "metrics/acc/Cast/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_1"
- op: "Cast"
- input: "metrics/acc/Greater"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal"
- op: "Equal"
- input: "sigmoid_out_target"
- input: "metrics/acc/Cast_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_2"
- op: "Cast"
- input: "metrics/acc/Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean/reduction_indices"
- 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: "metrics/acc/Mean"
- op: "Mean"
- input: "metrics/acc/Cast_2"
- input: "metrics/acc/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Size"
- op: "Size"
- input: "metrics/acc/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/acc/Cast_3"
- op: "Cast"
- input: "metrics/acc/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/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: "metrics/acc/Sum"
- op: "Sum"
- input: "metrics/acc/Mean"
- input: "metrics/acc/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: "metrics/acc/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total"
- input: "metrics/acc/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count"
- input: "metrics/acc/Cast_3"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/AssignAddVariableOp_1"
- input: "^metrics/acc/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count"
- input: "^metrics/acc/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/acc/div_no_nan"
- op: "DivNoNan"
- input: "metrics/acc/div_no_nan/ReadVariableOp"
- input: "metrics/acc/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_4/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.5
- }
- }
- }
- }
- node {
- name: "metrics/acc/Greater_1"
- op: "Greater"
- input: "sigmoid_out/Sigmoid"
- input: "metrics/acc/Cast_4/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_5"
- op: "Cast"
- input: "metrics/acc/Greater_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Equal_1"
- op: "Equal"
- input: "sigmoid_out_target"
- input: "metrics/acc/Cast_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Cast_6"
- op: "Cast"
- input: "metrics/acc/Equal_1"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_1/reduction_indices"
- 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: "metrics/acc/Mean_1"
- op: "Mean"
- input: "metrics/acc/Cast_6"
- input: "metrics/acc/Mean_1/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/acc/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/acc/Mean_2"
- op: "Mean"
- input: "metrics/acc/Mean_1"
- input: "metrics/acc/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub"
- op: "Sub"
- input: "sigmoid_out/Sigmoid"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean/reduction_indices"
- 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: "metrics/mean_absolute_error/Mean"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs"
- input: "metrics/mean_absolute_error/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Size"
- op: "Size"
- input: "metrics/mean_absolute_error/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Cast"
- op: "Cast"
- input: "metrics/mean_absolute_error/Size"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/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: "metrics/mean_absolute_error/Sum"
- op: "Sum"
- input: "metrics/mean_absolute_error/Mean"
- input: "metrics/mean_absolute_error/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: "metrics/mean_absolute_error/AssignAddVariableOp"
- op: "AssignAddVariableOp"
- input: "total_1"
- input: "metrics/mean_absolute_error/Sum"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/AssignAddVariableOp_1"
- op: "AssignAddVariableOp"
- input: "count_1"
- input: "metrics/mean_absolute_error/Cast"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/AssignAddVariableOp_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- op: "ReadVariableOp"
- input: "total_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- op: "ReadVariableOp"
- input: "count_1"
- input: "^metrics/mean_absolute_error/ReadVariableOp_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/div_no_nan"
- op: "DivNoNan"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp"
- input: "metrics/mean_absolute_error/div_no_nan/ReadVariableOp_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/sub_1"
- op: "Sub"
- input: "sigmoid_out/Sigmoid"
- input: "sigmoid_out_target"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Abs_1"
- op: "Abs"
- input: "metrics/mean_absolute_error/sub_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_1/reduction_indices"
- 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: "metrics/mean_absolute_error/Mean_1"
- op: "Mean"
- input: "metrics/mean_absolute_error/Abs_1"
- input: "metrics/mean_absolute_error/Mean_1/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
- }
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "metrics/mean_absolute_error/Mean_2"
- op: "Mean"
- input: "metrics/mean_absolute_error/Mean_1"
- input: "metrics/mean_absolute_error/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "VarIsInitializedOp"
- op: "VarIsInitializedOp"
- input: "Adam/beta_2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_1"
- op: "VarIsInitializedOp"
- input: "count_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_2"
- op: "VarIsInitializedOp"
- input: "Adam/decay"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_3"
- op: "VarIsInitializedOp"
- input: "total"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_4"
- op: "VarIsInitializedOp"
- input: "Adam/lr"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_5"
- op: "VarIsInitializedOp"
- input: "total_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_6"
- op: "VarIsInitializedOp"
- input: "count"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_7"
- op: "VarIsInitializedOp"
- input: "Adam/iterations"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "VarIsInitializedOp_8"
- op: "VarIsInitializedOp"
- input: "Adam/beta_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- input: "^count/Assign"
- input: "^count_1/Assign"
- input: "^total/Assign"
- input: "^total_1/Assign"
- }
- node {
- name: "init_1"
- op: "NoOp"
- input: "^Adam/beta_1/Assign"
- input: "^Adam/beta_2/Assign"
- input: "^Adam/decay/Assign"
- input: "^Adam/iterations/Assign"
- input: "^Adam/lr/Assign"
- }
- node {
- name: "init_2"
- op: "NoOp"
- }
- node {
- name: "group_deps"
- op: "NoOp"
- input: "^init_1"
- input: "^init_2"
- }
- node {
- name: "save/filename/input"
- 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/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- 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_f9ee0bde57514bd8b273ce01b6ff32fd/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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- 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: "Adam/beta_1/Read/ReadVariableOp"
- input: "Adam/beta_2/Read/ReadVariableOp"
- input: "Adam/decay/Read/ReadVariableOp"
- input: "Adam/iterations/Read/ReadVariableOp"
- input: "Adam/lr/Read/ReadVariableOp"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: "Adam/beta_1"
- string_val: "Adam/beta_2"
- string_val: "Adam/decay"
- string_val: "Adam/iterations"
- string_val: "Adam/lr"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 5
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_INT64
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Identity_1"
- op: "Identity"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp"
- op: "AssignVariableOp"
- input: "Adam/beta_1"
- input: "save/Identity_1"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_2"
- op: "Identity"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_1"
- op: "AssignVariableOp"
- input: "Adam/beta_2"
- input: "save/Identity_2"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_3"
- op: "Identity"
- input: "save/RestoreV2:2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_2"
- op: "AssignVariableOp"
- input: "Adam/decay"
- input: "save/Identity_3"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/Identity_4"
- op: "Identity"
- input: "save/RestoreV2:3"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_3"
- op: "AssignVariableOp"
- input: "Adam/iterations"
- input: "save/Identity_4"
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "save/Identity_5"
- op: "Identity"
- input: "save/RestoreV2:4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "save/AssignVariableOp_4"
- op: "AssignVariableOp"
- input: "Adam/lr"
- input: "save/Identity_5"
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/AssignVariableOp"
- input: "^save/AssignVariableOp_1"
- input: "^save/AssignVariableOp_2"
- input: "^save/AssignVariableOp_3"
- input: "^save/AssignVariableOp_4"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "cond_context"
- value {
- bytes_list {
- value: "\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0 \001*\377\005\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_t:0\022\242\001\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Switch_1:1\022\256\001\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0"
- value: "\nWloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/cond_text_1\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\032Vloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0*\226+\nmloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:0\nmloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Merge:1\nnloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:0\nnloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch:1\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\207\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\203\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\205\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\204\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n\177loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\202\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nzloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nxloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\n{loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:0\n}loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\nVloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/switch_f:0\nJloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\256\001\nUloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022Uloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/pred_id:0\022\332\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\314\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/rank:0\022}loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch_1:0\022\335\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\311\001\nJloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/rank:0\022{loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank/Switch:02\377#\n\374#\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0 \001*\243!\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:0\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:1\n\221\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/DenseToDenseSetOperation:2\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\n\207\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/dim:0\n\203\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims:0\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\n\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:1\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/dim:0\n\205\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1:0\n\204\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat/axis:0\n\177loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat:0\n\211\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/num_invalid_dims:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Const:0\n\210\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like/Shape:0\n\202\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ones_like:0\nzloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/x:0\nxloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_t:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\232\002\n\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\212\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch:0\022\334\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims/Switch_1:1\022\342\001\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022\236\002\n\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\214\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch:0\022\337\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\216\001loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/ExpandDims_1/Switch_1:12\351\n\n\346\n\nqloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/cond_text_1\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\032ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0*\215\010\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:1\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\nploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/switch_f:0\022\350\001\ntloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/is_same_rank:0\022ploss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/Switch_1:0\022\342\001\noloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0\022oloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/pred_id:0"
- value: "\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Sloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0 \001*\263\003\n]loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency:0\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_t:0\022\250\001\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0"
- value: "\nTloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/cond_text_1\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\032Sloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0*\255\022\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\nZloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_0:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_1:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_2:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_4:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_5:0\nXloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/data_7:0\n_loss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/control_dependency_1:0\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/switch_f:0\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022\246\001\nHloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_scalar:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_3:0\022\251\001\nKloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/values/shape:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_2:0\022\257\001\nSloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/is_valid_shape/Merge:0\022Xloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch:0\022\250\001\nRloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022Rloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/pred_id:0\022\252\001\nLloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/weights/shape:0\022Zloss/sigmoid_out_loss/broadcast_weights/assert_broadcastable/AssertGuard/Assert/Switch_1:0"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\021Adam/iterations:0\022\026Adam/iterations/Assign\032%Adam/iterations/Read/ReadVariableOp:0(\0012+Adam/iterations/Initializer/initial_value:08\001"
- value: "\n\tAdam/lr:0\022\016Adam/lr/Assign\032\035Adam/lr/Read/ReadVariableOp:0(\0012#Adam/lr/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_1:0\022\022Adam/beta_1/Assign\032!Adam/beta_1/Read/ReadVariableOp:0(\0012\'Adam/beta_1/Initializer/initial_value:08\001"
- value: "\n\rAdam/beta_2:0\022\022Adam/beta_2/Assign\032!Adam/beta_2/Read/ReadVariableOp:0(\0012\'Adam/beta_2/Initializer/initial_value:08\001"
- value: "\n\014Adam/decay:0\022\021Adam/decay/Assign\032 Adam/decay/Read/ReadVariableOp:0(\0012&Adam/decay/Initializer/initial_value:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input_embedding_product_slug"
- value {
- name: "input_embedding_user_guid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- inputs {
- key: "input_embedding_user_guid"
- value {
- name: "input_embedding_product_slug:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 32
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "sigmoid_out/Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8339979323b..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index b/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index
deleted file mode 100644
index cf999e88e22..00000000000
--- a/model-integration/src/test/models/tensorflow/external/Model_C/factorization_machine_v1/export/standard/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb b/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb
deleted file mode 100644
index 223ad4baf59..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/saved_model.pb
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001
deleted file mode 100644
index 76e3a429612..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index b/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index
deleted file mode 100644
index 285449d22c5..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv1/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb b/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb
deleted file mode 100644
index e2af4d90552..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/saved_model.pb
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001
deleted file mode 100644
index 4bc7ff8a5d5..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index b/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index
deleted file mode 100644
index 398e369c5e3..00000000000
--- a/model-integration/src/test/models/tensorflow/external/modelv2/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/external/train.py b/model-integration/src/test/models/tensorflow/external/train.py
deleted file mode 100644
index 32b14c481c3..00000000000
--- a/model-integration/src/test/models/tensorflow/external/train.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-import numpy as np
-import tensorflow as tf
-import tensorflow.keras.backend as K
-
-from tensorflow.keras.layers import Input, Dense, concatenate
-from tensorflow.keras.models import Model
-
-input_user = Input(shape=(3,))
-input_ad = Input(shape=(3,))
-
-merged = concatenate([input_user, input_ad])
-output_1 = Dense(64, activation='relu')(merged)
-output_2 = Dense(64, activation='relu')(output_1)
-predictions = Dense(1)(output_2)
-
-model = Model(inputs=[input_user, input_ad], outputs=predictions)
-model.compile(optimizer='adam',
- loss='binary_crossentropy',
- metrics=['accuracy'])
-model.summary()
-
-SAMPLES = 1000
-user_data = np.random.rand(SAMPLES,3)
-ad_data = np.random.rand(SAMPLES,3)
-labels = np.random.rand(SAMPLES,1)
-print(user_data[:10])
-print(ad_data[:10])
-print(labels[:10])
-
-model.fit([user_data, ad_data], labels, epochs=10, ) # starts training
-
-user_data_sample1 = np.random.rand(1, 3)
-ad_data_sample1 = np.random.rand(1, 3)
-
-print("predicting for:")
-print(user_data_sample1)
-print(ad_data_sample1)
-predictions = model.predict([user_data_sample1, ad_data_sample1])
-print(predictions)
-
-signature = tf.saved_model.signature_def_utils.predict_signature_def(
- inputs={'input1': model.inputs[0],'input2': model.inputs[1] }, outputs={'pctr': model.outputs[0]})
-
-builder = tf.saved_model.builder.SavedModelBuilder('modelv1')
-builder.add_meta_graph_and_variables(
- sess=K.get_session(),
- tags=[tf.saved_model.tag_constants.SERVING],
- signature_def_map={
- tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
- signature
- })
-builder.save()
diff --git a/model-integration/src/test/models/tensorflow/external/train_embed.py b/model-integration/src/test/models/tensorflow/external/train_embed.py
deleted file mode 100644
index 2d1ab18a0eb..00000000000
--- a/model-integration/src/test/models/tensorflow/external/train_embed.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-import numpy as np
-import tensorflow as tf
-import tensorflow.keras.backend as K
-
-from tensorflow.keras.layers import Input, Dense, concatenate, Embedding, Reshape
-from tensorflow.keras.models import Model
-
-input_user = Input(shape=(3,))
-input_ad = Input(shape=(3,))
-gender_samples = Input(shape=(1,), dtype='int32')
-
-gender_values = ['m', 'f', 'a']
-
-gender_embeddings = Embedding(len(gender_values), 1)(gender_samples)
-reshape_gender = Reshape(target_shape=[1])(gender_embeddings)
-
-model2 = Model(inputs=[gender_samples], outputs=reshape_gender)
-model2.summary()
-
-merged = concatenate([input_user, input_ad, reshape_gender])
-output_1 = Dense(64, activation='relu')(merged)
-output_2 = Dense(64, activation='relu')(output_1)
-predictions = Dense(1)(output_2)
-
-model = Model(inputs=[input_user, input_ad, gender_samples], outputs=predictions)
-model.compile(optimizer='adam',
- loss='binary_crossentropy',
- metrics=['accuracy'])
-model.summary()
-
-SAMPLES = 1000
-user_data = np.random.rand(SAMPLES,3)
-ad_data = np.random.rand(SAMPLES,3)
-gender_data = np.random.randint(len(gender_values), size=SAMPLES)
-labels = np.random.rand(SAMPLES,1)
-print(user_data[:10])
-print(ad_data[:10])
-print(gender_data[:10])
-print(labels[:10])
-
-model.fit([user_data, ad_data, gender_data], labels, epochs=10, ) # starts training
-
-user_data_sample1 = np.random.rand(1, 3)
-ad_data_sample1 = np.random.rand(1, 3)
-gender_data_sample1 = np.random.randint(len(gender_values), size=1)
-
-print("predicting for:")
-print(user_data_sample1)
-print(ad_data_sample1)
-print(gender_data_sample1)
-predictions = model.predict([user_data_sample1, ad_data_sample1, gender_data_sample1])
-print(predictions)
-
-signature = tf.saved_model.signature_def_utils.predict_signature_def(
- inputs={'input1': model.inputs[0],'input2': model.inputs[1], 'input3': model.inputs[2] }, outputs={'pctrx': model.outputs[0]})
-
-builder = tf.saved_model.builder.SavedModelBuilder('modelv2')
-builder.add_meta_graph_and_variables(
- sess=K.get_session(),
- tags=[tf.saved_model.tag_constants.SERVING],
- signature_def_map={
- tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
- signature
- })
-builder.save()
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt
deleted file mode 100644
index eb926836576..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,7982 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "AddN"
- input_arg {
- name: "inputs"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "sum"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- type: DT_VARIANT
- }
- }
- }
- is_aggregate: true
- is_commutative: true
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "InTopKV2"
- input_arg {
- name: "predictions"
- type: DT_FLOAT
- }
- input_arg {
- name: "targets"
- type_attr: "T"
- }
- input_arg {
- name: "k"
- type_attr: "T"
- }
- output_arg {
- name: "precision"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "PreventGradient"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "message"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "ScalarSummary"
- input_arg {
- name: "tags"
- type: DT_STRING
- }
- input_arg {
- name: "values"
- type_attr: "T"
- }
- output_arg {
- name: "summary"
- type: DT_STRING
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_UINT16
- type: DT_HALF
- }
- }
- }
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Selu"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- output_arg {
- name: "activations"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "SeluGrad"
- input_arg {
- name: "gradients"
- type_attr: "T"
- }
- input_arg {
- name: "outputs"
- type_attr: "T"
- }
- output_arg {
- name: "backprops"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "SparseSoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "Tlabels"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "Tlabels"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "TruncatedNormal"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_stateful: true
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "y"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\020\003\000\000,\001\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0714285746216774
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/hidden1/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal/mul"
- op: "Mul"
- input: "dnn/hidden1/truncated_normal/TruncatedNormal"
- input: "dnn/hidden1/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/truncated_normal"
- op: "Add"
- input: "dnn/hidden1/truncated_normal/mul"
- input: "dnn/hidden1/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden1/weights/Assign"
- op: "Assign"
- input: "dnn/hidden1/weights"
- input: "dnn/hidden1/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden1/weights/read"
- op: "Identity"
- input: "dnn/hidden1/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 300
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden1/bias/Assign"
- op: "Assign"
- input: "dnn/hidden1/bias"
- input: "dnn/hidden1/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden1/bias/read"
- op: "Identity"
- input: "dnn/hidden1/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/MatMul"
- op: "MatMul"
- input: "input"
- input: "dnn/hidden1/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden1/add"
- op: "Add"
- input: "dnn/hidden1/MatMul"
- input: "dnn/hidden1/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul/x"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/mul"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden1/Maximum"
- op: "Maximum"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: ",\001\000\000d\000\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.1154700517654419
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/hidden2/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal/mul"
- op: "Mul"
- input: "dnn/hidden2/truncated_normal/TruncatedNormal"
- input: "dnn/hidden2/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/truncated_normal"
- op: "Add"
- input: "dnn/hidden2/truncated_normal/mul"
- input: "dnn/hidden2/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden2/weights/Assign"
- op: "Assign"
- input: "dnn/hidden2/weights"
- input: "dnn/hidden2/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden2/weights/read"
- op: "Identity"
- input: "dnn/hidden2/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 100
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/hidden2/bias/Assign"
- op: "Assign"
- input: "dnn/hidden2/bias"
- input: "dnn/hidden2/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/hidden2/bias/read"
- op: "Identity"
- input: "dnn/hidden2/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/MatMul"
- op: "MatMul"
- input: "dnn/hidden1/Maximum"
- input: "dnn/hidden2/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/hidden2/add"
- op: "Add"
- input: "dnn/hidden2/MatMul"
- input: "dnn/hidden2/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/hidden2/Selu"
- op: "Selu"
- input: "dnn/hidden2/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "d\000\000\000\n\000\000\000"
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.20000000298023224
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "dnn/outputs/truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal/mul"
- op: "Mul"
- input: "dnn/outputs/truncated_normal/TruncatedNormal"
- input: "dnn/outputs/truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/truncated_normal"
- op: "Add"
- input: "dnn/outputs/truncated_normal/mul"
- input: "dnn/outputs/truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/outputs/weights/Assign"
- op: "Assign"
- input: "dnn/outputs/weights"
- input: "dnn/outputs/truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/outputs/weights/read"
- op: "Identity"
- input: "dnn/outputs/weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "dnn/outputs/bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "dnn/outputs/bias/Assign"
- op: "Assign"
- input: "dnn/outputs/bias"
- input: "dnn/outputs/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "dnn/outputs/bias/read"
- op: "Identity"
- input: "dnn/outputs/bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "dnn/outputs/MatMul"
- op: "MatMul"
- input: "dnn/hidden2/Selu"
- input: "dnn/outputs/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "dnn/outputs/add"
- op: "Add"
- input: "dnn/outputs/MatMul"
- input: "dnn/outputs/bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/Shape"
- op: "Shape"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- op: "SparseSoftmaxCrossEntropyWithLogits"
- input: "dnn/outputs/add"
- input: "y"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tlabels"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "loss/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "loss/loss"
- op: "Mean"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- input: "loss/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "train/gradients/Fill"
- op: "Fill"
- input: "train/gradients/Shape"
- input: "train/gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/Fill"
- input: "train/gradients/loss/loss_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Tile"
- op: "Tile"
- input: "train/gradients/loss/loss_grad/Reshape"
- input: "train/gradients/loss/loss_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_1"
- op: "Shape"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_1"
- input: "train/gradients/loss/loss_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Prod_1"
- op: "Prod"
- input: "train/gradients/loss/loss_grad/Shape_2"
- input: "train/gradients/loss/loss_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Maximum"
- op: "Maximum"
- input: "train/gradients/loss/loss_grad/Prod_1"
- input: "train/gradients/loss/loss_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/floordiv"
- op: "FloorDiv"
- input: "train/gradients/loss/loss_grad/Prod"
- input: "train/gradients/loss/loss_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/loss/loss_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/Cast"
- op: "Cast"
- input: "train/gradients/loss/loss_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/loss_grad/truediv"
- op: "RealDiv"
- input: "train/gradients/loss/loss_grad/Tile"
- input: "train/gradients/loss/loss_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/zeros_like"
- op: "ZerosLike"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- op: "PreventGradient"
- input: "loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "message"
- value {
- s: "Currently there is no way to take the second derivative of sparse_softmax_cross_entropy_with_logits due to the fused implementation\'s interaction with tf.gradients()"
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "train/gradients/loss/loss_grad/truediv"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/PreventGradient"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Shape"
- op: "Shape"
- input: "dnn/outputs/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/outputs/add_grad/Shape"
- input: "train/gradients/dnn/outputs/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/outputs/add_grad/Sum"
- input: "train/gradients/dnn/outputs/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits_grad/mul"
- input: "train/gradients/dnn/outputs/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/outputs/add_grad/Sum_1"
- input: "train/gradients/dnn/outputs/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/add_grad/Reshape"
- input: "^train/gradients/dnn/outputs/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/add_grad/Reshape"
- input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/add_grad/Reshape_1"
- input: "^train/gradients/dnn/outputs/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- input: "dnn/outputs/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/hidden2/Selu"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/outputs/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/outputs/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- op: "SeluGrad"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency"
- input: "dnn/hidden2/Selu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Shape"
- op: "Shape"
- input: "dnn/hidden2/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 100
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden2/add_grad/Shape"
- input: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden2/add_grad/Sum"
- input: "train/gradients/dnn/hidden2/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden2/Selu_grad/SeluGrad"
- input: "train/gradients/dnn/hidden2/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden2/add_grad/Sum_1"
- input: "train/gradients/dnn/hidden2/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden2/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/add_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden2/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- input: "dnn/hidden2/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "dnn/hidden1/Maximum"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden2/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden2/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- op: "Shape"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- op: "Fill"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_2"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- op: "GreaterEqual"
- input: "dnn/hidden1/mul"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- op: "Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/GreaterEqual"
- input: "train/gradients/dnn/hidden1/Maximum_grad/zeros"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Select_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/Maximum_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- op: "Shape"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul"
- op: "Mul"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- input: "dnn/hidden1/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- op: "Mul"
- input: "dnn/hidden1/mul/x"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/dnn/hidden1/mul_grad/mul_1"
- input: "train/gradients/dnn/hidden1/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/mul_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/AddN"
- op: "AddN"
- input: "train/gradients/dnn/hidden1/Maximum_grad/tuple/control_dependency_1"
- input: "train/gradients/dnn/hidden1/mul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/Maximum_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Shape"
- op: "Shape"
- input: "dnn/hidden1/MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 300
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "train/gradients/dnn/hidden1/add_grad/Shape"
- input: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Sum"
- op: "Sum"
- input: "train/gradients/AddN"
- input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Reshape"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/add_grad/Sum"
- input: "train/gradients/dnn/hidden1/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Sum_1"
- op: "Sum"
- input: "train/gradients/AddN"
- input: "train/gradients/dnn/hidden1/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/Reshape_1"
- op: "Reshape"
- input: "train/gradients/dnn/hidden1/add_grad/Sum_1"
- input: "train/gradients/dnn/hidden1/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/add_grad/Reshape_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/add_grad/Reshape"
- input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/add_grad/Reshape_1"
- input: "^train/gradients/dnn/hidden1/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- op: "MatMul"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- input: "dnn/hidden1/weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- input: "^train/gradients/dnn/hidden1/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@train/gradients/dnn/hidden1/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.009999999776482582
- }
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden1/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden1/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden1/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden2/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/hidden2/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/hidden2/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/outputs/weights"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "dnn/outputs/bias"
- input: "train/GradientDescent/learning_rate"
- input: "train/gradients/dnn/outputs/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "train/GradientDescent"
- op: "NoOp"
- input: "^train/GradientDescent/update_dnn/hidden1/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden1/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden2/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/hidden2/bias/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/outputs/weights/ApplyGradientDescent"
- input: "^train/GradientDescent/update_dnn/outputs/bias/ApplyGradientDescent"
- }
- node {
- name: "eval/in_top_k/InTopKV2/k"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT64
- tensor_shape {
- }
- int64_val: 1
- }
- }
- }
- }
- node {
- name: "eval/in_top_k/InTopKV2"
- op: "InTopKV2"
- input: "dnn/outputs/add"
- input: "y"
- input: "eval/in_top_k/InTopKV2/k"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Cast"
- op: "Cast"
- input: "eval/in_top_k/InTopKV2"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "eval/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "eval/Mean"
- op: "Mean"
- input: "eval/Cast"
- input: "eval/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^dnn/hidden1/weights/Assign"
- input: "^dnn/hidden1/bias/Assign"
- input: "^dnn/hidden2/weights/Assign"
- input: "^dnn/hidden2/bias/Assign"
- input: "^dnn/outputs/weights/Assign"
- input: "^dnn/outputs/bias/Assign"
- }
- node {
- name: "Accuracy/tags"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "Accuracy"
- }
- }
- }
- }
- node {
- name: "Accuracy"
- op: "ScalarSummary"
- input: "Accuracy/tags"
- input: "eval/Mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_de3cfc5e8e7e4734ae221577e8fd36a2/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 6
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 6
- }
- }
- string_val: "dnn/hidden1/bias"
- string_val: "dnn/hidden1/weights"
- string_val: "dnn/hidden2/bias"
- string_val: "dnn/hidden2/weights"
- string_val: "dnn/outputs/bias"
- string_val: "dnn/outputs/weights"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 6
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 6
- }
- }
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "dnn/hidden1/bias"
- input: "dnn/hidden1/weights"
- input: "dnn/hidden2/bias"
- input: "dnn/hidden2/weights"
- input: "dnn/outputs/bias"
- input: "dnn/outputs/weights"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden1/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "dnn/hidden1/bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden1/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "dnn/hidden1/weights"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden1/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 300
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden2/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_2/tensor_names"
- input: "save/RestoreV2_2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_2"
- op: "Assign"
- input: "dnn/hidden2/bias"
- input: "save/RestoreV2_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_3/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/hidden2/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_3"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_3/tensor_names"
- input: "save/RestoreV2_3/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_3"
- op: "Assign"
- input: "dnn/hidden2/weights"
- input: "save/RestoreV2_3"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/hidden2/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 300
- }
- dim {
- size: 100
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_4/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/outputs/bias"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_4"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_4/tensor_names"
- input: "save/RestoreV2_4/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_4"
- op: "Assign"
- input: "dnn/outputs/bias"
- input: "save/RestoreV2_4"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_5/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "dnn/outputs/weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_5"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_5/tensor_names"
- input: "save/RestoreV2_5/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_5"
- op: "Assign"
- input: "dnn/outputs/weights"
- input: "save/RestoreV2_5"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@dnn/outputs/weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 100
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- input: "^save/Assign_2"
- input: "^save/Assign_3"
- input: "^save/Assign_4"
- input: "^save/Assign_5"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "summaries"
- value {
- node_list {
- value: "Accuracy:0"
- }
- }
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "train/GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0"
- value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0"
- value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0"
- value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0"
- value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0"
- value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\025dnn/hidden1/weights:0\022\032dnn/hidden1/weights/Assign\032\032dnn/hidden1/weights/read:02\036dnn/hidden1/truncated_normal:0"
- value: "\n\022dnn/hidden1/bias:0\022\027dnn/hidden1/bias/Assign\032\027dnn/hidden1/bias/read:02\023dnn/hidden1/zeros:0"
- value: "\n\025dnn/hidden2/weights:0\022\032dnn/hidden2/weights/Assign\032\032dnn/hidden2/weights/read:02\036dnn/hidden2/truncated_normal:0"
- value: "\n\022dnn/hidden2/bias:0\022\027dnn/hidden2/bias/Assign\032\027dnn/hidden2/bias/read:02\023dnn/hidden2/zeros:0"
- value: "\n\025dnn/outputs/weights:0\022\032dnn/outputs/weights/Assign\032\032dnn/outputs/weights/read:02\036dnn/outputs/truncated_normal:0"
- value: "\n\022dnn/outputs/bias:0\022\027dnn/outputs/bias/Assign\032\027dnn/outputs/bias/read:02\023dnn/outputs/zeros:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "dnn/outputs/add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index a7ca01888c7..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index
deleted file mode 100644
index 7989c109a3a..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py b/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py
deleted file mode 100644
index 86a17e81f8f..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist/simple_mnist.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-# Common imports
-import numpy as np
-import tensorflow as tf
-
-from tensorflow.examples.tutorials.mnist import input_data
-from datetime import datetime
-
-now = datetime.utcnow().strftime("%Y%m%d%H%M%S")
-root_logdir = "tf_logs"
-logdir = "{}/run-{}/".format(root_logdir, now)
-
-mnist = input_data.read_data_sets("/tmp/data/")
-X_train = mnist.train.images
-X_test = mnist.test.images
-y_train = mnist.train.labels.astype("int")
-y_test = mnist.test.labels.astype("int")
-
-n_inputs = 28*28 # MNIST
-n_hidden1 = 300
-n_hidden2 = 100
-n_hidden3 = 40
-n_outputs = 10
-
-learning_rate = 0.01
-n_epochs = 20
-batch_size = 50
-
-input = tf.placeholder(tf.float32, shape=(None, n_inputs), name="input")
-y = tf.placeholder(tf.int64, shape=(None), name="y")
-
-
-def neuron_layer(X, n_neurons, name, activation=None):
- with tf.name_scope(name):
- n_inputs = int(X.get_shape()[1])
- stddev = 2 / np.sqrt(n_inputs)
- init = tf.truncated_normal((n_inputs, n_neurons), stddev=stddev)
- W = tf.Variable(init, name="weights")
- b = tf.Variable(tf.zeros([n_neurons]), name="bias")
- Z = tf.matmul(X, W) + b
- if activation is not None:
- return activation(Z)
- else:
- return Z
-
-
-def leaky_relu(z, name=None):
- return tf.maximum(0.01 * z, z, name=name)
-
-
-with tf.name_scope("dnn"):
- hidden1 = neuron_layer(input, n_hidden1, name="hidden1", activation=leaky_relu)
- hidden2 = neuron_layer(hidden1, n_hidden2, name="hidden2", activation=tf.nn.selu)
- logits = neuron_layer(hidden2, n_outputs, name="outputs") #, activation=tf.nn.sigmoid)
-
-with tf.name_scope("loss"):
- xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)
- loss = tf.reduce_mean(xentropy, name="loss")
-
-with tf.name_scope("train"):
- optimizer = tf.train.GradientDescentOptimizer(learning_rate)
- training_op = optimizer.minimize(loss)
-
-with tf.name_scope("eval"):
- correct = tf.nn.in_top_k(logits, y, 1)
- accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
-
-init = tf.global_variables_initializer()
-accuracy_summary = tf.summary.scalar('Accuracy', accuracy)
-file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())
-
-with tf.Session() as sess:
- init.run()
- for epoch in range(n_epochs):
- for iteration in range(mnist.train.num_examples // batch_size):
- X_batch, y_batch = mnist.train.next_batch(batch_size)
- sess.run(training_op, feed_dict={input: X_batch, y: y_batch})
- acc_train = accuracy.eval(feed_dict={input: X_batch, y: y_batch})
- acc_val = accuracy.eval(feed_dict={input: mnist.validation.images,
- y: mnist.validation.labels})
- print(epoch, "Train accuracy:", acc_train, "Val accuracy:", acc_val)
-
- # Save summary for tensorboard
- summary_str = accuracy_summary.eval(feed_dict={input: mnist.validation.images,
- y: mnist.validation.labels})
- file_writer.add_summary(summary_str, epoch)
-
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':input}, outputs = {'y':logits})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-file_writer.close()
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py b/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py
deleted file mode 100644
index 07a9fa4a213..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/mnist_sftmax_with_saving.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-
-"""A very simple MNIST classifier.
-
-See extensive documentation at
-https://www.tensorflow.org/get_started/mnist/beginners
-"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import argparse
-import sys
-
-from tensorflow.examples.tutorials.mnist import input_data
-
-import tensorflow as tf
-
-FLAGS = None
-
-
-def main(_):
- # Import data
- mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)
-
- # Create the model
- x = tf.placeholder(tf.float32, [None, 784])
- W = tf.Variable(tf.zeros([784, 10]))
- b = tf.Variable(tf.zeros([10]))
- y = tf.matmul(x, W) + b
-
- # Define loss and optimizer
- y_ = tf.placeholder(tf.float32, [None, 10])
-
- # The raw formulation of cross-entropy,
- #
- # tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.nn.softmax(y)),
- # reduction_indices=[1]))
- #
- # can be numerically unstable.
- #
- # So here we use tf.nn.softmax_cross_entropy_with_logits on the raw
- # outputs of 'y', and then average across the batch.
- cross_entropy = tf.reduce_mean(
- tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
- train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
-
- sess = tf.InteractiveSession()
- tf.global_variables_initializer().run()
- # Train
- for _ in range(1000):
- batch_xs, batch_ys = mnist.train.next_batch(100)
- sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
-
- # Test trained model
- correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
- accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
- print(sess.run(accuracy, feed_dict={x: mnist.test.images,
- y_: mnist.test.labels}))
-
- # Save the model
- export_path = "saved"
- print('Exporting trained model to ', export_path)
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':x}, outputs = {'y':y})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--data_dir', type=str, default='/tmp/tensorflow/mnist/input_data',
- help='Directory for storing input data')
- FLAGS, unparsed = parser.parse_known_args()
- tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt
deleted file mode 100644
index 8100dfd594d..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,5039 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ArgMax"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dimension"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "output_type"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- attr {
- name: "output_type"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Slice"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "begin"
- type_attr: "Index"
- }
- input_arg {
- name: "size"
- type_attr: "Index"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Index"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "T"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9b01"
- }
- graph_def {
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "Placeholder"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- node {
- name: "Rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Rank_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_1"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub"
- op: "Sub"
- input: "Rank_1"
- input: "Sub/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice/begin"
- op: "Pack"
- input: "Sub"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice"
- op: "Slice"
- input: "Shape_1"
- input: "Slice/begin"
- input: "Slice/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat"
- op: "ConcatV2"
- input: "concat/values_0"
- input: "Slice"
- input: "concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape"
- op: "Reshape"
- input: "add"
- input: "concat"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Rank_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_2"
- op: "Shape"
- input: "Placeholder_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub_1/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_1"
- op: "Sub"
- input: "Rank_2"
- input: "Sub_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_1/begin"
- op: "Pack"
- input: "Sub_1"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_1/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice_1"
- op: "Slice"
- input: "Shape_2"
- input: "Slice_1/begin"
- input: "Slice_1/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat_1/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat_1/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat_1"
- op: "ConcatV2"
- input: "concat_1/values_0"
- input: "Slice_1"
- input: "concat_1/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_1"
- op: "Reshape"
- input: "Placeholder_1"
- input: "concat_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "SoftmaxCrossEntropyWithLogits"
- op: "SoftmaxCrossEntropyWithLogits"
- input: "Reshape"
- input: "Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Sub_2/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_2"
- op: "Sub"
- input: "Rank"
- input: "Sub_2/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_2/begin"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Slice_2/size"
- op: "Pack"
- input: "Sub_2"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_2"
- op: "Slice"
- input: "Shape"
- input: "Slice_2/begin"
- input: "Slice_2/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_2"
- op: "Reshape"
- input: "SoftmaxCrossEntropyWithLogits"
- input: "Slice_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "Reshape_2"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Shape"
- op: "Shape"
- input: "SoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/Reshape_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/zeros_like"
- op: "ZerosLike"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "gradients/Reshape_2_grad/Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Reshape"
- op: "Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- input: "gradients/Reshape_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "Placeholder"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "ArgMax/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax"
- op: "ArgMax"
- input: "add"
- input: "ArgMax/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "ArgMax_1/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax_1"
- op: "ArgMax"
- input: "Placeholder_1"
- input: "ArgMax_1/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "ArgMax"
- input: "ArgMax_1"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast_1"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean_1"
- op: "Mean"
- input: "Cast_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6ca9fa5171ed4237a2fbcc27277e2864/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "Placeholder:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8474aa0a04c..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index
deleted file mode 100644
index cfcdac20409..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt
deleted file mode 100644
index 8100dfd594d..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/saved_model.pbtxt
+++ /dev/null
@@ -1,5039 +0,0 @@
-saved_model_schema_version: 1
-meta_graphs {
- meta_info_def {
- stripped_op_list {
- op {
- name: "Add"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "ApplyGradientDescent"
- input_arg {
- name: "var"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "alpha"
- type_attr: "T"
- }
- input_arg {
- name: "delta"
- type_attr: "T"
- }
- output_arg {
- name: "out"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "ArgMax"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dimension"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "output_type"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- attr {
- name: "output_type"
- type: "type"
- default_value {
- type: DT_INT64
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "BroadcastGradientArgs"
- input_arg {
- name: "s0"
- type_attr: "T"
- }
- input_arg {
- name: "s1"
- type_attr: "T"
- }
- output_arg {
- name: "r0"
- type_attr: "T"
- }
- output_arg {
- name: "r1"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Cast"
- input_arg {
- name: "x"
- type_attr: "SrcT"
- }
- output_arg {
- name: "y"
- type_attr: "DstT"
- }
- attr {
- name: "SrcT"
- type: "type"
- }
- attr {
- name: "DstT"
- type: "type"
- }
- }
- op {
- name: "ConcatV2"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- input_arg {
- name: "axis"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 2
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Equal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_QUINT8
- type: DT_QINT8
- type: DT_QINT32
- type: DT_STRING
- type: DT_BOOL
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "ExpandDims"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "dim"
- type_attr: "Tdim"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tdim"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type: DT_INT32
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "FloorDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Maximum"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "Mean"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "MergeV2Checkpoints"
- input_arg {
- name: "checkpoint_prefixes"
- type: DT_STRING
- }
- input_arg {
- name: "destination_prefix"
- type: DT_STRING
- }
- attr {
- name: "delete_old_dirs"
- type: "bool"
- default_value {
- b: true
- }
- }
- is_stateful: true
- }
- op {
- name: "Mul"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- is_commutative: true
- }
- op {
- name: "NoOp"
- }
- op {
- name: "Pack"
- input_arg {
- name: "values"
- type_attr: "T"
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "axis"
- type: "int"
- default_value {
- i: 0
- }
- }
- }
- op {
- name: "Placeholder"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "shape"
- type: "shape"
- default_value {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- op {
- name: "Prod"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RealDiv"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Slice"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "begin"
- type_attr: "Index"
- }
- input_arg {
- name: "size"
- type_attr: "Index"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Index"
- type: "type"
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "SoftmaxCrossEntropyWithLogits"
- input_arg {
- name: "features"
- type_attr: "T"
- }
- input_arg {
- name: "labels"
- type_attr: "T"
- }
- output_arg {
- name: "loss"
- type_attr: "T"
- }
- output_arg {
- name: "backprop"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Sum"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "reduction_indices"
- type_attr: "Tidx"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "keep_dims"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT64
- type: DT_INT32
- type: DT_UINT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_HALF
- }
- }
- }
- attr {
- name: "Tidx"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "Tile"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- input_arg {
- name: "multiples"
- type_attr: "Tmultiples"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tmultiples"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- op {
- name: "ZerosLike"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.4.1"
- tensorflow_git_version: "v1.4.0-19-ga52c8d9b01"
- }
- graph_def {
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 10
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "Placeholder"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "Placeholder_1"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- node {
- name: "Rank"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Rank_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_1"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub"
- op: "Sub"
- input: "Rank_1"
- input: "Sub/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice/begin"
- op: "Pack"
- input: "Sub"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice"
- op: "Slice"
- input: "Shape_1"
- input: "Slice/begin"
- input: "Slice/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat"
- op: "ConcatV2"
- input: "concat/values_0"
- input: "Slice"
- input: "concat/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape"
- op: "Reshape"
- input: "add"
- input: "concat"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Rank_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 2
- }
- }
- }
- }
- node {
- name: "Shape_2"
- op: "Shape"
- input: "Placeholder_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "Sub_1/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_1"
- op: "Sub"
- input: "Rank_2"
- input: "Sub_1/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_1/begin"
- op: "Pack"
- input: "Sub_1"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_1/size"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Slice_1"
- op: "Slice"
- input: "Shape_2"
- input: "Slice_1/begin"
- input: "Slice_1/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "concat_1/values_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "concat_1/axis"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "concat_1"
- op: "ConcatV2"
- input: "concat_1/values_0"
- input: "Slice_1"
- input: "concat_1/axis"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_1"
- op: "Reshape"
- input: "Placeholder_1"
- input: "concat_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "SoftmaxCrossEntropyWithLogits"
- op: "SoftmaxCrossEntropyWithLogits"
- input: "Reshape"
- input: "Reshape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Sub_2/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "Sub_2"
- op: "Sub"
- input: "Rank"
- input: "Sub_2/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Slice_2/begin"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Slice_2/size"
- op: "Pack"
- input: "Sub_2"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "Slice_2"
- op: "Slice"
- input: "Shape"
- input: "Slice_2/begin"
- input: "Slice_2/size"
- attr {
- key: "Index"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Reshape_2"
- op: "Reshape"
- input: "SoftmaxCrossEntropyWithLogits"
- input: "Slice_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "Reshape_2"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "Reshape_2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_grad/Shape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Shape"
- op: "Shape"
- input: "SoftmaxCrossEntropyWithLogits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_2_grad/Reshape"
- op: "Reshape"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/Reshape_2_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/zeros_like"
- op: "ZerosLike"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: -1
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- op: "ExpandDims"
- input: "gradients/Reshape_2_grad/Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tdim"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- op: "Mul"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
- input: "SoftmaxCrossEntropyWithLogits:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Shape"
- op: "Shape"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Reshape_grad/Reshape"
- op: "Reshape"
- input: "gradients/SoftmaxCrossEntropyWithLogits_grad/mul"
- input: "gradients/Reshape_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 10
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/Reshape_grad/Reshape"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "Placeholder"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "ArgMax/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax"
- op: "ArgMax"
- input: "add"
- input: "ArgMax/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "ArgMax_1/dimension"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "ArgMax_1"
- op: "ArgMax"
- input: "Placeholder_1"
- input: "ArgMax_1/dimension"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- attr {
- key: "output_type"
- value {
- type: DT_INT64
- }
- }
- }
- node {
- name: "Equal"
- op: "Equal"
- input: "ArgMax"
- input: "ArgMax_1"
- attr {
- key: "T"
- value {
- type: DT_INT64
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Cast_1"
- op: "Cast"
- input: "Equal"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_BOOL
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "Mean_1"
- op: "Mean"
- input: "Cast_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6ca9fa5171ed4237a2fbcc27277e2864/part"
- }
- }
- }
- }
- node {
- name: "save/StringJoin"
- op: "StringJoin"
- input: "save/Const"
- input: "save/StringJoin/inputs_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "separator"
- value {
- s: ""
- }
- }
- }
- node {
- name: "save/num_shards"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename/shard"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "save/ShardedFilename"
- op: "ShardedFilename"
- input: "save/StringJoin"
- input: "save/ShardedFilename/shard"
- input: "save/num_shards"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@save/ShardedFilename"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints/checkpoint_prefixes"
- op: "Pack"
- input: "save/ShardedFilename"
- input: "^save/control_dependency"
- attr {
- key: "N"
- value {
- i: 1
- }
- }
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "axis"
- value {
- i: 0
- }
- }
- }
- node {
- name: "save/MergeV2Checkpoints"
- op: "MergeV2Checkpoints"
- input: "save/MergeV2Checkpoints/checkpoint_prefixes"
- input: "save/Const"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/control_dependency"
- input: "^save/MergeV2Checkpoints"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 784
- }
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/RestoreV2_1/tensor_names"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1/shape_and_slices"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 1
- }
- }
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2_1"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2_1/tensor_names"
- input: "save/RestoreV2_1/shape_and_slices"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 10
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 24
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\007zeros:0"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\tzeros_1:0"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "Placeholder:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 784
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "add:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 10
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001
deleted file mode 100644
index 8474aa0a04c..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index b/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index
deleted file mode 100644
index cfcdac20409..00000000000
--- a/model-integration/src/test/models/tensorflow/mnist_softmax/tf_2_onnx/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt
deleted file mode 100644
index 678fced00d2..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/saved_model.pbtxt
+++ /dev/null
@@ -1,6172 +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_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- 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"
- }
- attr {
- name: "Truncate"
- type: "bool"
- default_value {
- b: false
- }
- }
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Exp"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Fill"
- input_arg {
- name: "dims"
- type_attr: "index_type"
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "index_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "GreaterEqual"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type: DT_BOOL
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "L2Loss"
- input_arg {
- name: "t"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "Log1p"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- 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_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- 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_BFLOAT16
- 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_BFLOAT16
- 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: "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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- 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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_UINT16
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reciprocal"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "Reshape"
- input_arg {
- name: "tensor"
- type_attr: "T"
- }
- input_arg {
- name: "shape"
- type_attr: "Tshape"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "Tshape"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "RestoreV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- output_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "SaveV2"
- input_arg {
- name: "prefix"
- type: DT_STRING
- }
- input_arg {
- name: "tensor_names"
- type: DT_STRING
- }
- input_arg {
- name: "shape_and_slices"
- type: DT_STRING
- }
- input_arg {
- name: "tensors"
- type_list_attr: "dtypes"
- }
- attr {
- name: "dtypes"
- type: "list(type)"
- has_minimum: true
- minimum: 1
- }
- is_stateful: true
- }
- op {
- name: "Select"
- input_arg {
- name: "condition"
- type: DT_BOOL
- }
- input_arg {
- name: "t"
- type_attr: "T"
- }
- input_arg {
- name: "e"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "Shape"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "out_type"
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "out_type"
- type: "type"
- default_value {
- type: DT_INT32
- }
- allowed_values {
- list {
- type: DT_INT32
- type: DT_INT64
- }
- }
- }
- }
- op {
- name: "ShardedFilename"
- input_arg {
- name: "basename"
- type: DT_STRING
- }
- input_arg {
- name: "shard"
- type: DT_INT32
- }
- input_arg {
- name: "num_shards"
- type: DT_INT32
- }
- output_arg {
- name: "filename"
- type: DT_STRING
- }
- }
- op {
- name: "Sigmoid"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- output_arg {
- name: "y"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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_INT32
- type: DT_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_COMPLEX64
- type: DT_INT64
- type: DT_QINT8
- type: DT_QUINT8
- type: DT_QINT32
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_COMPLEX128
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- }
- }
- }
- 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_BFLOAT16
- 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.13.1"
- tensorflow_git_version: "b\'unknown\'"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- node {
- name: "Placeholder"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\006\000\000\016\000\000\000"
- }
- }
- }
- }
- node {
- name: "truncated_normal/mean"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/stddev"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "truncated_normal/TruncatedNormal"
- op: "TruncatedNormal"
- input: "truncated_normal/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "truncated_normal/mul"
- op: "Mul"
- input: "truncated_normal/TruncatedNormal"
- input: "truncated_normal/stddev"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "truncated_normal"
- op: "Add"
- input: "truncated_normal/mul"
- input: "truncated_normal/mean"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "Variable"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable/Assign"
- op: "Assign"
- input: "Variable"
- input: "truncated_normal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable/read"
- op: "Identity"
- input: "Variable"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "zeros"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: 14
- }
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "Variable_1"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "Variable_1/Assign"
- op: "Assign"
- input: "Variable_1"
- input: "zeros"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "Variable_1/read"
- op: "Identity"
- input: "Variable_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Variable_1/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logits"
- op: "Identity"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/zeros_like"
- op: "ZerosLike"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/GreaterEqual"
- op: "GreaterEqual"
- input: "logits"
- input: "logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "logits"
- input: "logistic_loss/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Neg"
- op: "Neg"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "logistic_loss/Neg"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/mul"
- op: "Mul"
- input: "logits"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/sub"
- op: "Sub"
- input: "logistic_loss/Select"
- input: "logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Exp"
- op: "Exp"
- input: "logistic_loss/Select_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss/Log1p"
- op: "Log1p"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "logistic_loss"
- op: "Add"
- input: "logistic_loss/sub"
- input: "logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\000\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "Mean"
- op: "Mean"
- input: "logistic_loss"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "L2Loss"
- op: "L2Loss"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "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: 9.999999747378752e-05
- }
- }
- }
- }
- node {
- name: "mul"
- op: "Mul"
- input: "mul/x"
- input: "L2Loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "add_1"
- op: "Add"
- input: "Mean"
- input: "mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "Const_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: "Mean_1"
- op: "Mean"
- input: "add_1"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/grad_ys_0"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Fill"
- op: "Fill"
- input: "gradients/Shape"
- input: "gradients/grad_ys_0"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "index_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Reshape"
- op: "Reshape"
- input: "gradients/Fill"
- input: "gradients/Mean_1_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_1_grad/Reshape"
- input: "gradients/Mean_1_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_1_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_1_grad/Tile"
- input: "gradients/Mean_1_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/Mean_1_grad/truediv"
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/Mean_1_grad/truediv"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_1_grad/truediv"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/Mean_1_grad/truediv"
- input: "^gradients/add_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/Mean_1_grad/truediv"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\001\000\000\000\001\000\000\000"
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_1_grad/tuple/control_dependency"
- input: "gradients/Mean_grad/Reshape/shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- dim {
- size: 1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape"
- op: "Shape"
- input: "logistic_loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Tile"
- op: "Tile"
- input: "gradients/Mean_grad/Reshape"
- input: "gradients/Mean_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tmultiples"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Shape_2"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_1"
- input: "gradients/Mean_grad/Const"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 0
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Prod_1"
- op: "Prod"
- input: "gradients/Mean_grad/Shape_2"
- input: "gradients/Mean_grad/Const_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum/y"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- }
- int_val: 1
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Maximum"
- op: "Maximum"
- input: "gradients/Mean_grad/Prod_1"
- input: "gradients/Mean_grad/Maximum/y"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/floordiv"
- op: "FloorDiv"
- input: "gradients/Mean_grad/Prod"
- input: "gradients/Mean_grad/Maximum"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/Cast"
- op: "Cast"
- input: "gradients/Mean_grad/floordiv"
- attr {
- key: "DstT"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "SrcT"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "Truncate"
- value {
- b: false
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/Mean_grad/truediv"
- op: "RealDiv"
- input: "gradients/Mean_grad/Tile"
- input: "gradients/Mean_grad/Cast"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Mul"
- op: "Mul"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- input: "L2Loss"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/Mul_1"
- op: "Mul"
- input: "gradients/add_1_grad/tuple/control_dependency_1"
- input: "mul/x"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/mul_grad/Mul"
- input: "^gradients/mul_grad/Mul_1"
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/mul_grad/Mul"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/mul_grad/Mul_1"
- input: "^gradients/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/mul_grad/Mul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Shape"
- op: "Shape"
- input: "logistic_loss/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss/Log1p"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss_grad/Shape"
- input: "gradients/logistic_loss_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Sum"
- op: "Sum"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/logistic_loss_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss_grad/Sum"
- input: "gradients/logistic_loss_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: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Sum_1"
- op: "Sum"
- input: "gradients/Mean_grad/truediv"
- input: "gradients/logistic_loss_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss_grad/Sum_1"
- input: "gradients/logistic_loss_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: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss_grad/Reshape"
- input: "^gradients/logistic_loss_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss_grad/Reshape"
- input: "^gradients/logistic_loss_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss_grad/Reshape_1"
- input: "^gradients/logistic_loss_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/L2Loss_grad/mul"
- op: "Mul"
- input: "Variable/read"
- input: "gradients/mul_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Shape"
- op: "Shape"
- input: "logistic_loss/Select"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Shape_1"
- op: "Shape"
- input: "logistic_loss/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss/sub_grad/Shape"
- input: "gradients/logistic_loss/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: "gradients/logistic_loss/sub_grad/Sum"
- op: "Sum"
- input: "gradients/logistic_loss_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/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: "gradients/logistic_loss/sub_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss/sub_grad/Sum"
- input: "gradients/logistic_loss/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: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Sum_1"
- op: "Sum"
- input: "gradients/logistic_loss_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/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: "gradients/logistic_loss/sub_grad/Neg"
- op: "Neg"
- input: "gradients/logistic_loss/sub_grad/Sum_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss/sub_grad/Neg"
- input: "gradients/logistic_loss/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: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/sub_grad/Reshape"
- input: "^gradients/logistic_loss/sub_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/sub_grad/Reshape"
- input: "^gradients/logistic_loss/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/sub_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/sub_grad/Reshape_1"
- input: "^gradients/logistic_loss/sub_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/sub_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/add/x"
- op: "Const"
- input: "^gradients/logistic_loss_grad/tuple/control_dependency_1"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/add"
- op: "Add"
- input: "gradients/logistic_loss/Log1p_grad/add/x"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/Reciprocal"
- op: "Reciprocal"
- input: "gradients/logistic_loss/Log1p_grad/add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Log1p_grad/mul"
- op: "Mul"
- input: "gradients/logistic_loss_grad/tuple/control_dependency_1"
- input: "gradients/logistic_loss/Log1p_grad/Reciprocal"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/zeros_like"
- op: "ZerosLike"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/Select_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Select_grad/zeros_like"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/Select_grad/Select"
- input: "^gradients/logistic_loss/Select_grad/Select_1"
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/Select_grad/Select"
- input: "^gradients/logistic_loss/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/Select_grad/Select_1"
- input: "^gradients/logistic_loss/Select_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Shape"
- op: "Shape"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Shape_1"
- op: "Shape"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/logistic_loss/mul_grad/Shape"
- input: "gradients/logistic_loss/mul_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Mul"
- op: "Mul"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- input: "Placeholder"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Sum"
- op: "Sum"
- input: "gradients/logistic_loss/mul_grad/Mul"
- input: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Reshape"
- op: "Reshape"
- input: "gradients/logistic_loss/mul_grad/Sum"
- input: "gradients/logistic_loss/mul_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Mul_1"
- op: "Mul"
- input: "logits"
- input: "gradients/logistic_loss/sub_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Sum_1"
- op: "Sum"
- input: "gradients/logistic_loss/mul_grad/Mul_1"
- input: "gradients/logistic_loss/mul_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/logistic_loss/mul_grad/Sum_1"
- input: "gradients/logistic_loss/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: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/mul_grad/Reshape"
- input: "^gradients/logistic_loss/mul_grad/Reshape_1"
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/mul_grad/Reshape"
- input: "^gradients/logistic_loss/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/mul_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/mul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/mul_grad/Reshape_1"
- input: "^gradients/logistic_loss/mul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/mul_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Exp_grad/mul"
- op: "Mul"
- input: "gradients/logistic_loss/Log1p_grad/mul"
- input: "logistic_loss/Exp"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/zeros_like"
- op: "ZerosLike"
- input: "logistic_loss/Neg"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/Select"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Exp_grad/mul"
- input: "gradients/logistic_loss/Select_1_grad/zeros_like"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/Select_1"
- op: "Select"
- input: "logistic_loss/GreaterEqual"
- input: "gradients/logistic_loss/Select_1_grad/zeros_like"
- input: "gradients/logistic_loss/Exp_grad/mul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/logistic_loss/Select_1_grad/Select"
- input: "^gradients/logistic_loss/Select_1_grad/Select_1"
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/logistic_loss/Select_1_grad/Select"
- input: "^gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_1_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/logistic_loss/Select_1_grad/Select_1"
- input: "^gradients/logistic_loss/Select_1_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_1_grad/Select_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/logistic_loss/Neg_grad/Neg"
- op: "Neg"
- input: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN"
- op: "AddN"
- input: "gradients/logistic_loss/Select_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/mul_grad/tuple/control_dependency"
- input: "gradients/logistic_loss/Select_1_grad/tuple/control_dependency_1"
- input: "gradients/logistic_loss/Neg_grad/Neg"
- attr {
- key: "N"
- value {
- i: 4
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/logistic_loss/Select_grad/Select"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape"
- op: "Shape"
- input: "MatMul"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "out_type"
- value {
- type: DT_INT32
- }
- }
- }
- node {
- name: "gradients/add_grad/Shape_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 1
- }
- }
- int_val: 14
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/BroadcastGradientArgs"
- op: "BroadcastGradientArgs"
- input: "gradients/add_grad/Shape"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- }
- shape {
- dim {
- size: -1
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum"
- op: "Sum"
- input: "gradients/AddN"
- input: "gradients/add_grad/BroadcastGradientArgs"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape"
- op: "Reshape"
- input: "gradients/add_grad/Sum"
- input: "gradients/add_grad/Shape"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/Sum_1"
- op: "Sum"
- input: "gradients/AddN"
- input: "gradients/add_grad/BroadcastGradientArgs:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tidx"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "keep_dims"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/add_grad/Reshape_1"
- op: "Reshape"
- input: "gradients/add_grad/Sum_1"
- input: "gradients/add_grad/Shape_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "Tshape"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/add_grad/Reshape"
- input: "^gradients/add_grad/Reshape_1"
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/add_grad/Reshape"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/add_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/add_grad/Reshape_1"
- input: "^gradients/add_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/add_grad/Reshape_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul"
- op: "MatMul"
- input: "gradients/add_grad/tuple/control_dependency"
- input: "Variable/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: true
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/MatMul_1"
- op: "MatMul"
- input: "input"
- input: "gradients/add_grad/tuple/control_dependency"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: true
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/group_deps"
- op: "NoOp"
- input: "^gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/MatMul_1"
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/MatMul_grad/tuple/control_dependency_1"
- op: "Identity"
- input: "gradients/MatMul_grad/MatMul_1"
- input: "^gradients/MatMul_grad/tuple/group_deps"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/MatMul_grad/MatMul_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "gradients/AddN_1"
- op: "AddN"
- input: "gradients/L2Loss_grad/mul"
- input: "gradients/MatMul_grad/tuple/control_dependency_1"
- attr {
- key: "N"
- value {
- i: 2
- }
- }
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@gradients/L2Loss_grad/mul"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "GradientDescent/learning_rate"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.5
- }
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable"
- input: "GradientDescent/learning_rate"
- input: "gradients/AddN_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent/update_Variable_1/ApplyGradientDescent"
- op: "ApplyGradientDescent"
- input: "Variable_1"
- input: "GradientDescent/learning_rate"
- input: "gradients/add_grad/tuple/control_dependency_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: false
- }
- }
- }
- node {
- name: "GradientDescent"
- op: "NoOp"
- input: "^GradientDescent/update_Variable/ApplyGradientDescent"
- input: "^GradientDescent/update_Variable_1/ApplyGradientDescent"
- }
- node {
- name: "Sigmoid"
- op: "Sigmoid"
- input: "logits"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^Variable/Assign"
- input: "^Variable_1/Assign"
- }
- node {
- name: "save/filename/input"
- 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/filename"
- op: "PlaceholderWithDefault"
- input: "save/filename/input"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- node {
- name: "save/Const"
- op: "PlaceholderWithDefault"
- input: "save/filename"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- }
- }
- }
- }
- 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_171a1c01c56c46198d395a032e5b295b/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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "Variable"
- input: "Variable_1"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "Variable"
- string_val: "Variable_1"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "Variable"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "Variable_1"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@Variable_1"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- saver_def {
- filename_tensor_name: "save/Const:0"
- save_tensor_name: "save/Identity:0"
- restore_op_name: "save/restore_all"
- max_to_keep: 5
- sharded: true
- keep_checkpoint_every_n_hours: 10000.0
- version: V2
- }
- collection_def {
- key: "train_op"
- value {
- node_list {
- value: "GradientDescent"
- }
- }
- }
- collection_def {
- key: "trainable_variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\022truncated_normal:08\001"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\007zeros:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\nVariable:0\022\017Variable/Assign\032\017Variable/read:02\022truncated_normal:08\001"
- value: "\n\014Variable_1:0\022\021Variable_1/Assign\032\021Variable_1/read:02\007zeros:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "Sigmoid:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001
deleted file mode 100644
index 083abe4a917..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index b/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index
deleted file mode 100644
index 43ceede272c..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test1/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt
deleted file mode 100644
index 112f9a28cb7..00000000000
--- a/model-integration/src/test/models/tensorflow/regression/test2/saved_model.pbtxt
+++ /dev/null
@@ -1,389 +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_BFLOAT16
- 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: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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
- }
- }
- }
- }
- }
- tags: "serve"
- tensorflow_version: "1.13.1"
- tensorflow_git_version: "b\'unknown\'"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- }
- node {
- name: "Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: 1536
- }
- dim {
- size: 14
- }
- }
- tensor_content: "\306C\326o\340\326\223?\020\277\341\231\265\306\270?\316P\000\311KI\207\277\220\227\253 \371\377\301\277v\017\032|E<\276\277\341Z\0000\306X\235\277\022\234<\027\361~p?D\223\252\246^~\305?;\245\032\230\276\206\301\277\332\273f\313o\255\275\277\225\371\337T\205q\257?\344l\364\354\365iM?\333p\307\334E\010\304\277Aj6X\256?\275\277\236\217V\305\021|\300??\022\307j\253\030\301?n)\022\372Kf\246?\023\010\201\026\212\243\204\277\244\017\025\200I*\243\277\332k\317\331\036\003\267?\300\334pk\254A\301\277\235y\006\310jR\300?\001 \331\267\276\315\220?\350Y\221w\262K\200\277\024\256_\t\361\311\301?\326H\352h\226\203\260?\0237\325z\351\353\266\277.W\003\312\016g\220\277\327_\265\225\226\353\243\277N\006\376V\262\260\304?^Z\265\276\206\211\253\277\234/\315\345qM\300\277!\r\332-\263\364\221?0x\361O\221\020\261\277\343S\030|\376&\211?\272v\000{\002S\317\277\243\026:\022_\247\273?\3632&\364\360\210\224?\r\027\212\022x\224\246?((UB\235\331\223\277y\374\253\333\277\226\221?\003\004\363(\2270K?\303\370\363\270\302u\263\277&L^.\260\201\261\277\275,\250\263\003\261\251\277i\271I\261LX\261?*\347\232\245\205F\307?,\273}\203\033\251\214\277\2743\371l\037\324\272?\240\022\305\372l\252\247?\366 \300}\247a\312?\2277\227\332\340\004\247?E\327\353\221\215`\274\277\036\235\215K\247C\261\277\361\233\302H\\W\226?\375\270\022\021n\211\316\277\300\273\314!\021;\300\277a\231\255\356\312\375\310?e\306\323\212\213\375\207?\243@\212S\307\226\262\277\201\007r\200x\266\243\2776\355\264\200\224\332\226\277HVA\002\213\372\312?\203EZ3\367\337\266?\036\322\374\370\320\324\306\277D\231?\257b^\177?c\363\365z\363ZX\277\373\242TTS#\303\277\037/r\217\224\242\271\277\301\017\356\343\022\363\263\277\315%\261\213\317\301|\277\005\357\013\260M\010\320?\257^A\360\257V\262?\350f\367!\366?\275?\004\237\311\022\023F\303\277r\305^\300\243\361\300?\217\017*Q\276\201\267?\025x\212\225\343\265\304\277ey\271\324\353\033|?\246wO\244$)\240?\204\335\343\264L\242\257\277\315>y\350\346\314\305?\277\256\335%57\254?\235\024\335+FA\237\277*\244\0329\030\200l\2779\251,w\035\006\302\277\274\010\271\303\233:\236?\'9 3\346-\177?\275\320\177\351xr\302?\037<mds\021\272?ua\353~\371\275\276\277\346@\326\353T\335\227?\235*\031\227\244\006\216\277\353\177k\221\374\361}?\n\233\372Y\255L\301?e\276\364/\354\336\260\277a+U\223\216\202\245?\214\3049\306\377\361\204\277.w\252Q\223\036]\277)G\363%/\212\241?\375\252\342\027E\361\266\277]\200\252\034\302\346p?\3516\266\030\177w\312?|\014\363%\3342\226\277`6So\034\020\245?\212\'\305\377Q\344\272\277K\242]\362\014\335\253?\256\215\274\016\200\307\220?H4\370:\276\332\270?PC@dEW\206\277\237\202n\202m.\240\277\344\204w\3204]\300\277\256\353ZQ\325P\271?\311\210\262p\3524\264\2775#\025\031\262\256\240\277ku\311<\006\315\240\277\311\346\267\260\007/\252\277\t\215B\001\276.\301?\255\020\311\276\026Ay\277\372\t7b2\355\217\277\232\344\303\240F\245\307\277Gs\366_\263\220\253?\333\nA\" lv\277Q\264|\022f\232\245?\037Q\306z\232\324\271\2777\225\343p\230]\244?\371t\226F\035Zb?\267e6\331\306\032\303?\340\205\254\324\313\215\256\277\014U\r\366A\212\317\277\223\'.l\372K\270\277\226\215\020\236\233\017A?n|,W\234B\241?\330\253\022VW&j?\233\200k\303[\323\245\277L{3}J\033\237\277\353\333\214_\010R\225?\025Q\273\364\261S\211?\205b\006\200b\020\260\277tl\350]\342\007\300?Z\244f*\341\025\203?\334+\220#\226\377\271?\305\036\332,\362J\234\277\3632\232dZ[\227\277\0202E\313\230\322\274\277\205\036\235E\306\350\217?!B\354\364\325\301\303?L1\004\252\275\215\237\277\030?5\341\254\373\301\277\'\031\256\240\026\223~\277\217\002\2600\216\232\224?{\336\270\215_\371\272\277?\267\330V\1775\306\277f\200\021F\321\206\225?\303\341\377e/h\232\277\003\\>G\377\\\252?!\307\205\342,\222\255\277!m6\000~\266\223?<(\207\362\004\352\311\277\245\307\010>\257\343\264?\022\361\262\362\261Xs?<\200\362\"\013\223\300?z\2050\350C\260\304?0y\265\r\273\260\225?00\221ICa\271\277Q\3722RL.\252\277\371\036y\034\374\346\272\277\344\320\273\002\374a\225?[\022!>r\250\240\277\213\232&*x\254\237\277\332:\023\321\250W\270?\262S\367\252y\321\266?wQ/\256#\222\247\277\337+\257\226\355R\266?\217\216YI\317\203\241\277G%\322f>c\264\277M]\377\330O\026\300\2771\332\222\345-\304\265?\370\343\333a\346\225\304?o\023\303/O\330\276?\016c\265\225W\211\312?\303\250\230\361p\337|\277\306\315\360\310\372\365\267?\357\252\315\"\016\'\306?\272#[\364\016\251\271\277\013\241\007\023\317\372\273?8! \022(\362\304?n\210\2722\375L\230\277\346#\" \350\004\264\277\203\334Q\343\2455\311\277[\317\t\316\222)\314?p}\206\205\250\242\253\277\362\230\320\224d\347\305\277\205\325\211:zq\274?\322\220\367y\223\356\262\277g\201\021\233\356H\203\277\210{n\310:\034\241\277\356:\024}v\026\262\277\273\221|(\241\232\223\277*z\236m\276\377\203?\033\375a\312\334o\260?FXb\030j\021\306\277\027\260\367>\016\002\320?\246\327\215\255\301\256\244?\002\3201\264}\324\315\277\240\241\326\362\177-\300\277\2610\224#\305i\240\277\350ou\362\304\246\265\277\257l7\'u\326\300\277\234\344\232\233!\230\247\277\001/qDg\317\240?\212D\252\024\375&\272?\220\320_.|\333\262\277\346(pe\'\251\300\277E\300\255X\347s\243\277\377\034\345E\247\237\261?[\204\030\211\216\301\303?\n08\357@\222\250\277\217\267d\213\303x\311\277\225\017\320\352\212\r\227?N1M\233I\244\314?I\242\340N\";\262\277\356\327\034\317o\332\273?\026\016n\342X%\267\277h\211\002\262\336\236\223\277\245!n\033x\222\314?\013\006\353\370\274\025\255\277\000\215\237\300W`\226?V\204\252\256\034]}\277\240\353\232~\314\327&?e\010\205\222\rB\301\277paq\376c\003\305?5aA\254\225\031t\277\242\230\327z\341\017\220\277@e\367\332\302\314\265\277\362\376\313\351\327q\241\277FU\376*\361\"\300\277@\271,\363~\331\244\277\242l\357\202bF\307?x\r\377\301F\377\254?@;;\250&K\263?\235|\243\022J\035q?\'\240\005\020\272!\253\2776\334@\032h\357\245?N_\02423\343\302\277\222u\370ug\240\270?\007\222\224+\216\246\223?\332\253Ns\274b\212\277\261\211\320\310\003\343\202\277]\251\240\016\261\323\276?\236\215\212\n\270\271\300?Q\304\223\246\036\363\300?Wo\331;\227\200\257?\247\375\257\203\002X\255\277\330\310!\006\376B\222?hb\262\231\377\356\272?W\204rt\0378\320\277\201\256>V\336\231\213\277mHi\241V\236\246\277\250>@u\314\266\260\277s\317\251H;\257\270?\335\256i\004y\374\266?\001\262>\373\326\311t\277\301p\002\2409O\313\277\315\300W\253\265\310\264?K\347\234\\\321\006\263?\350\304l(c\021\264\277\031\334R\333\010l\307?\244\364\030\330N\217\225\277\262\312s\267\316\023\271\277\024G%\257\224\306\213?\255\232\215^\374\371\244\277bu!\301\354\361\321\277t\243\2336D\345\260?\303\212\026c\312\330\266??\216\2433)]\237?k\316\014n`J\306?rOS\241\373@\262\277\217\264{n\323\345\323?\354Q\337vA\263\260?\253\374\264\325A\000\254\277\003\002\256\266\304\\\304\277}\232&\'\302\300\270\277\256t\332z\344\362\277?:\210vy\025\223\246?\327\3678>\370!\302\277\202\245\210\036\372\304\271\277\\i\346~\355\327\207\277\"v9\361Nr\263?\205\323c\026\'6\265?E\nG5\034`\257?aX\266JLe\307?\324\217.\223\323f\272\277\234\366\301^\007\001\224?64d\205\3402\220?^\376\022=\233\224\315\277.<}\034e\321\246\277m\323\354\000\335\002\272\277t7\016\265m\346\240?\nFB\307\2644\257\277\013\2667W\023\210i\2770a\310\231A\205\224?\336V\364\372\244x\244\277\266\347\023!I\230\243?#B\3774<\344\250\277\261\347\300Y\371\033\251?\3005/T\370\250\255\277fe\031&lQ\267?\201\033(?\330\335\242?\206\220\372\264\324\257\274?\036X\017Qw\245~?H\301\177\014\320/\305\277\000Y\361\233P\255\263?_\240\022\341Q\000\217\277\262|\206\222\234\025\267?K\256I\276\230\n\310\277S\3749\351\252\220\227?\033 \377\224\227\247\211\277 \214\036\344u\201\307\277H\027\345x\262\300\244\277\220\026\224#n\364\303?\\Q\323\233\375\224\245?\037]!@\376\273w?\024D\2725s(\255?\223\364\307\305\025_\253\277a\352\275`\266z\227?\344,\304\371\357E\305?\373\266cR/N\272\277m\255\213q8sK?r\216\350H\307\242\311?\215S`\'\000\205\227\277\027\210\326\016\236\262\253\277sM<\260rtt?%\220Mt}Q\264?)\252\340\034\2716\247?p\272\"%\334\367\250\2775S\003o\313\240\250?w\324B\360\2212\301\277\374\215\221\332H\222s\277#\264W\r\317\305u\277\322\255\257\314\213\352\265\277Og\201ev\330\227\277\262\306\230\226u~\272?\337\273\177@\034\314\257?F\215U\353\357\037\272\277\323\307V\360T<\266?\0350\304\255o\002\321\277\334\352\301\334P\317\265?\353\333\t\271I\325\264\277\026\016\370\242\243\337n?\350%\033\302\327\310\231?\177\272,<W6\252\277\375}\267\234\246\373\202?b2\265u\375I\235?\356\335\251\010\275\332\322\277$1\332\311gn\301?\257m\327p\220{\264\277\020\251;&ZK\300?\247\177,\340S\036\271?>\224\233\247\222J\244?F\345 \260\243\252\276?\306\010\3153\211\024\261\277\2671\254S\376$\321?\006\244\230o\250\300\300\277D9\305\335l|\276?H{6\n\361\227\261\277\021K\001\225u\323\223\277\247\000S\237I\313\264\277\225m\277\016\264M\225\277\366\262Z\177\244N-\277\356\275 \342\310\304\222\277m\221<\312P\263\264\277S\250\005K\3408\311\277M\350#\014\016c\211\277\t\317}_M9y\277\352\261|a}\022\227\277\243T0\021\026\322\262\277&z\213>\205\365\267?T\273\032\344~9\300?vM\276\207\276Q\255\277\241\250\347\371H\343\244\277\2420\230\233nf\266?+\365(\214,g\311\277\344\303#\304\202\010\263?/TK\311\227]\226?\215u\337\311\330\025\311\277Zp\374\344E^\266?\3075\230\260\302>\245?\342\024s\001U\224\271?W\303\225p3O\251?\0311\033\312+\357\270\277\202\010\337\333\0106\340>\317\321r\312\354\310\273\277\207\336\226=\337O\276\277r\234\266t\253#\247\277\240q\007\342\275K\310\277+\311\247RR\366\265?\t\335\236\216+\034\302?6r\217_\003\237\300?\207\216$#\1775\245\277,&k\202\241\265\316?\244\274$\241\367^\246\277\204\327\305fHj\306?\304\256\223\371t\226\303?\023d\301\351\375^\264\277\256i#\020S\243\237?\205\035\2226\361B\224?6]\237\330\241\220\267\277\265\311O\334d:\251\277\306\366\\\037/\332\266?z\t\036\315b\371\234\277F\317A?\254\322\264\277\254g\310q?\212\276?\332~\025\000\\\345\230\277\236\347\221`|\322\277\277a\320t\211\030\311\233\2777|X\336\356\306\243\277h*\200r\321$\242?\3343{\277\277\205\311?\313\016\345\0361q\300?O\226\245\310\245\343\271?[\213\332p\3248X\277\027\006\361\307Z\225\265?\004\007TA\373!\223\277\3263\\\241G\020\236\277\3578\372\310\303\010\246\277\350\016\345`\022\035\222\277\321S7\3055Z\257\277\373F\326sjg\242?\177\314\220\212\317G\247?\204\t\256\037wo\225\277osg\363wC\267\277\376\250{\246@\330\222?\324\014}\374\r\225\242\277%\331!n3\334\246?\240p\316\005\306U|\277s\027J(\307\370\256?=\274\300=\014\024\222?; l\324\306\264\264\277q\200\035*\216]\243?\027\016G\301\375\\\224?\226\033\270QWm\302?Dt\331\302u1\303?\255\311\025\215\244\300\216?o\211\264\350\272\345S?X`\231:\224YS\277$\226\336}\027 \225\277l\203\265\375\367\306\314\277:2\307\365\014\'\246\277DU\353\224\371[y?\337\3533\232\223\274\251?:\272d\256\364\326\260\277B\326\211S\255\022\207\277=\313\3234<\247\276?+\236\310\263S\'\246?T\030|\305\206\023\304?3T\223H\001\300\325\277\322\216\350\312L\356\233?\362r\247\201\231\251\243\277b\361\177\235\262\244\260?77\326\266\222\027\322?\275\322\356\3358\312\234\277\\J\017\2700\271\264?\036\355\t\0143\010\247\277\264\340\331\300u\230\307?\315\2665)\036x\275\277&\377\275\243\304{\274?4\314B\342\026\010U?5\232j\006\240\230\245\277\270d\367\007\272\020\274?\227\221xzR\316\275\277\027)\361\3176\274\240?X\205\336\261F?\217?\273I\226\227\355\r\301\277y\361tPpz\200?\267f\326\242>\244\277\277\211\214Yinu\270\277\227\324\241\210\362\350\301?\317H\356b\371\347\250\277\327\376\232\325W\345\177?\233U\240\305\025\306\262?;\327\222\353\272 \202\277\200\234\020\226v\271\300?\245,\010\227\267\017\313\277[\320\010m\r\341\204?\214\216\256@\322\026\224\277\255\326t2\001\225\216\277K\223^\234\357j\221?:\354\267\3534\235\243??\001c\245B\331\252\277W\325\350n\034H\274\277\035\224`\003\260+\312\277\372\356S\265\246\377\207?\305\230\231\256\333\203\272\277\316k\035\202\261\037\303?\245\023\241\243\025\315\247?\276\216H{\272\223\301\277gb\355\227\205\034\314?\026N\t\274\303/\300\277\302\275]\353W\301\223?\026\254h\026C4\273\277\261\305\342D\372v\260\277~-\347\301\274h\320?\nj\255\261\027\027\213?\021Vn\025y\201\266\277\326\210e\325\266\373\271\277\254\001d\2455\326\243\277}ut\221G\262\303\277Z^\334Z(}\274?\262\345\177\231\276\357\260\277\0214\324\252\314Y\271?\360\007\337>LL\320\277E\210\016\037u\177\314?+\200\250\342\343i\261\277\261\201\263\3617b\301?\351<\212E\234E\304?\027\325\3337\n\325\312?\014\2363f$\237\250\277\247\327ziu\341\264\277\231N\010$|\263\232\277\355\315\271\200uq\233\277\201R=\004s\200\250\277\001V\334\346\240I\246?\306\021\314\376\034T{\277\243\034\320\"}b\243?%\21470\374+\262\277\277\316\273\005H\217\241?\026_\221\314\212\362\221\277pp\337i/e\304?a\007\374\245g0\241?c\235*]\342h\304\277\"\256\002\216\314\275\301\277L\360u\247\257/\276\277\340 \321Q\262\254\323?\237WwE\034r\221\277\300\274\0138\372\014\262?w\006\222\315\030.\324\277FMI\347\213\263\251?\272l\3424\217\335\304?\37179Rb\200\304\277\010,\313\367\337<\251?;rW\2172\202\300?\000T\245\376ca\230?(r\003\2559P\302\277#|\253F\3666\254?\213j\377n\007\364\264?\304I$\354\211\256\233?\352\232\333\302\271\341\256\277\272b\301\257U\201\313\277\220L\r\315H\250\306\277\007M\313KR\206\267?\352r\256)\017\017\227?LT\300\022\376S\230?):%\332\245\210\315\277\260\202\363\235\236\241\267\277\274\035`\342\304\221\223?G\330\270W;\261\276?\2154\310\374\206T\272?\017\020\220IE\334\302\277g\301\202\260\246\344\271?X+\"\253\\\002\312\277\323{\353\357o+\267?&\257\363\306\032\225z?\335\375\336\352Jj\253?\005}?\023\331\200\262\277\207\213>x\231l\263?\013\235\016mu\030\302\277\367\237u\255\240\177\242?\265\357P\020f\216\315?\365\010\333x6U\263?v\020p\321\201\242\240?)\343@\256\273\240\317\277|_E\315\225R\313?,RE\214\013\272\243\277T\337\244\314\327n`\277&\017W\211\022\377\271\277\354\361\241\035]\341\251?\327\017%\340\n,\241?y\014\246\234?\246\301?(\273\240!\317\002\236?\300k3\330\034\330\246\277rD7\002(N\322?X\030\241\251\357\313\302?\036\363g\034\007\345\264?s@\310tz\334\251?\314\347\374\300Po\306\277\346\250hC7\023\316\277\315\017\222\202;\373\254\277\244\355\237\006\351\334\244?\354\017\007^}}\270?\367\255\330\036\200P\266\277\007\020\001_I\352\243\277|\311_\340/\215\266?\216@g\024\272\311\241?\362W07\274\003\254?\035`\"*\261T\277\277-S\271\241\250e\331\277\224%q\003\344@\240\277\027j\250\2601\341\254\277-\266\232\253\220\312\313?\222At\0179\253\321?\207\247\353\354\260\356\231?7$8\312z\246\220\277\206\010\241\343\260\006\311\277\003\225|\245\014\332\253\277\347\371\364a\330ER\2776\267\206*O`\200?\250\031.4a\243\216?\026\340\365\026\343\233\216?\026\014J\026\344}\203\277\024\200C\n%\331\206?r\324;<\377\321\201?\277\022Im\317}\312?v\031<g.\230i\277\202\353\314Q\032\007\271\277\373\007L\366;\037\267?S\336\305\322\311\265\205?\"\363\314\n\005H\305?\26223\to\023\177\277\222\"T0C\243\305\277\205\341Z\3541G\265?\305\037N{+\331\253\277E\250\326\267\361\030\274?F$\360bn;\265\277\207Z\273\370Q\267\252\277\362c\255\224\347\\\242\277\275\366\373\226\007K\266\277#\346\335\354\355Q\320?\206*\304\226 \014\311\277\032\0200\205\034\372\307\277I\200\016\242\032\306\243?C;\322\244\351W\305?\231h\252\234\312\013\235?\'\246\311\t\227\251\241\277>p\353\270v\346\274?\370_\005\202\223 \250\277\244W$6\310\033\240\277t\034\343>x\034\257?\332piG\325f\270?\251Q\334\'\214\300\234?\240@U\204\335\372\276\277wR\206g\013m\260\277Mt\311\230\0357\225\277\354\022\312;\263c\247\277\346\204%\220\220v\234?*tP\333\331\267\265\277\315\177w\277\315}\266?\367\007\323WP\373\263\277\000\034\n*Z\366\324\277D\272\326\210\326\332{?\235\335Y\010L\215\266?\337\325\024tA\\\302\277\201\320\353C=\252\300?\236\203\" \354\032\265?g}\346\021g\220\210\277x7\234\"\2470\243\277|}\025\201s\007\273\277\212\310\007\263N7\223\277C\220\350\n]B\213\277c\003\351\211m\321\241\277j4r\257\331\227\245?\231\363\206\323\262\025\220?\035G(\333\006\370\273?\234\016V\242\347&\243\277ji\022h\000\266\254\277\367\211\2161\235L\266?}\n\220\376\371\263\272?\253\031\215H\006_\222\2770`\244\367\033\323\253?j5\266@\377\254\270\277r\201)\240\313\213\241\277n\2507\366jB\263? \204C\3534\007\264?\036\221\210\322\202\260\300\277\r:\200\251\003\303\211?\"\245\254\034\317\252\272\277\207tT\000\234P\211?\205\007\230,\031\346\242\277>\2727\303\313\230\243?\016\200\361\343+=\330?\203\234;\307\271Z\311\277\376\r\262D\002U\223?\317\237s\236\372\357\303\277\347\250\200w\307h\260\277\010\025\030\306f\225\303?V\345r\2650;\240\277i\331\363a/\331\202?\363\360\265\312\010\274\300\277\331\332\226\265\353\010\224?\265\332q\034\333n\265?\352~\214\261\206\020\261\277\nC\213D;^\264?\240\272\270\304\037\\\307?\276\344]\270\035\245\320\277\216\204\271\240P\371\325\277\331\221&S2\310\244\277\362g\035,\230\024\270?\314\021i|\017\356\322?\242\346iCcT\231\277WI}B\223W\267?\264e!\272.8\204\277h0\204\337\362c\267\277\250\007sFuw\246\277?f\323>sQ\254?\334mw\014\365\324\210\277\304\230\254A\206\013\236\277!\276\331O\010S\265?\224sihm\340\251\277\250YE\3144>\272\277h\355/\362\317T\251\277L\327\342[\325\027\223\277^\325\ng\331@\270\277iJ\232\004\037H\216\277\324\370$T\2426\265?T!-\266\226*\271\277\251\372I\267,\235\321??!\375PG:\310\277\027\340\t\277\275\022\237\277\316s\'V\353\n\263\277\306Hk1,\227i?\316M\270\342\t\220\263\277\352\020\314\227\305s\220\277\356\257\017>\341M\324\277ig\335}\0047\222\277\255Y\214*m\217\245?\376+\2279\353\202\316\277\305\022\'N\311\240\305\277%ItUF\004\324\277\276X\003l\313\353\266\2771<bK5\"\313\277\017g\203D<t\245\277\\\341\000\337\366\177\272\277quv\036\326\355\251?i\354\352\223\2016\270\277(-\200\004\351\211\277?\251\223\240\346#w\235?\210\222\005-\311$\261\277\360w\343Ak\341\303\277\270\265u\276\367\326\301\277\020x\014\212[;\261\277N\243\312\224;(\256\277\026\236[n$\211\205\277\3716c\214x\013\302\277\324\300\326\033Y\271\315?Xw\254\025\337\006\232\277O\306\357L\264%\260?d\204\022J\006.\326?\371\317l\013o\334\300?\300$\200\30106\251\277\373\315\177\312\226\245\246?TU8S?K\262\277\346X\336\340\370\232\223\277O\276\211\\\2768\301\277\377\010\320\344q\377\276\277|{jh_\307\255\277\021\276?\360EY\207?\260\3722\026o\254\260?F\215#\252\252v\262?\331/\341#\034\217\207?\362\356\250\032\223\320\266\277\237Wf \353\010\312?3\242F\022%\334\302?\213\36621\252G\316\277N\224\366\253\235m\251?\314\215[\323\351lv\277\036\350*\352\253Vw\277^\336\247\317\273$\303\277\304Fm<\343\353\322? -]O\200A\262?M\037\365/\344\235x\277P\267\323\205\3572\275\277\036\227\364\351ds\277?\237E\225\007\224\202\245?\212\246\334\201\346d\256\277\006\320\303\224\333\253\312\277\367\317\354-\331\321\273\277z\372\022\352\212\320[\277Miw\304Ww\271?\201\364\355\313\253\241\277\277\204\022\321f.ue?\354Q\021\221\007\323\277?\267\207\202UX\320\320?\302\303\365\034\240\032\321\277mz\3625\344\023\262?bX\316\265\203e\267?\302\023\r\336\304\274\247?j\240\314\200\360\217\264\277\215\307jN\345f\202?\355(\255\311\272\377\324?\355\005\356\372\337\272\305\277?j;\025z\021\276\277\264B\377\0055\205\310\277MZ\177)\337h\265\277\373\223\377\363\340\357\246?\014\265m\006 \256\254?8&1\375N\252\302?\003\265\244A,W\244?<|/\273\256\027\310\2770\235O\034\252\260\244\277\365\322\237\027c\346\301?R\335d[\333\315\235?\302\204\t\343V\300\273\277\035\354tv\325\204\314\277\272!T\223q\316\263?\017\020\010\341\215\t\272\277\017\213\206Q\016c\274?&t\304\335A!\272?\217P\352\335i%p?\334\351\201y\023J\232\277@\344\374\177J/\242\277/,Q\017\361\"\222\277\036T}\316\203\031\251?\245\337\"U\223\010\225\277\243d\235I\276\033\306\277\237\336\231\240\267l\246\277\024\300\244\232\024p\262\277\314:y\2678\333\254?\2677\370\261\256T\271\277q\034\353\235\373\003\264?9Sd\303\325w\272\277\360+\237uw\006\312?^\005\r\277\264/x\277\235l\242\211\311h\203\277ld[M\232a\201?\227\342/TF\307\243\277o\216\332\300\237\374\246\277\320\014I\206\225(\217?\024\277\344G\314\235\301?MI\2503\234\334\215\277\251x\337\335\330\370\270\277\241\200r\376K\241\312?\335>\206\271<\273\311\277c\005w\321\232Ar\277.n\255lY/\264\277\031d\203_\370\375\302\277\016Y\332=I\215\250?\344\202z\225&\004\306\277\t\203\001 \236\217\261?\220\207\250\224\t\267\274?\270.\017\352\240g\277?\320\350<\313\250x\243\277\320ZNae\241m?\023\037\032\274\374\363\257\277\r\313\t\027\211h\204?\014\3027\254\036Y\307\277\006\227\377HL\274\230\277\027\235@\241\216\277\261\277\250\032yI\017%\245\277M\232)\355\331z\301\277\353_\240\216\031p\264\277P\350r\231\337\227\223\277\362Jn\253\030\223\241?\311\352\002a\004\020\273?JT\363\026Jm\261?\036\016\300\363;\'\312\277\365\331\302\357V\216\321\277W\372\365\320\324<\231?%\242\276\366\202\266\270?H\370\205\310b\034\207\277\333\236\244\230d\030\233?__Oj\342\325\252\277/\252y\214\262:\267?y4\370\204GU\263?\217\350\270f\335\231\246?h\374\315\332A1\271?\300\332\354\352\311\325\275?\025\030d\375#\221\313?\021\354\262\364\210\242\233?G\356!(\317H\257\277\014Ap?\327\310\302?\205\n-\\6\332j\277~JY));\264\277\020\032Cv\024\337\276\277z|~4;v\247\277\016\354L\376C\023\263?\277g5\325\356\'\320?\312\315\260q,\231\262\277\325e\344\2725\212\301?\3312\002\355u\315\247\277\217\251\251f!\017\277\277?\031\303$A\216\227\277r9,\026U\305\301\277\273\230\344\334\207X\215\277t3\312-{N\242?\271\261n\3427\350\236?#+\316\373\360W\262?\270e\372\214\315l\263\277\345\245\267\3652\256\260?\301\022$\366\023\r\265?\"\262\"\254%\336\255\277\253B,\334\377{\304\277\356!G\221(\214\251\277\227Io\270k\201\232?gM\177\215\343\300\302?\234\247~^[&\251?\370\317/\334\023\303s?\371\353\016\202u\352\302?G=K\0014f\262\277>\234 \232<t\216?\261\027YwM\261\251?{\r\316\360\205\244\322?\317L\371T\377)\243\277\222\003\\\374\244\266\277\277\325\261\377\035a\036\305?\315XX\371\332\004\323\277\023\245\371l\355\310\262?F\266^\375\315\204\250?)\263tk\372\352\302\277\n\334\017(\020\000\242\277\331\275rH\255\'\262\277\321\337\317J\314\017\230?i:b\274d\300\306?\201b\234\230{\367\270?y \257l6K\252\277\202\025\256\260~\350\274?\200\337x\021\354q\302?0\305\035L\351\331\240?\256~\366b\353>\261?\327\213\251\21441\330\277\325\234\010ESL\241\277\025T|C\231\033\276?JQ\206\307\340\232\320\277\034\307\227Y\377\024\202?\312\200L\010\217N\273\277R\313\327\010\355\211\253\277\";\001@\351\271\254?D\314\274\003\260\342\202\277\3736\216\200\330n\264?\223{5\004k\210\303\277\302\322!h\232d\270?\346\242\363\"f\367\250\277\317\000*2L\356\274?!Vl:\335\324\277\277\250kBl\003f\244?\256H|\365\303[\205?\274\026$?\227\257q\277y\303_\322\365\337\253?\365b\303,U\247\264\277\004\tB\014\300\273\270\277!b\214\244\367\032\317\277niA\220\375\243\250\277\001\243\367\214\340\333\244\277\267\266\311\232\025b\303?\203R\227\272u^x?\343\361\311\212Dh\216\277\315\372\027\344u\242\304?\235Vg\214\347\356\305?\251f\300e\025\'\254?%\271\033R\006\325\254\277\351/\207\002\212c\321?\347\336_\\6\307\254?\360\343\374\023\007\305w?\210\016\036\351\200\373\273?\364\212\372<\274\255\323?&#\257\216g\314\222?l\351\245_\361e\300?Vl\331\367!\272\254?IM\217]\332\036\227?\306+\247\351e\307\302\277F\312\235.:\272\220\277\0133\020T\233q\227\277\224P\246\222\315\266u?\252beE\262\233\245?{\006\242\261\030\316\311\277x>{f\324T\230?\272\360\\\270p\223\257?#\313;\327\343\246\220\277\317\"\364\212\341\366\324?(%\3039\007\245\243?+/\254J\244\036\306?[\363\344\031\035\277\300\277\241=+\257\214\306@\277\337\352;\300\254B\310\277\257E f\240t\302?\363\205\027\233n\232\244\277\204\237\375\215F2\250\277\334D\331\266~\345\274?p\004\352\276\022\003\306?G\006\223,Wm\250?%\235\376n\206-\264?3\356~\026\372\031\255\277\250\333\231x\031\316\304\277_B\3432[@\232?\300Q3-\235?\242\277\211\326\326\016b\251\254\277>\274\031[\014`\251?z\324\250\220\335g\275?v\206g\023\260\246z?M\275bd\036$\275\277]\333\031\020\215 \203?r7buX\225\242?F&\364\344\"\010\255?\257\310E\301\362z\271?\315\021%~\'\n\251\277\356m\023\331\327\353\210\277=\316\177\233\213\241\277?\307 ;4ku\231\277\320\345\313\373qQ\245\2777D\001F\310:_\277X\373\250-\222&\212\277\371\026\230\233}-\302?\0130$\323\277y\321\277\273\017u\356\225Z\253?\023\242\252\034D+\255\277\352\251\\n\342\033\316\277\020o+8\354Vu?O\264\007\254a9\272?xf\037d\363K\277\277\355\222\021V\"\324\230?\340/\275\220\013f\307\277:\3754Bh\274\251\277\002xP\335\r\035\277\277\253\242Wh.\013\200\277\2540\200\333\336\335\274?\344\025m\255 \314\241?m\244$\177\005`\307?\342U!k\200w\320?|F\277\"\320\030\273\277\001E[M\320a\247\277\253\332)\361\030\272\244\277%{\264B\020^\301\277\342\300\023Za\017\222?o\266H\340[i\243?`\362\310\357\247C\232?\027\356\222\035\245\325\223\277#h\353\0339\322\246?\325Oi\321X\003\312\277l\251\267\035\240\301Q\277\354;\233\205\346\351\267?\203(`\33240\245?\035\261\016lWE\275\277O\017l\225\023\034\210?\2143#\246DD\222\277\306\351\366\261\266\024\272?DH\355\317\230\031\266?D\275 \341\361\256\235\277\266\346\322\217\306\274\303?V@\021f\347\001\244\277\'_\324f\350\335\222\277\353\3323V\007 \276\277k/\013\026\302\356\250?\313\372Le\024\354g\277\346\351\220\204ac\256\277\320+\004\013\001\266\254?\r)&\276\303\256\264?B\366h\"r9\253?\353\274\017\020E\267\270?;\270_\"!t\275\277\222\016H\330\376(\260?A\020\237\301\252\311d?\335\264\375}\217W\242?2*dJ\016\221\242\277\241\352\203M\367\301\241\277\305\376G&\275\244\310\277y\2340^\017R\203?\347\217\t\t\254\300\254?D\214\036\322\212\350\214?)\310`\"\021L\246?\247\305a\242E6\305\277ZeP\223\202\353\272?r\266\326\212D\330\237\277\366\334\200\260%\303\261?\321\221\3001\265oi\277\200I\346\200\360\200\262\277\275\204\341E\351\377G?y\302\300\360\202\215\303\277n\212\215!cy\261?\352}\030\377\242.\307?x\214\363&Wb\311?\t\263\003\336d\336\241?bFe \337!\306\277\337S\227\313\200\376\263\277\310\267A\335\230\330\267?\365oe%J1\302?\273\322\327\275\036.\242?Vq\324\201\247\214\314?+%\207\300\304\231\203?X\206CI\267\007\260?\363\354\227\t\033\267w\277 3c5\235\211\256?\313`\245\'\206n\204\277\363\2574\371\320m\221\277\330xD$\036\2776\277}\326(\330\3569\256\277\234\324c\326\277Q\310\277p\276\303\225\274\002\233\2775\215\256\314\212o\320?\020\355#>\006\207s?Ez\3270\343\262\254\2776b\332j\276\367c?\336\317\331\313V\373\251\277`\300\304\347\236;\241?\263\343:\244\237\365\252?\344\242\'\007o%\302?\224\364\244\3576\337\254?\251\221\317%\230\215\220?i\032\307\357\316\007\273?\276\270}\260\0206\276?\233\025N\331P\271\215\277\354\207[\266\352\275\264\277\275\013Q\310\016\233\260?\254D]s\255\300\273\277\326\253\212\2754\240\306\277Z\350^)\374\210\217\277\001\326\020\363c\331\224\277\201Z\0237r\351\266\277\307\321|xq\214\256?\201\t#\343\351B\263\277\266\034\300\231j\347\311?\225:\364i\346\342\244?\037\204W\354\017\233\260\277\310\373\321T[\267\216?\2777\261\177\\\221\300\277f\237\037\212\362d\264\277&\3714\352Ry\302\277\204\232+o\332\365\270?\207\306\315MM\217\271?\346J\023a\005\277\277?_\306\020E\351 \274?{\332\350\251\212\234\275?z\267\234\202\033\246\274\277\332\313\321\231\333\274\202\277\355\006\nB\240\300\206\277r\351o\314 \320\250?\237\272\022)\217\371\323?Q2\274\324i\356\221?\346t\177\274\3278\274\277\271\0253\234\276:\310?&i\226\020\305\241\242?,?\254\313\206\214\241?\223\252\241\362F8\374>6\314}X\235D\304\277\033\371\234\313\231`\254?0\236m}\'\255\264\277\271\177O\026Z\352\300\277\"uAZ\376zr\277\001\364\354\2229\235\213\277s\227\303{v \265?\212\023\033\372~\034\305?\310R\336j\304\215\214?#}QS\014\001\244?\033\222V\205\330\373\312?\334\342\225M\272\n\277\277\270\247?\265t\331\256?!T\242Vb\036\224\277\374\014P/\004\236\303\2770\336)2^P\276?M\264$\352o\217\247\277\201\261\345\212\275\201\252\277\256\267 z\225\333\254\277\026\316\256c\313}\222?S\322\'\325\332\372\213\277\343\216}\001\273W\261\277\376\226B\3463\231\257?\014bP<\376\020\263?\214\331\017Nl\215\312\277*\223\021\324\371\317\317\277\224\333\325O>~\220?\031;\340\242\305^\264?\277\365\311\341)u\226\2779ra\010\354c}\277\010\272\232\260\0178\253\277\366L\212\365\266\247\303?\346u-W\264?\223?;\2206\312&\201\205\277 VwA1\201\235?8\201\256\377\002]\305?\313\000x.Bug?\216\360\230\301gA\260\277)7\262B9\324r?\372\207N\242f\003\321\277\212\334\350\315;\234\266\277\210\031\241\235\246\270\311?\240\340T/\337\267\304\277^T1\256\224\323\243?\257\347&<\364a|?\332\277?@\370\026\270?\010\273\332\304\n2\274?}d\007\334b\316\261\277\347\361\r\307\353\211\271?\321\201W\322\227\270\237?D\276\373\240\231\315g?F\307\200\307\0311\236\277%h\245.\327\003\277\277\335\233 \275\216\361d?\377\355\376\202[c\252\277\325\036\203\204\205\340\232?\350\311\335\253\243\222\270?\305,\310\323Uz\321\2773|\022w\313%\215\277\370\002\202\001\276p\240?\361\211}(X\357\277\277K\204\363\207\"Y\272\277]9Y\367\262\020\204\277F\324\224-\322\001\302\277L3*E\314\352\267\277\365\201k\233\271\245\205?3\"\251\243\tk\306\277\233\313]\232\265T\320?\200\214\221\031\332\022\261\277\374\375\247\304\376\331\266?\363v\323k\227S\240\277\331\317\001E\'\204\236?j\373\213\261MT\261\277\016\270\310\330\232\253\221\277\312o\215\216<\321\242\277\371A\226\352\'5\243?\177[\'\275\307\211\306\277\231\241\215\003\347\002\302\277\373\267\336\300ag\304\277QC_\3306\363\254?\303\265@B\312\206\264?\"h\202\334\004\224\302?\022|\323&\303\275\271?\363X\034?\371\222\321\277\312\311\377Nho\301\277\010u>\221\270\250\262?\240\032b\035\231\303\261?h:\273P\237\322\225\277\000S\274:\345>\247\277\377\243\206\216\371\030\260?r/\203\312C\277\262?T?\346\265P\332\235?\030\302j\340W\270\245\277\r\311\201cv1\243\277\002\343a\237EX\313?\264?\351\271\215\207\241\277V\256\243\240\306\261\302?@\032\233\316>\307\277\277b)$\277:/\320?\347\211\022\203\316\251\302\277\"\206\2242\266\017\263\277\227/\334E \002\273\277A~7=\013\320\210?\373\213\306\372\364\327\271?\250\242c\2100\227\312\277\331\263o\354_\235o\277\030l\324;\037\r\264?\000\341.\244\337\365\273?8-\004\0231\022\217?\243s\254\037\234\211\301\277xBV\013\023\301\262?y\270\203\251\223\236\270\277\356\252\217\362\320\301\261\277n\030*\016,\362\312?\341J\023F\026\310\267?\245\207_\361\004\273\264\277\254\371k\013\263\242}\277\216\234\330O\347\337\271?\001\241\200\276\372\307\261?\225\212\357\372\312\020\266?K6\300\252\2607\264?\240Gc\364\375\004\274\277\014\264\253\315\231\035\312\277?\177\272\245a\344\304?\027(;\031\260\357\237\277\342:\376vt\243\303?/\025D\335\242\262\322\277\022\005$y\0309\267?\213#\205Z \\\227\277y\276\237\017\035\177\246\2771q\315\036\037\220\257\2777\024\323\024Q$x\277\232\243\202\321d`\232\277\274\007\366W|\020\304?\235F:\241\014\364\253\277p\207Qn\t,\302\277\030U\353{\320\243\252?2bp\321\022\270\317?5a\366\344@\207\301?\346!\035\336\251\024\246?\032\350\034\210;\265x?\215P\301(\352\020\242?GC(\345\035|\270?\346\252\277r*#\250?q\216\206\014\264\032\312\277\374\315\330\241\\\311\276\277\313\304\020\020\206X\277?\004\365\252f \000\253\277\005\025\350\360\301\360\247\277\32621\206\312\276\275?\227\273b\263n/\320?\333\307X\026 \023\320\277\257\032\021\222m_{\277\202\341/\247+\246\217\277\351\237]\022q\203\264\277t\364 :;\035\307?\204\371\346\217d\221\177\277\270_\365\223\2222\301?*\rh\374dq\313\277\374\217\004^Ps\237\277\316\354\225\276\350\252\240\277\362\222\203\3657i\300\277\3613\355J\215X\245\2771\224\256&x\237\262\277\027C\216y\272{\267?\266\363}\343(\332\300?\267\035\335\323\251Q\251\277G\315\243W\352\371i?\266}\001k\352S\246\277\327\33459\3649\302\277C\312SpB\350\257?\227a\016\177\204\000\273\277\255(m\242I\314\310\277\224\241\023g\315\305\266?[\331I\r\037\242\300?\016/\302>\034\244\272\277\367\222uW\3228\206?\"\023\354\324Y\331\303\277p\342\331l(2\315?\224\230&\267\215\364\325?\270\304\236\271\201\305\252?\370\350,\313\360\266\303\277\317\225\351M(@\307\2777\273\260\003\364\\\231\277\001\217\250I\204\300\247\277\375\344\246\323\336\345^\277\216\253\205(\0037\305\277j\221\260Q\347\314\254?I\214\347[\235\356\324\277\254W:\315=G\271\277\006\233\315\250l#\301?\033\325\340\203\215\246\272?\005\235E\305 \366\263?}=\347g\013\340\302\277\265\223@\316\004\032\242\277\360R\302t^\227\271?\343%\3749\374\033\201\277\316.T\364S\032\302?+\'\266gY\345\267?\2178,\025\301\364\231\277\302\342l\202\347\004\241\277@\\\373\366D\014\262?h\263\202\241>\223\226?\317L\tXe\305\312\277\327\345n,Z#\227?\\\035\'\376A\253\253?o\351\331\270\334\"\316\277&%\266\023K\'\347?J\251\026\347T\010\240?u\211Q\014\212_\311\277\250l\"v\273b\250\277G\222\352o#\377\206\277\204d\361\0004%\236\277\254\252L\034\212\323\304?\237f\240\032\342s\241?C+\022\226c\372\204?]V\377\034\217\3336\277;J\014\231\312\016\317\277\037\273\273\347\263\252\300?\266y\2709\033\361\243?3D\004\335\353D\275\277\202+\216\027\310\t\317?mbB\027\214\014\213?\257\225N\301\227\332\213?yw\216\270\250\362\304\277\261\264\273\352\t\354\260\277\2057{\246\307Y\263?\220!\334\252\010?\302\277\267\26712\372\251\310?\2551\005\007\261$\214\277\276\205\323\005F\257\227\277\240\223\377\243<*\266\277:\363\322\2074\203\244?\261\022\333\327r\326\261\277\345\010\335\261\002\000\265?\353\254\357P\324\376\242?\323\225\205\023\365z\223\277\211@zw\035\362\321\277Qh>6\243,\305?\n\r.\034L`\257\277\016#\3259\014F\203?\0103\2258v\020\210?_\302\253\244J\220\235\277x\225\376\255\247\266\255\277\275\361\004\374\336}\203\277\370\235\205\237\351J\233\277\301\224\240\306yX\204\277\300a=2\002\272\251?6v\014\310\263\336\226\277\307?\005r\212 \320?\007u\342\362K\032\261\277\273\\xD\035=\231?\377\rx\026\260P\271\2774\355X\301\265\300\272?o\257\230\017\356c\303\277m\344\225\245\016\234\267?\022\363\307H\276\253\224\277<\034\247\302%\373\221?po\0109\203\223\303?h\006\014y\203\261\311\277\234U\371/\367\320t?\032\021\345\225\373\007x?EC\350fq\265\310\277\tv\255W\032L\320?\010\025\374\375pvs\277\260\313}\020X7\307?\032\275\031\374rq\244\277Vk\263\366\311\276\311?\220\'\237z\030\223\311\277\r\377\275\"\320\347\252\277\033iI\017\252\276\272?`j\261\232\226P\263??\3211\206(\235\303\277\360\351\345\370z\321\235\277-\025\014\265\347E\234?\033\002\267\243\226>\266\277\213\322\313xI\364\260\277\024\226\260h\020&\327?\330\366\243\r\023\342\205?\252\227\242\r\221\036\241?i\247\300E\210\232\301\277\301\013\207\364Z\333\237?T\260\034\364Q\255\300?\310\244N\200\205*\242?\ra\255\357-\000\266\277D\252\307\354B\345&\277<[CB\323y\303?\257\373\004\362\247>\267\277\r4\246\320\265\273\260?\375\244s]\026\346\206\277_\302\327\265\324\201y?:\304\302P\\O\254\277;f\237\275\244\355\231?h\321O fB\303\277\236[\272\237Z\204\303?\363\005(\215\t)\234\277w\375\227\014\361\367\253?A\032\244pO\307\257?\014\201y\316\014j\304\277c\361\212;Zm\272\277L\353\316\306\337\005\231?\301\001r\302\377\005\303\277\335\343\304\373\007\217\272?\010,\225D\227\345\225?\037\320\237\031h*\264\277\002\221#\3166/\317?J-Z\267iW\240?i\376t=X\271\272\277\027\216\272\201\n\020\225?\312\271)\247\254O\226\277\2633\2106\377r\245\277\021\352\364\216\245\252m\277\367\2617\370C\255\272?\354\225\214\034\014l\256?\223\023R\245\246\324\267?v8\274s\261t\313\277\227\263\375\031\321\375\304\277p\021\010\335\301\016\213?B\335\355\351\017\036\267\277\240V\314\313\322m\261?\035\025F\352\226|p?\333_\255q.\316\221?\034\350\364RO\266\240\277^\365SQ\022\334\301?W\367~\372i\336\220?\215\327l\214\325X\307\277&n=\276\376\204\222\277D\231\020p\375\235\303?\312\031e\356\243)\266?\207r\007\211r\277\245\277L\230\350?\025\270\272?\005\331\331\345\034[\237?x`\242\325\374y\276?\203^\376\354T`\305?\305+\336@\326\nN?s\370\237 /\353\224?C\267\032\2113\307\304?q\003/\217g4\253\277\231\245\222\250|\254\262?v?dg\010\274\223?\"\036\032\017t@\306?w\024,x\036 \234\277jf\014\222\001\343\260?\364\021\264E\227\304\263\277T\017\205M\371\356\273?\200\033d\215\032\205\211\277\373\276\263\355#\272\240\277\371\215\024y\306_\307\277\264\303\032\246\241\365\242?b\331z%\275\325\255?\257~\211V\030\257\304\277\324\255\271&\324\215\260\277;\247c\236\373]\241\277B\245ziM\303\221?@7$\372t\361\321\277]2\003b\324\007\255?\325\341\336\013VP\265\277\373L\241\217\336\377\263?\204\225\\\310\356\203\313?\005\\\3044$\254\264?\200D\302\2654\272W\277z\273\252\027&\307\226\277a\223\307\372\311\213\251\277\211\357**\300\325\247?\2200\035(\337\"\241?K\224\274?\032\020\275\277\315\216\245e^Y\210?\'Y\027\374\256\323\311?j\344\013X\330\266\263\277\357\271\210\253\320\230\232\277\204\254\024\264\301\331r?3X,&P\265\263\277\345<\371\252D1\236\277\350\331\"\t\225g\272\277x\222=\336#\345g\277s\001\221bpo\302?j\331\r\0340-\233\277\353_\001\374\200@\300?\310r\204\0371;\317?z\356\025\235\351.\260?vX\273\373\357\026\235\277\014\r|\017\277c\257\277\263\346G\rQ\016\274?\007\356\033Q\235\346\246?\006\001\254\324\036\032\221?\343\354\362%\257\264\226\277\236f\000\330\000\211\234?\311(&\341\001\277\226\277Y\216H\210O\321\236\277T9\023\"\356\305\301\277\346\251/\322\0370\226\277kJ\330\371\301\243\220?T\227d\2452\237\245?L\213O\271\246\375\260?\014\001\360}w\231O\277\364\224P\272\227H\206\277G\326RK\002Y\302?\222\237)\261\007\246\250?\225I\265\205\366\275\307?\270\271\234\273p\354\274\277<Hl~\2652\270?\020\215n\202\335\345\311\277\023mz\331/\220\265?$\375\016e\261$\321\277\313\210X\231|\340\225?\221\365o\307GJ\277?\367\250j\r\016\002\230\277}xj:5j\300?\030\373m\335Nd\250?\311\022s\262\016\033\232\277\"E\205\342\222\371\322?\000\316o\010\255\303\250?\322*\300F\207)\224?\353\267\240\313\"1\224\277:\347\377\311r?\300?9\022_Q\013)\250\277\231j\321\375\366d\301?\331\327\322\"\020\341\257?\333\3733x7\014\256\277\'\0331O\376*\206\2777\030\233p}\257\253?KEr\010\206U\267?\217\020\006K\333\353\251?),X\177#Z\277?.r\301S\323\216\267\277\033\027c\005\333\343\237?bj\213\305.\010\223\277\274\221\020\370(\243\311?\\SuA2\013\301\2778\010\345\033\220\357\201?\013hp\337\343\344\313?\023V/\217\272k\336\277B\327\020\032=\242\271\277@}j\271\247\362\263\277f\346T\203\375\333\304?\3523*\335\366\r\263?\241\374\301\363\314\016\244?^\214\222\307\370\375\217\277!O\237\014\036\216\275\277\331\335\257\332\337w\247\277/pl\257A\342\251\277 -&\365\257;\321\277\303\312\203\t%B\270\277`\317\335\362\320\344\262\277\022\303\306n&-\277?\016*]\014\365\177\303?\232\351\312\200\207\203\225\277\333+\006\224\207Z\321?\342\010\274\377DI\301?\235\237\203\333U\310\245\277\242\344@M\017\331\225?\030\324\216b\243\207\302\277\246q\255D@\217\300\277W\211s\313\364\201\244?\227\371|2\325\203\302?\000\217E2\240D\274?R\252\177\223\200\275\224?*V\215\203$\254\247?\345\253N\334\250^\306\277\275<\316\263\301f\254?f\035\342\311M\017\210??\026\343\256J\036\257\277Z\314yO\037\275\310\277\263\367\023E\221\256\301?Bf~y\215r\262\277\215\203\025\000\314\362h\277\326\260\332\260\244\'\265\277\331V0\262A\037\207?G\337\316\271(\013\256?\247q\016\216\324\013\252?\302Q\n\n+\300\252?\247\000\303K\201\325\231?\271\3372\256h\242\252\277\237\336|\'@l8?\271\305\262\231Z=S\2773\312\341\221\313=\310?_>A\215\223S\306\277Vg\345t\330\360\254?\352\244\243\216S\277\232\277`\302\275*\336\232\244\277\373;F\204\177H\311\277k\375gA\323T\245\277,\036HzR\374\261?i\036#\377\036H\264?d\254\321\274\0335\267?\250\266\231h\230\255q\277\250\366L\225ne[\277\007\260\000x\244M\263?\270\254]\2135F\235\277u\213c\234\260\335\221?\265\2413\303\311\n\272?%\354(\014\000\313\213\277/\026\253j\001\254\260\277/@n\212\372\227\256?\037Z\323\006|G\326?\037\2436\340\034\324\254\277\376\207\241js\202\271\277\245\374\254\305-\224\321?\016\256\215!\311\321\307\277#\224|\n\272\305\304\277\377\355\212\017\232\332\304\2778)l\222\335W\235\277\264\263\267\342\367|\250\277\210\346\2363Li\262\277\320J\312\227I\246\270?\342\263\031^\005C\263?\030nI\n_\231\302?\240P~T\033^\276\277&S-\3572\304\260\277\033\254c\342|\211\242?Y\235\205\274\344\213\252?t\336\326e\274\226\266\277\300\347\315\227\240%\227?\345\370\267N\023\360\223?\337\347K\225#\210\321?E\251\177\307\330|\262?\321\247\330nz\337\260?\276\330,sx\177y?\374[\215\330\276\244\300\277\2407\223\322\316\355\312\277\262*\t9T\230\253?[\024\314 #\365\236\277\313\242\334\272\r\236~?\373HG)c^\234\277\323\204\002\216\326\225\243?\375\026W\370H\000\257?e\353\324\317Jy\254?j\300\360\254)k\260?=jh\246-\006\215\277\312\376\001?}\345\240?h\363\035\372\027\\\221?8\221\340R\327\270\267?\320\372\371\'#\027\234\277/\335\373j\200\033\241?\265\366\nhr\033\245\277\020\300\315T\367;\245\277\014\337z\377\021\307\317?\314\273\016\032y\361\251?\307\221\252\231\330T\272?~R\342\313.~\311\277\374\347\353\232\247G\231\277{UYj\247\234\271?\016\232\337\n`\031\265\277\n\345bl\rY\251? Z\357\372\207\027\273\277\352\234,\302\3034\250\277\345\345\245\020\252\003\251?,^\336\364)2v\277\216\266I\301\251I\246?\347:\341\336\'3\236?\267\335Ou\306[\230?\276\343\341\275\275\256\204\277\201\334\305\007\024m\245\277\2038\302]\r\231\266?y\000#\311\355\365\243?\013\220\366j>\010\260\277\313\'\303\327W\361\310?\024\r\005\177a\021g\277\206\'Ns\371x\275\277\226\307a\312;n\262\277\036($(\213 \315?\023\224fr\251\353\274\277\323\224k\342\035&\302?\213\2138\337\327)\300?i\005\3145\023i\257\277\"6P\r\372^\262\277e\017.\003\004N\303\277\262\367\021S{\026\250?\2436\214\n=D\226?\203:\016\225\232\247\251?\003g\246\344g\304\240\277\035uX[w\351\250\277j)\2217\231Y\246\277\014].Lyjr\277\007W\231\234\200@\310\277\242\220v\375$*\257?\222E\025\3122\310\253?\014zw~\2376\256\277v\035\231\273\373D\306\277k\360\335\340\300\323\246\277c\346\351\304\025\303\245\277\032\025|\316\310u\307?\245~\223\025\323A\224\277m|\355\227\355Q\303\277s\340\272On\200\271?\2105\341\023r_\265?\255]M\310)t\261?\205\027\335p\367q\212\277Y\031\003]\234j\315?\205\022N\262\002\254\264\277\246tz\271\242\227\276\277\307%\310\227\241?\263\2776\324\002h\270\212s\277^\254\231w\207\230\252?*\336\025\177\220\004\275\277\213]\263\276\3422\310\277J,\'?f8\263\277_\212\313V\350\267\271?\177m\377\313FH\313?a\362\013\203~\333\326\277\377\310\036\3116\376\254?\230\203\n\246\375x\267\277\205W\\\230j/\252?\256\361\337\275\246\200m?\314X\220\232\304\243\260?+\304\247s\264\333\272\277F>$\327\272\006\221\277\373\266\2750V\023}\277\363\307\244Y%\215\305\277\317\363\t\311`/\311\277!\204\370O\233\245\230?\211\346\275MZ[\240\277k\312\317\253~#\335?\305\341\002X\266\263\272?\354y\212\370\332\300k\277eP1\033\262c\313\277\215\347\206\261o\374\272?\242\363\252\013\365_\201?>\377\365\273TU\227?\024#G\215\310\271\261?\302\341Q\"\2413\227\277\020\005\"\221\260\266\366\276Y\006- \023\353\252?dh?//B\241?\336W\333@N\266\276?8\324\336 \321G\273?]3\302\235PL\271\277\277\032\321\313\367\267\324\277B\260\263]\275\334\222?-h/uM\005\301\277\2119i\260\325\206\260\277\302\341\332\333\356\374\263?\302Py\310\321&\234\277\224\026IOv\261\265?\353_3\270S\336\241\277O\3610\236\334\014\261?\264\0332\360!\260\272?\230\263\036wd\026{\277\234s\027\366\356\373y?F9\200Q\207=\242?r*+i:R\323?\300\304\255\335\226u\321\277\021K$c?\222\246\277\271h\320Fq\315\241\277\240\375\364\245-I\241?\025\300O\343A\375\267\277\013\317\013\350\303\205\260?\336\263Q\037\317|\276?V~\035\230\332\000\256?\214\340\212\204i\004\260\277\232\013Azt\207\266?\227\'\031\177\263f\260\277v\264\021\253=o\222\277\265,\210\031\226\221\231?\n\004F\370\201,\277?q\366-(\267`\203?-\216R\326\277\222)\277\355\346s\302G\371\255\277\371!\022r_\t\302\277W!\026\007\314@\270\277\220\250.I\343\202\302?\354\304\310\013|\247\254?g\004\'\367r\252\256?\260\271\342\333\340\022\302\277\331\321#LZ<\301?\\\211j)\210\027\276?zW\366P\021\307\271\277)\2701k\376\235\272\277\2667\377\314]u\311?\367G\"Y\344\220\250?\357@l\2512Q\274?\206\024\263\215\242N\226\277\375\273\3604\320T\224\277\327\254F_\221\272\313\277S\235;\275n\271\240\277\206w/\303\t^\236\277e\342\366\324\236A\262?\313\023\371\r\031\273\255\277avt\000J\260\237?k\024\254\031j\271\302\277\254\314\312\351\373\250\255?\r\272\353Z\'z\271?\373\364\240\237\214\023\323\277\022\037J\013\236T\274?\003R\303\252}\273h\277s\256:{\240o\261?[\033\350\213|\307\277?\273\312\32238%\243\277\267X\025\365\351hq?\037)O\355\213\'\261\277 \223\311\212\227\025R?0\003O\271\214\370\253?@\226\035\212T\272\267?\210\217\350\336\016\343\261?\307\204\035\214qY\250\277\333\342\002\341\265=u\277\252h\2437\017\333\240\277m9\355\307\003C\250?`l\364\360\251\323\253\277\326\t\241\013<\354\250?Vf\235\316b\261\254\277\023\210\370\024uf\277\277\000\356\274\025\217\267\242\277\227\213\242S\377\277i\277\013\234\363\367H\200\301\277\177\014\271\023\251\241\227?\353\343\207Z\010\367\222?9\303ku\373\277\321\277\336\342\033p\036\233\207?\352)\366zw\366\271?\345\305k\215\177J\277\277\203\245\206\333U\230\263?\246>yM\374C\230\277\034\216\352\236\n\326\266?\222pQ\2523\275\226?_\211\357\251\332}\273?LV\237\334\004j\315\277\356<4\216I,\303\277x*\337S\325|\264\277\233G6=\002\250\226\277\306\347<\220\204\326\260\277\357u+\235\305\236t\277\317\273\2752x\323\305?4\033\341\341\223\307\255?<x+~\220N\235?}#\306\225\342|\243\277q\351?\255\355Q\273?\312q\021\204\014\017\326?1j\3758h\353\222\277M\271E\202\366\026\306\277\232d\216\306\345\014\255?\343\252\222\227\227\361\253\277\032\355I\333\240\211\212\277\375\235\205H\363\027p\277/\305X@\337r\242?;[N{\250\220\271\277&\214Rz\245\271\262?|Ar\033\273\301\304\277\020Q\022\350\033\351\306?\320\351\227\342\306v\236?\245y\017\304\312\263\215?f\021\000\257(\010\225\277E_I\341_f\243\277\006\210\322a\246\312\302?5\345\034D\206T\262?\017\013\345\016\337[\306\277\022\302:k<R\220\277\\I\033\334\016\321\263?\376CH\215\243C\301\277_\344s\344\220&\273?\246\244\362\021#\016\251\277a\266\306\007\017;\263?_\032\335\324M0\330?Lh{Ay\035\315\277cB\\k\026\t\230?1\031\227z\341\016\252?8\205\216\014\260\337\302?\354\325%&\353 \316\277d\306\360\235\007\305\244\277\'\267\331\235\231\240:?X\3053*\370X\253\277\"W\037\034q\360\245\277\257\033|\232^\367\246?\323t_\335b%\246?\247\024!7\364t\246?O/\211W\354N\227?\006^-\270\244\223\257?\350\016u\257\310\253\263?\3641\247D\013e\222\277Tx\232\373\0351\272\277\n#\313\350\377o\253\277i\231;\242\036\326\236?\267\245G[\023\226\227\277\3238?h)m\243\277\360\301K\315;s\320\277\266;:|V\225\244?\374d\252\233x\245\243?\323\304#^&\242d\277\353\343!A\254\350\250?\356\014G6\364?\253\277j\345\033cu\'\272\277\325\344\366zY\375\264\277\225\324\265\357D\216\262?n\272\037dZ\300\203\277!\030\200\023Lt\256?\234\223\273\334\320s\274?\334I\206K@\336\272\277/\202\036\201|\266\230\277\220x\007\221\257S\323?\344b\352p\'k$?\345\234\277\027g\207\227\277\215\322Ex*d\234\277\345i-\243i\301\274\277\231\232\233\206\311\013\223?B\342\226r\207\353\312\277L_6h\253\005\265\2778E\317\201\335\364\252\277\317\006\\:\230\020\302?JH\263\274\347\321\206\277\221\037\331U\213;\310?\221B\361\330u\356\244\2773e\212\027\376\200\301?~\002*\323\'\374\321\277\026\347I\305\230\275{?\004\016w\313V\324\266\277U+\2420\030\177\233?\325\207\217\272,\201\252\277\237U\2157\'\214\302?\337?\271X[\350\224?\'-\204\254\323\027\277\277\252\031\267\276\033\177\266?x\334\001\270\325L\265\277\360\213J\354\032T\242?\021\316\355o\3147\300\277\267d\324\037\n,\223?\343\267\2774\027\030\263?\272\345\347c\023i\307?;W\367o\202\347\252?\330\0021C\002\355\274?7X\332^\002\200\254?\277\352\343\222+\337\256?Bc\350\022\344\274\252? *\\A>J\264\277k\236\272\344\200\034\307\277w2\240\306\220\263\306\277NW\202\273i\256\241?\200\237\271 \337\324\310?\245F\253{g\262\301\277\213f:^\365d\240?_\24406u\353\225\277\205x!\301\002>\266?R\354C\357\257n\242?\224\022v\267\r\361\300\277I\270\313\200N\026\317\2775\340\225\334\r\025\237\277b2\242\277\r\215\265?,\036y\215\343\270\316?z\023\324lJ5\265?B`\026\262\364\243\252?\341^/Mq\035\265?\211\0142\260\241(\303\277}\232\232\200e\025\315?c\r\tS$k\313\277U\301\343?\245K\255\277\024\014\205\2167\230\271\277!\375\305j\261j\264?\323\302\3555\361!\242\277\016\227T\232w/\307?\tE\315\030T\241\251?\\\014kU\177b\214?VI\001\231\212\362\304\277\231\227Y\310l\321]? \353\2451\305\033\240?\027\002\374\036\013Q\251?\233\035`\240\276v\211?\010\333\251\366\241\252x\277HM\206\025a\271\253\277\0144\315\035N`\264\277>7xakE\300\277=\365\323\211a\353\300?]\235\356\266B\005\226?\366e\021\325\245\376\274?\323\216\364\202\351>\266\277y \216\270\t\232\260?\005\203vg\230[\303?\242,}\260!\003\273\277\231NR\235\030y\272?\037\242NU.\236\310\277!\332\003\365\270\326\232?\271\365t\215pu\262\277\203\026\367\215\260\250\304?0\341T~\214d\240\277I\200b\377\270\255\267\277VG\241\272\224\005\243\277\261\274\320\\o$\246\277\377;Sj\302\301\300\277\334\221\245\352\264i\252?\331\367\250DH\334s\277\021-\251\nb\230\246?\277\203\335\370\030\237\250?#Yv\351E\276\211?&\310f\340\037\363\311\277C\022\033\020n\276\261?\367\257\337\227\242n\261?\003H{\200\256}\257?\250\361\224\026\242\246\303\277\034n\357\'\260\320\260\277\371<\\G\211(\252\277|M\307\241\202\260\267\277\221\036*3\257\357\266?8\032\014\205\215\\\251?|\366\t\007\227\024\246?H]\257}\3532\305\277\236e4\256\205\327\274?\242#0\242\231@\250?\300h\034\331?\336\271\277iT\225\330\223\242\312?\036\3232M(\301\307\277\255\031\265\rQI\261?\213\013\2568\351\241\220?\245\344\341\006\2530\227\277\nGl\250\326\220\243?\300\017!\000\027\013\300?\232\216\005Y\025\256\314\277\002\307\326)\270\377\244\2775\245\353\003\230}\274\277\206zLA6\260\307?\014r)\225\211\365\226\277\305,&\376B\274\210\277\'\343\340A\351\256\317?\306\304D\276\211%\245?7\363\014\216\301\203\267?e\032\255\262\347\'\211?_\314\266?\022\021\275?\364\270\370}\324\374\302?l,WZw\276\264\277\370a\215\333\367k\263\277\220Iz\005\265\320\243?\331\313!\251\351\210\252?PA\276\216\214?\263?c\"\324}\034f\325\277\264\223\315\307\260\023\275?\253=\264\002\213\025\260\277S\210\223\024Z\366\326\277\363}}\\i\376\260\277!\022\262w)l\241\277\215\020\330\247R\201\263?}\023\265\002\'g\257?\224\037k\200\013\013\177\277Q\345Q\257\207\363\214\277*e\222\304\244K\227?\263\021t/\215S\320\2772\365z\247\263\025\271?d\3530n\'\026\266?\324\360\301\366\353\215\260\277\006*\217\020\213{\304\277\364\247\366c\033\255\230?\351\2518\035\0244\263?\337\037C1\376,\271?\235:\332\333L\344\275\277\240\352-\031\214\353~?\321;d\244\216r\310?g\360z\336\032\206\312\277 \360\030\000t\236\261?\327nf*\032L\207\277[\025\277h=U\242\277\273\303\027\263\345\311_\277=GY\256\032\225\224\277\314\010\317\013\257$\326?\347kp\263\205I\310\277\2719T/d\351\232?\306\224\017\0027\030\224\277\301\332\325\357\223\010\265\277C\306#K0\233\260?\327\322\223n\r\364\260\277\3556]\002%\034N\277\314\023\326f\265\374\310?\374\354K\214\002\303\272\277\177P\251\335\327\254\271?\010\215#\2000\363\310\277\246`\241A9\337\267\277*\263x\220\r)\304?Z\005\365\277<X\302?\360\017\223\252\357l\341\277r\006\221\330\336\177\302\277\251\373\301\0366\360\222\277\003D\361\006XS\265\277]\261c\240\n\225\251\277\323/\rv\265\031\266\277x\262w\3433\224\260\277S\332r|7\007\310?\334\275\n\017\304{\257?fk\3759\224\346\275?\001\245\202\3711\317\262\277\311&\304(at\200\277\212\376\272\007\300\214\266\277\007\033 `q\020\303?\335\363\317\352C\203\306?N\237:\262FQ\224\277\2144\3470\341o\220?\215ST\337\3442\225\277\203\0255\nk\220\240\277\230\004\205U\372\266\262\2771)\251\001\327\364\315\277m\371E(\024\237\275\277S\307\324\246\177.\251?\321\035-vTu\266\277\214\327\025zD\227\301?\027\312S\271\302\315\262\277E\033\216\224\025\231\260?\030l\007\010\243Z\276?\005\n\274\350\327\263\312?\002\027\232\317\013D\251?\374t\247\226U\247\302?\362\316ZKw\227\263\277<R]O\232E\302\277 %\177<w\021\262\277\224\247\024\276\377:\265?\005\374eA\203\033\306\277\037\277\342\305\2719\272\277wS`<8M]?\275\321\255R\347\002\311?\251E\035\275\360\300\223?\331P\217\021\232\244\244\277\255j\330X\231\315\200\277\313\223\377\367\353\027\243\277\337\217\306\230\370\277\304\277\213\224\334\250\322\303\260\277\207L\241\nB\264\301?\224\321\242\255\375#\206?\317D\204\0246N\260?#\235\271(\362M\300\277\024w#\303\365:\201?\020_\231\357a\237\265?!/C+\025\305\251\277\"\250\354\200\004\252\274\277\366\326;}7`\260\277#\210\356\006\002\222\252\277\210\356.\355e|\267?\006\014\342\240 \265\306?2\217\264\034\306\201\256?\333r\276W\275>\304\2779\256b\350\255\021\224\277h>H\305\333\001\274?\374.\261\324\322 \306\277\352\352?\372\274\256\213\277j\251\0017Vt\305\277w\343=\222\\\360p?^\037\032`Y0\244\277\202~<\n\303\314\313\277\010X9vk\271\263\277\207\025\272\367_1\260\277\232\236\225\342\265\224\306?,\271\021-\332\236\310?\t\232o\376\363\021\215\277\367L\177\275\230\000\256?.k`\003|\323\272?\357T\250]2>\316?\274&\372\362\215\243\250?\013\313\'W\177\305\307?\253\302\022\223rI\233?\333ux;O\204\242?\336\331\253\312=\205\312\277g\231k\207d\026\236\277\320d\336\307x\023\241\277\302\\\277m\267\241\266?\027\224 \201R\177\246?=\237%K\3472\306\277q\301\257\352\272a\200\277\\1)o\227M\305?\277K\313\367mv\322?\326i%j\311\327\266\277\236<$7S\352\307\277b\245x0\273\363\235\277\304t\372\352X\272\300\277\323\342\255\021\021\020\227\277m\217\377\005\375\376\304?e Ym\307(\262?2\025\212;cb\205\277\250sp\203\331x\265\277\\\245?W{\343\323?\204\n\345\247\022\026W\277\327\027\003\013N\217\246\277@\266>$\3127\245?A\305S#\333n\275\277\016Nz\373j\325\302?\273\204\3765}Z\304?<\320XjF\320\270?\317\312\n\263\317o\303?\3161s\023\217\364\254?\305\261\316\260\253\364\241?\214\203\277\337\363\006\276?~\220{2/\276\241?)Y\027\212\020\302\210\2772(\342\343E\350\300\277\222\250|\270\201 \300\277\376\335\274JG\266\243?\372\n\371\310d\365\272\277\034&D\t\030S\303\277\\\n}\276kt\275\277\225\365D\001\303\221\230\277\020\371(\227mB\274?\374X]3\t\254\221\277\334\224\200\242\200Y\245\277h\266\307\025\006:\264?\020\026\323\332\370\210\250\277>k\177\355\301C\213?\354X\345\244\201\374\257\277h/\237\037\034\223\313?\302\342\206k\206;\254\277$Y\331\323\220\326\271\277\330q^\226\321\302\301?\265\223\333\262\016$t?~\322\r\274\2053r\277i\203\224sW\306\261\277\365\317#\301\265\000\177?EM\25526\270\240?\344\314\301L,\362\246\277e-\354\206V\261W\277 \241\335\204\r\352\250\277\241f/\224\251\177\247?\034\204\254\013\260\017\220?e|\275\337!\224\300\277\301\300\234+d\260\267?\367\201\217\337\000\310\223?\255\350\361\037\th\247?\200\033+n\263f\262?\227N\356\372L\332t\277s\3409\0137\325\273\277\003\336%\376{$\307?8x\325M\020\246\302?\351\356\336>/A\254?\035\330\245<\310\263\230?\352)\t\213\330\022\275\277/\036f\315\353\240\253\277\031P\214S\221U\227\277\225\306\340p\245\000\233\277%\261,9\230\367\307?\336\352\227\241~\226\220\277\371\267*\305\203\352\303\277]\020=$\327\237\245\277H\314Uf>\354\272\277\275r\330}\317>\240?/\235\311)\321\033\234\277D,\353l\324K\321\277B\007\206\366\\\232\265?`\232O\354\001\323\300?U\226K\367\320\211\312\277J\322Y\353R\334\300\277.\234\024\244t\254\245?\232/\211fd\360V?9\240\205I\304X\320\277\312\t@\004\341\244v\277\016F\340\2504\021\272?\177\311B\214:\002\272?19s\332\376\363\304\277\274\026\375\2000\252\271?m\207?*\240\275\310\277\'\303\315\310>3\315?r\343ea\257$\305?\347\257\317\036\n\213\262\277\247\363\231Q\016\322\261?\340\276\330UC\220\310?\006\351\252N\246\224\300\277\'\276\313_\300\372q?v\341XFM\000\312\277\371\251R\031\372\315\237\277-\315\246\304\213N\220\277 \210\336\226\234\371\304\277\357\321b\241\2475\243?UEU\327\273X\272\277\t\277\233\202\212\233\242? \032\305\332E\317\251\277\244\355\032\262\202\245\214\277h\035\3553\262\213\265?\357\007s\031E\005\310?9\321\020\2454m\231?2\206;)\217\036\257\277\374\343A\202h\203\201?\370\312\035V\353\001\325?tae\232x\277\245\277\317\323\r\247:u\257\277\'\261\317\275\215\356\313\277`n-\224\343v\320\277vx\356\025\351\026\276?&\213\264=\231i\313\277\351\354\272\351n\034\303?\264\315\n\344 \n\233?\256\304\031PCh\216\277\357\360\2608\337\333\311\277k\3608bQ\231\256?\323\205\3160\r\246\251?^\3413\206\033f\244?\217N\245\317\0023\273\277\"\333\250~Z\263\260\277|m0\210/@\302?\241\337\231s\203\345\315?K\221{np\241\261\277\230<q\032\224q\270\277P\325\025\324\300d\200?,w4t\033\236\260\277\260\006\307\245\371Y\264\2775\344j2u\001\242?\305\224\212[-\205\321?\335\354 \255\315\031\225\277\r\342!\311\304\264\250\277\312B\017V?\204\243\277\274=\330\252\210\252\270\277[\211\227\306Az\301\277}Jt\304d\350\246?\224\2474!\004\226\307?>81o6\374\201\277+\360\326E1\006\311?x\272\025\216]\002\263?\345[\227?V\201\250\277\203]@(!\264\227\277Ic\216\373\302b\270\277\220\371z\017Z\241\254?\210^\254\307\332\372k?C\354b0L\226G\277\231H\252\245\365M\301\277S\352\321\"\323\277o\277\226\010\207\220\213\247\242?W8\211B\215\331\177\277\221\'\202Z\255\247\314\277\224\243\361\224\202\023\304?X\014\3276L\216\246\277TU\263\221\340\303\252?\356\311\317\360\275\364\300\277J\237\324&\353Un\277@\255\217\274\262\336\257\277B\346\226;\252\357\255?\240\371\346\005\023:\310?\353\001\n\337I\021\202?)\261h\010B\245\301?D\337\252\272\363V\270\277\t\352\201\200\007\'\255?]q\232\2570\377\232\277\032\2234W\000\323\244\277$\034\276\207\232\343\244\277M\032%\267 \303\241\277\236\363\357\250\312q\246?\325K\202\024\2415\327\277\0066\225\243;\024\225?\255\302\342\213E\277z\277\224\233-0.\367\253\277\264W\365\343\320\267\306?#\212\320\3131-\271\2777%\202p\025}\261?u\222e\362\332)\310?L\234\213\3033\305\246\277\212\320\270\005)\324\207\277\254d\322\363\373}\276?\305\020\020\204\241\210\305?\262\267\004\037\325\223\270\277A?\2668\354\235\226\277]\221\254>\361v\326\277Yi\274d\352%\270\277\322M,v4\304\272\277-D\332\313x\375\246\277z\375\244\232BV\177\277\274\022\354\203\257C\305?\272\242\006$5)\240?\301\346\364\340%\335\221?\212\304\341*\217s\252?\221\236\251\324w\350\210?-\331\226\320\265o\205\277\026b|?\256a\262\277\001\272\240\311\271\023\265\277X\032\2726\363\376\251\277\353K\3144\312\254\314?\006\267\005\322\005A\250\277<|\320\344\327\202\261?\271\003\232\033{\004\231?\206}3\344?\326\234?\204F|o\331vv\277\221\t\300\266\020\276\235?\217W/\230^\341\253\277~\200\265\374q&\221\277v\222\256\246\210\307\274\277\273^|\376C\355\245?\223\277\233\356\021\341\303\277\022\252o\301\251$\241?_U\260F\007R\240?\270[oi\215\371\301?:?\365a1\201\246?\275\233Q]\004\320\300?\001\203T\327?\316\252?\205} \263$)\255\277\230\330T\354{\213\177\277\203h/\315\252\212\323\277/\003\021\261\026\215\276?z\2628q\247$\236?\251\231Z\234\374\217\256\277,\233#`!\005\311?d\223n0\177\035\264\277q\334\240\205Qd\250\277\r\311Ao\236\021\262\277\373VR\267\312\313\261\277\244\242\023\225\316,\206\277\032i\003\317\304\rZ\277\031:\001\026\337\255\323\277\370v\237\253\375A\253\277RX\352\364Gv\304?\2147/,\261\365t?l_\240,\336\357\320?\234\304+\215\272\212\270\277\277/4\215\353\235\250?\267\346\273\302;\241\301\277\201\240\322\003\330\024p\277(\356\242Gz\370\265\277^\234\246\214\347\001\252\277\245L\247\021\301\005\221?\007Od\377E\202u?\242\010X\200C\275\262?\271(\007\371\010\244\242\277\310k\237\327=G\262\277\203m9\306\331\333\300\277\251\321\261a\234\024\227\277\266\327R\365\201x\202\277\213\250\233\3446\372\271?\315A\354^cS\260?\2470\243\356\377\252\260\277\315\231tR\211m\266?\3353\326t\205\233\306?\350\200\363\023\221f\303?\252<_\035XY\325\277\276W\301\016\250\270\265?\036\307\277\025\000\032\315\277\364\014\207\317\214\013\263\277\255\353+\3077\315\261?\316\217\016\307\017\302n?\260#8w\362Y\205?/K\224\237\315\332\255\277\036@\213f\377nM?4KH\022\017^\302?\203\257\2610@\320\220\277.\366\316\351\210\261\236\2778\306\226\315\021\304\231\277\236ah\030\030|\257?l\270\210oO\375\275?\220\247\226\342(\267\275?\227\006\035\004\032\n\231?\213F\276\351\240\362\234\277\333\336\313\321\267\270\255?!\0051\206\253\341\242\277\350\007|\352\\\356\310?5\327\213\200n\273\241?\261?\004\025!\254%\277\332\201\002\270\266\\\242?\276OZf\371\023\223\277\242\023\275.S\336\300?%\351\003\327@u\256?\220\337\345\276\010\244\301?\355\227\372f\000\013\271\277:\242\242\366V1k?\306\016\346\362\301T\276\277\374\316\277\004mh\273?A\347\346\247\007O\263?\"3\216n,\263\254\277\323\230\316\345t\307\264?Q\265.\230\346E\321\277\371\214\252T@\324\262\277xwS\252\234cp?;\nH\336\326\005\276?}\367L\303\375\203\256?L\226{7^>\275?\005\002\202\264\216\375\305\277\2765\037\265B\274\222?\021\206\305\035\377>\263\277\207\261\234\213\377\245\225\277KY\347(\357\222\267?\255\202\013\021\n\220\266\277\'\377\245\306\331\351\244\277\241\327!\3446HY?\312\265e\356%d\301?7iu\227\311\252\245?\334\205bSO\335\234?t ma\036\026\306\277\255s^\277W\236\300?w\327\254\306BN\217?7\343|\371aN\225\277\342\024T\204u\247\202\277k\240\013\372;\375\246?\231s\033FDFk\277\344\320k\211\222Y\304?R\226\303\001\370\216\301?gN\204(wA\254\2772dR\335\207\243\255\277|>\n1\212o\271?\204\231\213\020\3353\257?P\224]\363\3105\263\277\337\224Y\242\320\207\267?o\224\262u\343r\321\277cq\333\223(\302\255\277\r\342hc\033\226\300?\317\024\265\240f\307\261\277\252-\210^\212\217\247\277Y\327\251\257\2556\274?oS\013\232\331\025\272?\267\027\206\002K\200\246?\225\030\t\205\211 \220?[:\344,\255\036\234\277@UU\200#\234\266\277\317\3157\200i\243\261\277W\2770\026\224-\267\277\211\007J%\371\207\233?\212R\245\275\320A\251?\235w\032\322\315u^\277\221e\241a)\231\247\277\314\346\254\337Ee\315?\222WF.dG\256\277\217\353\341\266\300\344\272?\341\373\211:7N\220?\0378t\327n\331\273\277~\\\022Z64\266\2779\231\271\376\365\307\274?d\361\206\350\367\243\234?\2124^T\005\354\273?\367\215\310\221\267\276\300?\212\326\251U\260\021\272\277\306\230D\225\020{\267?Gc\210\207\224\342\261?\371\037b\005X\274\270?.\224K\253\014:\307\277\326]\354\314Rb\177\277T\310@.\232-\267?\r\363\253ejn:\277r\366&\212\240\177\275\277\377r\354K\314\220\275?9\366\361u\222Z\245?\273\351\203\241\326\233\300\277\326b`U\366\336\247?v\337M\024hP\221?\306+\216(\330C\271\277z|\234A\325\347\242?\323\3622vy\345\222\277)M\030\203\"\267\242?\262\300\250\004\204\371\266\2777\213qT\261}\273?\241\263\326\375\"2\245\277\377S\301:\3010\323\277\367\005\352M\031\335\304?\324\363nZZ\305\226?\350\252Z\237v\350\311?N\254\035\3507\345\323?\356\005il\336\026\303\277\262\372\353t\261Y\274?\213\'e^F\277\254?\277\016y\004>E\243?\277\223\334\307\210Y$?d\351\303\'y\177\254?\257\240\365\270\257\261\306\277\307\260\351\214\275\206\264\277\213\256\017\354\205+\265?Pn\025 \032\360\321\277li\350\016\'\353\271\277\267\217<J4\025\274?y\335?\006Ay\226?>\266q\373\237U\246?\\\235\027\006:\033\226\2776<C\\\020_\246?(@\017\206\213\240\274?Br\240\377\003/\271\277?(L@)[\262?\322>W\342\';\313?\\\0177\230\366\341\303\277\242P,\025\0035\213?n\234ob\305\350\225\277\261\301s\310\002\225\265\277{\270\374A\014ip\277\377o\251j>%\242?\036\031t\214(\371\312?\2455Qu\2026\315\277\021\317{E\234\243\217?~-\237\036;\232\244\277\255\243\203\266\353k\264?\254\022+\306\356\201\231?e\033\026i\031\031\221\277\006\206\021\345\305\304\244\277u\036\313\206;r\256\277q\"\377\335\t-\243?\031\214\210\256\221\225\265?\372\276\240\354w\225\272?=\205Z\326\242n\241?)\326c9\347\032S\277k\337\347\223\357\004\312?\037\230\334\344\223\r?\277\244\013\300\204\204\000\260?\t\272\242\326Kv\315\277\311\373\272\323\360e\230?\005\317\210N\232S\276?X\023n\242\222l\256?\237\267]\221\243\311\304?\004\275\027\276\276\221\273\277\343\276\377\361\027E\257?]f\231\376\353;\264\2776\221\233\r\'\335\207\277\235\032x\336\221\320\241?\23071\252US\260\277\177\312\031\277\327\333\303\277\2777\222\2125\032\301?.\316\227)\336q\232?\367\206p\014\"P\223\277\177\"\344\256\017}\220?\307\271\333\275ka\252?\274\222\235I6c\266\277\234Y\007\372\252H\255?M\0224w)e\253?\201\256\n\200\"\222\255?@%\333\\l;\272\277\377zp\206w\353\320\277#\361M\316\217\321\216\277!\017+\032\355\257\306? \005\001\3272\225\275?\2114\346<\263\216\267\277\276\037z\331JB\250\277\002\217\263:\204\305\256?\014\003Z0)\251\235?\270oc`\007\347\274\277\332\322\273\027\252O\270?\210I\366\263\2212n\277Q\330\261\310\331\244\303\277p\030\332]\035\235`?\200\231\306\355\302\210\245\277!\202;\032Q\252\315?o\226\315\242\202f\261?\2657\224m\'\222\270\277\210S\230.\300\253\262?R\375\245=l\033\317\277yltB2h\252\277\226\364\025\200~\000\274?aJ\\\3371L\270?\334\210y\225m\256\226?\274\004\200V)\010\247?_)`\220\354\031\251?=\240\316\334\235\027\260?\360\372\3478\024\224\265\277\221X6Y\334\343\302\277\000\237\242\021ih\243?\245\343\013\202\210\322\232?\350\342X\'\230\276\271?\310\235\002dy\231\212?\235\034R\215Ud\321\277\257%\3442/\203y\277R\025V_\023z\277?\233\2215Y_\360\276\277\326\014\336;\244\216\237?2#\200\035z\370\270\277\275\034*\204\220O\231?}\207\327\371\n\034\306\277\375\241\245-&\254\241?4\215Rh8)\263?x\260\251\th\\\303?\006\267=XZ\007\240\277-\313D\273\310\373\303\277cG\224\303@\263\254\277\363(\373\351\014\314\237?[\321AwnW\260?\307\267\227v\037?\247?<\367E\n\353b\304?H\317Gn\030>\272?\r\214\357\0311\242\303?H\005.\341\032\003\302\277\232\304\355\220B\005\276?h\257\nhs@\250?\213\202_\312K\'\230?d\2202O\200\202w?\344\357\254E\206\254\263\277c\221?\353\rp\233\2779_B\351I$\310\277\005\251\276\371\231c\272?&\226n\327\250\265\240\2772\005\203\001\366\320\304?\300M\030q\3174\277?\357\237\372\231\232(\237?\340\0362\364\342\003\226\277i;\327\264\215\334\272?\263|\276\234\370\211\320?T\3042f\210\371\305?\330\233b\\W\253\232\277\n\342\247\343\374F|?6\274G@\250\373\245\277l?\030\305#\202\305\277\352@\242\241\2407\270?N\314\355A\237\214\212\277\370p\347HH\377\262?\373\242\330\0368,\266?7y\003\303+\206\264?\360A\233\354#,\303?\201VM\007\264\334\275?\200\017\370Q\337\211\265?\251\363\005\3708V\303?\205\002\004\204\244\374\234?\245\312\316nQ@\265?)\004\303\227\033 \322\277\211\241\342A\377L\266\277s\356\315Y\372\245\267?\2433\027\207\371,\201\277\273\311!{\212\"\316\277\267g\032\315(`\234\277\303\313\273\177b:~?kW8\324\237\267|\277/H.\321Fx\252?\003\304W\225\007\335P?\3163\026F\315\333\270\277\355\245\252\2662\003\302\277.r~\000\254\017\261\277;\371\314s#\010\271\277\362\275\204\342T\307\333\277\'\247\366\224o{\301\277q\002 \255($\267?\265\265P?*\'\260\277\377\302jS\032\n\322?\251\223R\2659\232\226\2770\307\341\027\002\347y\277\320\tgy\\\311\220\277;7\212-\215I\274\277e\315\305P\353\336\230\277F\304\365z\277\362\262\277U\252\252\233\203\336\252\277\025F,\014\274\177\264?\312Rd1\251\236\242\277\r\215r\333\350\313\321?9\231\366\263\030\306\262\277\325(2\356\013\227\206\277\266J\340wP\023\262\2778pC\0245R\206?\254\362\241\371\263\354\253?\230UB\232\311\347\267\277I\024\337\300\021x\273\277X]0c?\271\312\277=\357\234\334\221\020\213?\337w&\301\324\006\261\2779\242\026\355]\000\203\277\252TC\034\014\305\256\277\272[\344\352\273\340\300\277\200\332\024\232\332\031\234\277\007\266\272\374\244\242\253?\360\026\020\213\371J\242\277\023\212\007%\\\326\331\277^\322\355\275\3056\260?\273\325{)\361u\242?F\351<,\025\021\265?x\305K\246\326\213\262\277\225\333\272\277lA\216?\225F\215\222\340\244\255\277k3\275\034\037\351\245?\233\320\031d\205\246\217?\272\234Y@\345\302\246?\274j\200\033,\315\260\277l1\202[Sg\307?\240\207\320fHf\255?\242\256IW\307\357\260?%\306\325\177\023\275\305? \355_W\245\335\277\277O\025\334\'\226\242\263\277D;\226\244M\003\270?\237\333\377\010L\325\271?\217\010\265\225\351\212\244\277\327\353k\2209\346\275\277,&e<\266^\211\277\263\000\341\353d\231\263\277A\322\373\375\026l\256?\242}\250t\345\265\235?\274\023\021\340_\360\270?oQ\315\346w\247\264\277=\231-\n\267?\272?7\323\305\217\022\177\254?\177\333\312{\302\277\311\277\275\226\227\304\362\252\240\277\370U\356_\363E\250\277\335\036G0\2465\207?k\354\351\tam\254\277u\220v\257\313\250\217\277\017\0016k,\264\213\277\220F\257\304ft\325?5\254\014\204\302z\261?\352|\273\341\224y\305?\306\225c\3656\027\304?\364M\324\222<\357\263\277\025H\366~\020O\314\277i\367\257n\275%\325\277O\256\204Md\363\307?(\0231\256;U\266?\302S\354`\3778\301\277,\237\271\217\361\342\261\277\323\000L\216W\005\303?\230\034G\252\346\235\235?\247M\223HI`d?\350\301\024\363#y\327?D\223Cj!\004\262\277\031\306\265\013\210\261\252?\202\330|\341\221\260\256?\352T\245bEo\254?}.Ihx\377\205?G\331\304\272)I\322?\023/I\327(\003\256\277z\024\352;|16?\2357([\310\324\315\277[\300\346/\2630\257\277\231\366\'d\305\002\310\277\211\246\'i\337RR?v+n/\316\243X\277\031\213\375s\261\357\272?\204\256p\373[)\242\277Q_\241\332\245c\267\277\347\257\321p\350\247\300\277\255\267\271\300HLa??pK\024sI\226\277\251\354\346\274\237\366\311?\230\223s\332\340\351\210\277; \036\021\352\021\242?j\215;4\377\326\261?k\030\035\036\302*\245\277\321\373t\305\266)\215?,2\033_\222\005\271?L\236DB~\257\216\277\341\237\234\342N\337\273?\216\314a\214\213\\\235?z~\347\201\020\315\260\277\022cS\323\342\273\311?\177\374\361\025\304\340\215?\324o\0270.3\257\277\370\252\360\250\227\013\276\277\367\220S\316\021t\302?yG\022@s!\236?\374\375\244\3125\'\300\277\215\036\305\375M\362\266\277\321? \033\320\327\212\2770\231\251v\031i\261\277\355I\356\223\262q\252?_\2361\246\216\200\251\277S\363G\357\'\005\246?\267#\204$\211\333\224\277\347p\033wA\337\304\277H\026\230Q\217\017\242\277\n\312i^\375j\304?M.A\344>\006\242?\327\270\265\364\325\023\321\277\342A\341\243N\200\232\277\034\001!y\002q\247?V\244\253\305\003\340\321\277yAM\0273[\273?d\204\236fw\304\300\2774\242u\261\306\237\242?\013Kg\304{\360\251?l\251\334\024\323U\226?\236Xt+h\233\276\277\306:\322\014`\340\262\2774\220.b\272\000\264\277\217\312Z\276\257L\262?\207\220S\020\320g\312?\262\230\036\237\010H\245?\006M\027`\377\352\271\277[\2450t3\026\263\277\247\374[+\351\251\310\277N\350\2279\003\343\261?\341\345\331\353\024k\254\277\222`U\024\370\025\243?tF*\2267\360\276\277W>\363\256\027\240\266\277\220=Rg\316,\260\277\276`xmj\335\223?P\250N\247\2468\202?L\263i\240\216\345\270?\346e\242\275ba\256\277[\210JY/\005\270\277\'\262d\351\030T\216?r\026D\025u\341\265\277\201\256\371Cx\250\226\277\220\216\0039\023k\250\277f\262\261\227.\211\225\277F\270\300\371\325q\263\277\203\206\277B\201\n\304\277\021\005P>aT\271?)\355P\346\370\246\207\277V\020\356!\363\225\243?\003\225\337m\262xY\277\216w3T\020\350\227?\267\237\354\t@\254\231?\350\031f\240if\277?Al~\276\347h\250?\315M\013L\031\'\315\277\305\t\222\212\2220\274\277w\331E\336\336\254\241?z\203\330\204\000\202\265\277w\017\272\303V\241\272\277m\226D\346\3727Y?,\3566\354&\010\240\277\010\216\337\252\245\\\252?G\3038\216\224\364\224?\367\221#\307\307\275\274\277\234\251\212\366~\240\267?\250\364\251Hi\213\263?\030\221\375\013\374\234\310?]\213#\314>o\257?&,\232\222\2617\225?\273huH(nk\277\335\202\337(\3040\264\277\314\367e\264\\ \301?!\025\321\016\331U\242\277\201\025\335\0215K\304?i\371\001\256u;\260\277,\201`\250x\016\250?\316D\224--\346\216\277^\336\r%MS\300\277H\3479\366\265\301\250?\265\317w\274\3059\267\277WhGr\372\255\244?\372\217U\224\370\361\276?B\310I\\\210\233\215\277\201\332\2748--\263\277y\006\362\227\216\230\234\277@:\005`\252\355\246?B\t\0238Wa\264?\334\021]\273\241\243\261?f\212\264O\311u\234?\237\243\203M;\361\262\277\224d\273iz\351\242?K\374%\365v\334\220\277\372\037\345U\222G\276\277\376\350d\024\177y\250\277O+\224J[\361\265\277\370G|\275\350\352\227?\220\335y\010\363\321\301\277g}\033\006bt\242\277E\016\032\243\357\030\300?\312\037\235\301U\034\257\277?\324\033\325z\253\260?\251\375\302M\212\317\312\277\220\340jR\241\314\241?\364)tZ\t\234\302?eI\270\373\204\316\305?=\202\030\263\016L\267?\373\2757\025\204\345\260?\202\346\330\376j\005\320\277?\377\023\007/\245r\277\332x\307s|\264q\277\266\251\364\254\204\242\257?k\036K\326\361D\247?\"0L \310\346\277\277e\257\020b\367vn?\231\375v?\026T\205\277g\226\203HL\306\254?\266\371.?\027\202l\277*;;\020\311\350\212\277\230:\230\331_\030\311?\356\271\032[\0103\240?\r*B\337\354a\267\277\243\2142N-f\257\277{\3711\312\206\235\301?QI\367l\212\214\234\277/\023\006\256.#\300?s\305\271\306\234\233\241\277p\263w\363\336|\241\277\335\266O\330\306\003\236\277z\353\375G\016\214\232\277\200p\274\323l{\304?\017\317\262\241\364m\260?\002\257\252{\004\227\275?X\017\220)\320\033\302?\026QU|\214\005\261?\361\314\362\214\314\235y?0\237\263\300\024\"\234?\327\260L+/\035\323?\247\001\206\364hZ\274\2771M\213\320\306\372\261?\342\312\024V\032v\304\277\340\226\r\246d\357\202?\367U\313(\300l\230\277\263\330\332\206\345\377\243?\344W-F\025\246\221\277\200\036\241g\234f\244\277\307$\026w{\030\264?<\250jW\3616\231\277\250\3414\315\"\276\272\277\256\336R\373\317\367\305?\304k@U\2543\270?\316\236W\001\372W\212\277\246\026\005\022\2341\215?h\275F\034\307\255\316\277g\357q\312\021\252b\277OV1\274\320\276}?\034\260\375b\335:\221?\023\273*!2\266\270?\013\264\214\234\251Mg\277\373\016\354\340\217\321\217?\'\034\377e\027\027\267\277CX\021kU\013\322\277\230U\200\001\254\267\301?\337\337|\275\226\212\254\277\004\327$\265FS\311?\216\212\305?\305\222\251?D/\335\264g\033\233\277xK\371{\272\205\267\277\231\252O^\366p\240?\235\177\025\360\375\250\200\277h\261*\016]\231\245\277\207\356\255\206b\014\250?\004:\363\266\351x\321?\243\340D\341LQ\272?\025V\n\024h\325\262\277\243\'E\310\017]\303?2`_\014\236H\274\277\230tS\262\3504\243\277S*\002\202\253K\223?[.|\023\010\021\250\277\310\220\005\204\214\274\274\277%=\013Jz\013\241\277\260\217\353\356o\234\274?mR\256\233\nT\274\277\267\314\376h\214~\227\277\3306\363\300\345\234\225\277t\300P\273\305\017\325?\023\263\210\312\221\000\265\277rQ\334\027sy\217?)\r\354/\225M\267\277QG\367P\312=\306?\216\301\235\357\242p\265?\257\t\342\277\214\354\262\277),)\237<g\251?\232-}\017\256\233\244\277\303\306\"\363/\237\254\277\227~\312\200s \262\277\370\3119x\033\242\251\277\333\300k\242i\367\217?>\\2X8X\275\277\310\371^\270\241s\304?\353\327.\337\0209\251?\231\320<=\006o0?\034P\354M\217\376\301\277\371\270\301\230\032\320\267?\3531|\236\031n\230\277\003\227\020\363\202Z\300?\204\2751\321\032\243\320?\306\213$vNc\253?\3515\007Tm~s?\023G\212\031\216V\274\277b\003t\tu\022\320\277<\034q#\210{\260\277\253\313\303En\037\246\277\252\010-\265\024\'\277?\242\352\202\307\221+\254\277\212\350m\304U\263\266\277\262\324b MM\312?\304\374\301\310\323\214\226?\311~\2669\242\362\262\277\373\345\032\036\240\205\256\277\213s\311_\316\014\260?\016\312\311\037sz\255\277\263\205\316\211\222\212\301\277%\236\210\n\351/\266\277\347A\235\3416\243n\277\202\332&\214St\274?j\031K\372z<\240\277<\304[\231\262z\255\277\265\003v~\243\356\201\277`.)\000\273\244\221\277\\\350\366\227Y\212q?$?\323\301\322\236\244\277/s\016t\346\037\276?D\304{`;\250\257?\375\2467\346\212\000\272\277\230p\376j\036bv\277nD\314\231\271\256\306\277\310#\036`\"$\217?[sD\273\230.u\277\211\034\332d\233a\252\277\246\207\027I\254f\302?\376\260C\212\255-\321\277M\246P\215\017\370\214?wE\320\217\364\303\263\277u\247\357\310\203\332\246\277\235\252[\340\305\030u?\202\247z\373\256\203\266\277\325\026\335P\266.\265\277|\264\334r\240ow?J\351\346\343\370\201\237?\nKPj/[w?\344\311\263\322\323\303\270?-\031fA3\300\252?\241w\356\021\365w\222?_\"\014\240\237\\\257?b\241\323\207d\007\265\277\267\"=\224\361\316\303?\r\007\233i\233=\254?\356\267\013\372/\373\310?\214\320\024C\343\365\224?\227I\377\373\002\265\261\277vU\rr#\226\303\277\372\341O\376\344!\257?(\250\314\332\305\356\240?\230\001\207\214i\323\267\277;\345u6#\216\270?J*\235\0165\004\252\277x\355\344,#\016\305\2778\325\200t\321\203\230\277\217\\\026\365\377\305\274\277\214\253U\372m\253\270\277_\223\223F\032\326\224?\257C\273LQ\201\221?W8\244j4\324\263?$\344v\324h\326\216?\221\200O\223\204\235\243\277\375\357~2\247e\304\277\3239B\350\031\354\277\277\376\261f\032\000}\263?Ss\367\307Pz\274\277\230\274<_\223d\256?2\232\273\341\030:\260?w\241L\035H\256\265\277\206q\247\235\014\256\310\277\3545\305\211\334#\255\277\237\216<~t:\260\277+X\231\305\213\024\313\277\"\321\313\032K\364\224\277\014\020\240>\3055\301?*%\271\000\213E\214\277Wj\357\264\014\020\314?F\200>M\210\375\254?\246X\020\333\3707\227\277\304\253\202\212Uw\267\277\025Mn<e/\265?X\265XN\377H\205?c\3258\260\235n\261?\030\023J\212u@\276\277\rCc\337g8\272\277\243F\334\246\323\271\243\277\242\037\314\335\201\030y\277+0\353}\n\373\275?\205(\221eK|\261\277\250/\213\016\004\260\217?3lc\302\207\375\250\277?\255|\237\330\300\222\277K\374\276\026\022oj?~\r\202\274\t6\302\277\005\343\030\n\014O\244?\343?\373\253\342\376\252?i\037\365\245zQ\243?\362A\302\211\214\377\246\277\325\246g~\332\373\231\277\267C\347%\307D\302?\311\341Q\307\215(\315?\257\'\341\271\326\030\251?v\366Z\177WS}?\\f\316\244\237\361\266\277\034-EB\344\335\246\277\236\002\302\223Y\311\211\277\347\341\361R/\274\266?\225?\230\366/\377\235\277\031N\002\207\256}\215\277\375\t\271\256\034\365\254?\320\205kzs\036\246\277\265\276\r\263\373\267\245?\n>\020\237z!\260\277\261\351\300\212MB\276\277\2205d\333\213Y\251\277qC\310\205\003\r\204?%\322\355O\234\300\301?\007\276\311\251\010\201\323\277\254yQ@dj\221?~\027=\200\355\207\256\277VH:\345@\331\237?\010\317\006\204U&\205?\274\203zJ\233\201\255\277W\303%\342=q\262?\355o\222\276\t;\262?\2205+\3600\037\273\277\347\225\344\037B#\201\277\235\264\231\003F\336\263?\000AD6D\353\317\277=y\223\215\340\nd\277\037~nhb}\245\277\013\277\210\023\357\235\245\277\272\001\235I\331\330\272?\224]\003\315\312Y\223\2774!\231\2453\375\265\277xi\202\202}\322\303?\314bDLA\264\240?=\310AK\233\241\250?\266\017\026M\005!\252\277\277\210\014\220\355`\270?:\357\320%2\336\262?R\372\302[D\347\263\277\341\022\257uO\226\264?.\246v\321P%\234\2772\222U\343\314\324\223?+\262_{\030\007\252\277\341\014^W\345\326\303\277\347f\225\007xl\260\277~\305\355\266s\206\316\2774\204\340\331i)\233\277(m\335\264\006=t\277\235#D\026\270\356\263?wj\013$%\322\232?z\200\240\255SF\271?E/\317\210\213|\215?\266(u5K\363\261\277,\003Tb\2237\262?\230\r\030\304Hw\261\277\311fj\034\362\212\242?\302K\354\305-KV?\'\2063\322\367\026\240?\232\0137V0\022\214\277\230z\250\230\213\213\262\277\265\211\302\253#p\312\277U\365\027\262\241u\275\277\336\343Lb\302\205p?\031\')us\010\261?\260s\301I\340)\300?\\\250\032\310U~\223\277\317\304T\300Z\316\260?r\303\342\236\3217H?\203s\005\300\235\005\260\2773c+):\007\242\277\005\314\362\302w9\222?C\350\202\324\262\025\201?\016\235$\324\244\272\261\277\322}\014J?\314\302?`\321\203\203\t\204\310?2\244\243\370\324+\250\277\347\342\320a\364\341\221\277\230\023\305\033\321\337\264?$Y\263g~\363\314?\265\251\010f\231`\251?\200M\234\267h\033\250?\260{V1(\346\302? _g\024\005\216\254\277\272B\373o\364\274\251\277\217\016\n\033k\376\300\277\200+d\027\024\260\262?\354~\261\267\340\361=\277c\036\023yA\200\236\2770\244{\202\250\r\273\277\347.\014\r{\232\253\277\013\204\313m\301\250\311?\004\366\342k\311\005\200?\313xY.\346n\263\277hp\277\035p\000\262?\335\201\367\210\211\312\250?\342\370i\243\331T\256?\356\234\t\023\360\246\255?9\220\315tM.\231\277jpNA\372k\306?\025\331\206\347kW\272\277U\314\337\250\225 \261\277w\305m\213h\201\260?\374\312\307\2049\242w?|\357\310\252\177\373\272\277\263q\010\245\266\236\244?\214\252\234\000\223\322u?m\274\036\216\354\376~\277 \324\270%\037\340\257\277\265\363\245T\357\004\257\277V\375\345\223I\305\266?9X\324\372\306Y\277\277M\322gpya\237?\313\272t\365\366J\322\277\027j\366T\224\250\202\277\354U\255\307\217\r\235\277\316\232\305\026\nw\303?\331\026\204Q\241\031\251?TR(5\354\353\277?\210b\354\320\266J\256\277c\334\332\377\340\231\266?t/\033\267\023R\275\277\021\013!\314\221W\275?\345\254\311\212\024\013\260?\304\362\363\220B%\265\277P`\322r\263\242\277? yX\373xn\314\277S\177Q\325>;\310?\253^y\006\203\263\300\277\342GX\032|\306\214?/9\026)5\001\266\277Jc\210\203-\303\220\277[\3137\207K7\274?H\207L\306\005\024\226\277\263\335\211\200\354\203\214?\273!=\366\346r\257\277\202y\207\355\347^\250\277\246\227\\\362A\023\300\277EX\036\036<\371\251\277\303\356\306\321\010\215]\277\221\365\331\342+\262\262?H\220\016t@f\220\277,%\316\346\017\345\260?\027\217\252J\330\271\264\277\221\350a\300\"-\276?3\226\347B:\035\321\277U\2540y[\345\252\277&[\226}w\304\271\277\266$\275\225\225\001k?\300\n\364\327\335\304\306?an\030\'\351f\260?le\020\324\2000\222?\232e\024j\307\263\302\277g~\322\326\240J\264\277e\t\205-S\311\250\277FG\227\353ch\272?\224\265_y(R\306?.=\236\220\213\217\177?\231\314\376\273\377N\221\277\261\275\220\273\3247\262?\351\216p\0211\035\263?\r\271.K\020\232\237?x.\221\2332k\266?\367\335g\252\362\330\224?c\262{\006VV\254\277\247\177\261C[q\267\277\261O\000\241S\304\246?\033aQ\334\334\006\270?\"0]Npno?\323\376\304\264\336\022\242?\367>.\177\203z\305\277\237r\214\276\2416\243?\360,{\340\371\351\231\277\211%\005t\017\024\305\277\251\004L\375\326!\233?\275\".\231W\030\262?c\270=\355\256F\253?!\241d\335\217\231\241\277u]d\261\300\237\267\277\261@`\270\027\007\247\277\360S6\233z\243\217?\ni\215o\232\215\254\277\006s{\n\3034\272?\254\315\231\010N\"\276\277\375\\>t\033\316\311?F\260\3313\355+\221\277\306\352\026\357\251\234\260\277Ej\263\242@\204\245\277\273\210\332#\203\010\222?U;\362\002\327\t\271\277\026\343\036\225T\237\263?\315x\237\232\201\341\311\277\372\327\254\370\344\026\256?\2749\341\231\323\264\257?\007\256\321)!\027\262?\022\265\331\343\032\033\274\277\025\355%]\346\374\261\277s\030\303\243\304\014\301?\017\002\270\346_\211\271\277\227D\306\263\312j\264\277,4G\264u\247\256\277H\230\252\334=B\253?\314\345\001\024\023i\230?x\360\374\323/p\212?\003W,]\313\270\270\277w\024!e\3327\262?v)\217\323\326\352\302\277%4Vo\220\342\245\277U\323\222F\211\254\317?\361W\344\214\324K\232?y\224\216^c\351\270?,c\013\271\3127\271\277\366\263\034\356bv\275\277\000L\272\t\277\315\227\277\353\302\\\'8\226\271?1\342\004\r1b\323\277 \226\270<\"\231\217?Y Q\007\375\235\222\277\326\\\014\'\033\202\272?\341f\374\236\275\202j\2776\246%\214\355<J\277\354\001\266 \371\334\276\2772\3529\306\225~\306?\315\004;\007\005I{\277\262\225\326\276\225\005\273\277\312\033\301\327\007\307\260?\000\325\026C\252\014\277\277SC\3420\324\233\243\277\323\304Z&\373\357\303?\274~E\307\364-y\277\'\276\341\306\3647\320\277\325\315\260\224{\260\233\277\310\0144\271Q#\213\277\270\177\352%\002\266\242\277\370\206g\204lI\250\277\027\024\272X\334h\251\277]\267`\037(\233\321\277\300O1\000%\037\260\277\327l\204\320F\357\260?(\001?\261t\266\322?\272\027F\331\372\234S\277\274\325\374G\333f\271\277\227(\350/\347\303\262\277C\307L@$\336\302\277Y\300x\307,\355\301?\364e\010\377)\033.?\026\373\360\271\215\323j?\225\375\327\301`|\320?\253\362\377\221\367E\251?\201r{\344\232\225\300?\227@\357\243s\014\322\277E\344\365\306\376S\303?D\224\360\202YJ\261\277\256\363\265\0322\257\257\277\344\347\235\2553\306\233\277\215\311\2412\206h\212\277\243O\244\275\355h\244?\221\260\367I\220\363\313?\276\030\252\246U\241d?\271\224\032\377\334r\203\277+\214\332\366\200b\273?\032\000\240\211a\256Y?\010\303\246*\224E\253\277L\207\256Y\225\231\220?-\017\371?\361\013z\277>Go\300\003\377\262\277\245\016#\253\037R\303\277\025\300\377\210\237\222\276?N\305\321\r&\361\212?$\267\246K\255\035\242?9\017\323\256\265\243\272?\232\3452\021\361\014\260\277A\304f\227\213\367w\277q\247\014\356\031\204\300?~\324\307\351\215&z?\025\224r\230\341\307\321\277\310\0329s\231\273\244\277Ox\357\216\030\267\237?F\342\244\345T\271\267?oN\3519\223\\\227\277\000\003%\036\0065\273?\342_=YaN\300\277\214l-\210\016\214\320?\032OE\260\320\222\272\277\216\322\210\241\371q\302?\007$\207n\354<\307?\211\017\262\rDa\263\277\016\253\037\230;\307\212\277U\366C\n\273\332\246?A\224_\364\274\360\233?\240\254A\313\261\360\256\277\323\233T\357\004\216\251?\251~\233\241\377\205\310?z\323\221\3223\335\263?\266K\245\014\367\033\270\277\301zr\265ki\265?\177\210\220\214\371\376\207\277\307\031_l\253\200\266?\335\'t\037\032\374\247\277\311\350\375?\001\275\243\277!:\234\252\207\300\241?\020\255\370\266?\206\244?\222b\267u.\022\271?\016\376<_H\231\250?4C\242\035\363T\262\277V\351\232Z\211\364\244\277:\254Y2\322\201\243?:\374\026\250*w\272?\236X<@\000a\270\277\310VH \356\014\302?<\346\353\177\206/\312\277\"\033\373?^\263\221\277\200\360\311\262\240p\304?\335\0071\257\227\216\261?-\260\314\271S\253\324\277\214\372\006\313\217C\232\277\030\326\232\3520\305\240?7\274\213\225\306A\257?fRis\201,\242?\306\030\356\2501\304\263\277`\342\027\024\314\307\322\277l`\2420\261\030\271??<\341\300\203\261R?\306\332l\034\324\244\272\277\310@\364C\034\266\274?\316\336\305\363+\001\261\277\276\016At\036$\246?\026c(\025\n\373\260\2770\322<C\222\352\234?\014\021\235-k\343\254?\220\017\010\340\272z\274\277\365\324\323\252\255\021\263\277a\'m\310<o\235\277\327\027\267\315\236%\210?\236\306\267\266\214&\302?\005\274\344\361f\212\247\277^H\000\315^\305\264?$\003\237\030\2769\237\277\037\024\003lgi\276\277q\255\354\235\016*\247?\250\205Cm\333\274\225\277\247\202t\275,Q\247\277\357@\020\247\220<\245\277\377hT\020l\307\211?%\006\222|\025d\230?\334\224\343g\016*\310\277\273\223<Q\262t\274\277\255\333\211I\374\350\226?!\231\003!\327w\306\277\227\231\355\225\274\216\270\277\270\014v\336\324\031\224?0\321\2524v\206m?h_H\314\232\217\310?\356\216\210pa\260\201\277;\212\177\262\264\242\262\277\272\265\251\277O\304\302?\242\2204\316Fd\302?\200\255\244\261}q\243\277=v\256\377\261*\206?+\342`\177\010v\331\277g\203<\347y6\253\277\343!\024|\236\330\216?\317\256\341-\374\013\201\277\021\\\350I\332v\247?\000\215Xe|\026\261?\241C\230u\006\006\227\277t\236a\005\r\223\313?\347f2\231\352\234\264\277\350\226\261\3157\325\264?\256\023\355\031\2423\253\277\216\275\203G\232\210\260\277\225<\341\335\2712\270\277\361\265a\303H\353\275?(i\350\010L\362\301\277\273k\324q\253\335\263\277WB^\305\016\200\246\277\222?\030\322=\216\260?\213$\323\r\342\026\236?\250R_\271\254.o?\251\304\230W=(\312\2772\022\273\346\335\204\300?.\006N\032\'\232\271\277\274R\360\306\031@\270?\357\371J\204%\255\030\277uNL\004\367\322\260?\263\307\316\276\007s\200\277\301\326X\374}#\235\277._\266%\034\334\316\277#7\356\261\351_p\277\0239\177\233\314\311\272\277\306\336?a\340n\254\277\304A\203lB\265\276\277\t\266\004\214G\301\276?zRs\233A\'\322?\374\367IB\265\344Q?\261\374+\367E\262\206?\255F\217\312D\210\215?~\235\002\353\031C\222?<\270\334A/k\244?Gy\201\203\036\377\245\277L)[<\323\302U\277G>Y\336!%\310\277\264\222\327\0363\r\266\277*\257\024c\363\351\320?\224N\332>\362\243\267\2774\243\'\210I\225\263\277\315P\032\211\313\310{\277\247\202\235\031\364\327\242\277\224\315j\274\3628\222\277\340Q \014\206\327\215\277\'=\3638\325\272\320?\272\010t\\\206\"\311?\371\356\231\3072\"\223\277\001\320\205N}O\255?\000\017\376\025h\327\265\277G\265\t\266\2216h?\343\312\260\372\245\304\272?\356#\014\002\264\006\250?\255M@Y\243\206\322\277\253#\324 \303m\260?m\024\005\375\033\200\241\277\350+\201\277H\207\266?(\243\314\346v\356\276?\333\2141R4)\267?\336\347\353\220\266v\301?gC[\222\224d\273?Q\304\241\210\n|\264?\243\316L~\271\034\302\277\264\212\304\253\274\256\242?F\311F\177XY\305?\204\307\262\\\205S\233\277J\243\001+H\326\261\277\244s\340+\367\370\272\277q\0133\322\006\314\260?\334\263t\364\317\324\301?\022\265\214dp\316\225\277\364z\336\325\244\303\252?\'\030\315\272n\"\260?Z\276\236\000\365_\266?\3732L\352A\214\317\277,\235M3\301h\265\277$\030\264Q\336~\250\277\347W\277-\213\242\237\277\033\312\3502\235\023\320?F\23147\347\025\251?\272u\311\376\216\256\214?\342/\374\207\254Q\300\277\220\274\307\217\326\327\222?\310\274A\346\2259\242?\357#+\032\202\006\245?:\023l\2721\333\255?#\005B\247=-\247\277~W\177\350\253\263\220?\260\231\223\217\230<\255\277\037\213\264\312>\336\304?Mn\376\213J9\263?\367{~M51\302?\353\247D\243\235\306\326\277\252\363\225\251\320\n\237\277\373\024\245t\372\204\254?\333\376\2555\366Xs\277\233\267\200+\217+\210?\265\263(/L\027\240?\213q\236\221\014S\242?\233\000\200\016\\\220\243\277\271(\004}$\026s\277\230Y\235/\356\014\243?\021m\030\307\213\340\275\277=\037\215\307\357\201\216?\036\272\207\327\344\036\265\277\244\272\275\315\007\206\220?\3449f\264&\256\315\277\360\2315\316\361\007\272?\371\375\366\211Q\177s?n\007\271ib\005\272?\225\323\006H{k\205\277# \017[\240\341\251\277\202\"b$\311\020\263?\302$\352>\343V\307\277\362\027\376\n\033)\242?\351\212q\225)Z\271\277ct.\006k;\303\277E\345\030\254F\020\272?\312E\014\323\263f\213\277\006G\333\030\274\320\260\277\341\346\025\013GS\245?[W\247\013?v\273\277;\016\217\010\227I\273\277\016UCx,\262\310\277\024\222\330\351\313:\307?@ju\227\322T\271?\022K\013\0348\371\300\277\262\0045\326\203\311\220\277jb\251\342R\353\241\277\353\243\262\250\374]\266?\255|\210g=9\230\277**2\313\234\317\300\277\311\312\205\222\206v\272?A\\\361\024\003\005\217?\271y\260[\211\266\255?\212EVd5\322\305?\000\257{\370W.\251?nB\255\304\221\265\266?@`Q\202g\260w?T\246\357\010\304\034p\277\016\342\202;\275\377\301\277\31517\273L\200\251?I\274yN\3727}?\252\272\333\'\342\215\242\277\254X\234\312ly\270\277\201\300ZL\354\320\273\277*\355,w@Ai?`\202\371\033J\323\243\277cs>\355\253\311\310\277\010\263}sBm\266\277\272N\r\335/2\307?\200\251\343!\274\311\312?\313\215w#|K\231\277\342\213aV4\326\260\277jBEYj\005\302\277\032Pb1\201\226\304?\247M7\000\014W\210\277\034\305\376qc\317p\277S\312\360\031\010\370\300\277\262\206>#~\277\276?\370{\264\205\335\261\263\277\347\306G\r\202C\250?\222A\354\346\317\006\306\277\276\216$\253?.\210?1\242\367^\257Z\305\277\372\016\313\027M\221\272\277\325h\331\266\2762\220?\024e\354\315\267E\271?\327\370&3\2153\277\277\257%\314\330g\007\307\277\027\350\371\276 n\230\277\273\340\277\240A4\315\277j\240\361\233\234\264\300?\360*x\204\361:\270\277\274\303ms\361\306|\277\370\222\324\037\310\255\321?`T\017\244\225\270\256?\321s\301\337.\222\262?\026<[\301\243\276\261\277\306\037\326\272\3452\303\277\205\267bD\203~\225?\013\224T\214g_\245?\023\013\246\326Mo\302?\316k\223\324\032>\251?C\333\346\351Q\025\264\277\257K\n\203\\A\303\277c,\345\363\326I\267?1\017\200a\246\346v?O\260\236A\357P\241?5\243\321+(\255\302?}\246\235%\002\327\211\277\314\373\321z\207\206\256?!\033nt\242\326\242?\226\005\307\272V&\276?\220[\261|\247\375\263\277\352\234N:\'\036\307\277~\221\230\346l\r\322?\324\200%`C\341\320\277\200~\263\322\256\250\272?\"]\215Cv.\220?\010\372\275\177\003\344\304?\342\200\244*,,\265?\356\001\305\220\257\223\256\277\273\322X\366t\331\316\277\360c\313\352\356_\263?\265\275{\032\304\334\272\277\346\027\036\353\320\033\301\277\323xC\3624\334\320?\234\004\026[,G\272\277R\214\224\032\010O\300?\337M`)\361\373\273\277{~\325\226A\014\305?\233\316\357PxV\263\277\266\335\n\211J&\321\277\256\226\3528\246?\303?}g\273]2\264\314?\372\376k}\2037K\277@\201\213\321\323\025S\277r\325Y\363\016\037\275?\025^Q-~\271\267\277\031V\214\372\227\000\312?\002\027\251\267\005\205\266?\022J\276\272M\'t\277\035f\016\004\203c\232?\355\225T_)D\317\277y%\2258;\231\264\2774\242\377\001[*\202\277&y\364\323\256K\253\277\213\215qm\331\345\301\277.\363\357\000\336\033\241?\361\3632\263\342{\301?\003\252ZG\275O\233\277\'xf}\3141\273\277\2221\234\331\002\010\302\277\312^\230\006\252a\261\277i\340\203:\320k\325?\301%\367\362\324\215\230?\256-\t2\267\334\237\277=e20\326y\307\277\365\016Aq\231\230\317\277E+s\367\370\254\271?\246\372\331~\204\325\266?\"\224\256I\343\333\306?[0\320\337\026@|\277\315\335\204bl\326\272?\210\241\216c\002\216\200?W\316\273\203\361\335\237\277L\347:\314h \273\277\321s+\030\326\n\275\277\256\240\\R\324\347\321?\330\345\277\204\267\364\300\277\n\262h\323!W\262?\222\257\223%\345R\254?\001C\010\250\260Z\265?\241y)\364\357P\262?\024\3027\251\343>\205\277\241^\363\217*\320r\277\273W\241\310\336P\264?\250\013m \260\243\271\277\342\266\200n\004\'\260?\3637\327\360[1\222?\334\213\211I4\035\234?7\247!\302R\006\310\277\004\222\004\352\003\345\301?\317\241f~\261%\263? \323\010\0265\031\311\277\350*\333Z\215\236\310?\304Q\0333\266\356\261\277\223\203@\003\3324\261?\254\344\356\000x\205\245\277\217\213\367\361\225\333\203?\275\021q\231$>\202\2772\226\233\r\336\346\271\277Q\007\0349\213t\242?E*\307\367\002\254Z?_C\253\377%\024s?\264\2320\276\276\265\257\277\001\346\377\307\243\032n\277~\347\016\350R*\270?\260\254\370\024u1\305\277\343:\n\213TQ\307\277N\002\n\335\321\037\260?\320]&/<t\252?P\355J_\034\337\257?\332|\240\004\211\277\337?\216\270\213K\240N]?\347\226\r\274\200\253\263\277O;\301\300\320N\223?+ \352\342W1\264\2778\350\330q\310>\227?qC\213\254\351\311\271\277\204\231K}\246\262\301?\204-$\333,\257\214\277\032\225\2161\377\212\305\277\r+\275\'x\315\321?N\201Y\223n\267\305?\211\337\037\016\326\027\265?\002\320\352l\344\261\263\277|H\324\304\224R\245\277\223??\267OU\312\277\n(8\035\026 \223\277-\213\"\275\031\027\251\277\262k.9\025\260\304?\206\250,\314\023\212\257\277\202\371Le\254\\\242?\245\266\373\351X\343\323\277\247\267F\320\325V\254?\200\372\332v\206\272\204?;\330\036\203\340\027\273?\375\022\356\254\0132\277?G\362\317Ls\255\213?H\376\373n\377\267\266?dC\024\265\3013\302\277\250U\255\025\327\372\206\277\013\014L\030n\231\247?\242\245rO\226&\206??\354;<\337;\303?\252\267\363\230\031%\242\2775E\3143\314\332\263\277\352\353\266&iB\270?\033\220,Z\300\\\222\277\213\340\3715\225K\303\277\200\216\356>\207\t\265\277\337\020\267\360\275\364\304?\347<AP\315p\272?\301\313\360L\005G\265\277[\204\t\352\302\240\252\277`%w\210yG\260?\335\342]\272\243\250\240?\244\005\023@\262\027\246?\375\346\273\324\'\220\300\277\304\336\247\020\257\262\266?\272\215\216\253\204\241\260?2]\314\213wg\267?X\367l\0302\332\272\277\220N\257\374\244\265\235\277\361\311_\244\273}v?h\330\002\305\205\327\276?\211F\363\322\345C\220?\327\220J\215w\353\260?\3023\347\"\242n\301?k\233\253}@\027\303?\335\255\353;\263;\276\277\007\336w\371i;\265?g\301\000\275b\220\300\277c=\355\366\354#\262?\031\337\225\220\231\322\266\277\361&)\353\354_\263\277Z0\0168\377\t\247?_\010s\214\221\246\300?\\\3668\0136?\253?\315\245\215\252\202\327\302\277\237)\036Z\014d\200\277\235\006\324\322\370\323\220\277\261\356\321\202\240\241\265\277\277E6\343\247\251\231\277\263\367}ky\354\275\277\216yJw#\305\217?\2479>p\3410\313\277\322f\233`\251\254{?\355y\320*\304Z\247?\264\000\333\342\324c\256?\'9-Erd\261?L\\\r\371?\244\266?\214\256K\271\037y\271\277\030\343\2014@\023|\277\202wPRMe\244?\010\343\373\355>\310\261\277\027\326N\031\301\222\234?\337>\3630\203\030\261\277RU\265\3431\247\266\277\333\246\025\346\354\310\273\277\266P\201\307\226\027\261?\232a\001\351\027\202\261?\314B\000\321\'\352\303\277\3262>\241k\267\271?Z\243A\2160\330\302?\"\354S=o\220\263?R\275Z\220D\352\273\277\016\330i\322\032\231\245?xu?\364/\032\200?$\240><\350|\234\277\006\016H\360=\307\301\277H\177\276\217\262\240\245\27791\305\'p\'\213?\322d\227\345eV\261?;\340:\255\332\313\230?\324=x\305\010\367\250\277\301`~\275\034\251\263\277P\335F\002X\376v?\336\360\353M\251\331\277?\3355q\263%\366\265\277\3471\307\031*\025\312?\351+>\300Si\264\277x\377\370\365\270\203\244\277e\345j\214.\023\275\277\221}\320\036o\345\262\277xs\000x\220\031\314?J\274{E\277+\266\277$\010\313\356\363p\277?\352\317\010\201\001\330\305?\303\"\303\311\035Z\262?Ts\220\347\350\013\257\277\031R\216\"\007\353\275\277\206=\313+\365\313\254?\2277\031\276\023\024\263?+\2445b\242\372\301\277\261\301\002\000\270\001\254\277\310\250}\241\261@\254\277\324{\214\213\025c_\277>o\261\3403\367\252\277\324\2226\230\341E\255?M\363q\033\211\353\243\277\034\233\362b \225\251\277\333\311\302\253\237\270\316?_\275\026=\336]\216\277\027\364\034\372\277\256\260?\256\035\235R\213Yn\277/\0175\363\266\204\216?\311\271\304OCQ\273\277!\033+\tU\311\237?\034|\032F\351\234\322\277^\364\373\204R\370\265?\364\026\212\033y\353\272\277\314\034\221\232Cu\202\277D\n\230\\\327\302\273?\343\neD`V\262\277\330\200\263Y4-\205?\250\366Fi\3360\307?\345\361\030\324\220S\300\277\366Tm\227\na\273\277,\323F\341*\204\320?\0012`[\2656\262?\274\242Wl\"\371\242\277\375f\017|{\374\300\277\\6\235\361\274y\252?\374X\3272\333\022\212?\322|rvV8\262\277\366/\324\377\235\022\273?\300\213\017}\244\036\303\277\203\371\342k~\251\261\2776\013\374\302\361\254\243?`\273\367\346\324\312\315\277K\325\353\347\364\020\244?]\224#\267\313Q\221\277\"\3676\240\255\377\324?Yx\255\261\347\205\276\277$.$\366\341\244\201\277\003P\343\327\212\377\243\277\357\376\275(*\240\311?1?\263\203\326\245\241?\237\222\351\261x\310\275\277\007\301]4\264\200\254\277-\375H8\372\026\302\277R\3341\215\003\222\254\277M\363k\t\365\327\273\277\217\002\213\231^\033\275?\232\305H\340\307\226\263?X\002.yF\235\235\277\017\0024\317\253\000\304\277\246_KZ\253\006Z\277o\276\346\205\277\232\300?\235\303\305ce\177\263\277\327T\342\344\263\006\255\277\313\031*\270$\214{?\237\200\202\023\037X\300?2@Pu\312%\272\277o\202pb\253\216\276\277U1R7\324=\274?\311\227\360>`\020\241?97\330\337RX\251?\310N\215\367\016q\244\277\265\271,\312~-\252\277o)\332\007\204T\264\277_6\302wd\336\264\277\376l\233J\347\367\265\277\205wS\030\211\331z\277c\217\214\225\225\235\335?\213_g\026\256\365\256?\275\034c\230\276\375\211\277\303\255\225\224$\354\265\277\230\370i1N\247\272\277x\327\330\0042\343\306\277y\247 6\257\370\246?\234\367\350\3111\320\240\277\307\357?\021\3012\234?\232\376\316\266\203\275\223?\247F\005\252\246T\317?q\\\013lN;\261\277I\022\370\364\030\035u\2770M0\252\350\311\273\277\020c(](\260\303?%D\365\325\014\221\217?aj-\355\2236\225\277\323l\265\224\023\373\265\277\t\206\225\261v\245r?{\0067\021\340*\300\277\215\304v\006\016j\216?\377\214\n\307\332\231\310\277\002\332\247\327\262\207\272?\311t\225=$U\301\277\337\016m\221H0\321\277SN\231+x.\301\277\223\265\206~dA\316?U\342\217~\201\250\333?\237\314\231\230i\364\321\277\251\374\327\313\271n\263\277\007\001H\200T\341\272\277!7\340>_\351\265\277\253\013\210\333\037\265\313\277~{;\210\232m\246?\022\356\213\013\001E\265\277\361\224\242\222\010b\307?E\204\265z\006K\247?\252F0o\377\362\255\277\223 \010 U#\207?Y\267,\037Gy\304\277\351t\275\315}\351\257?\035\235\224\376\300\311\252\277U\211jq\250\320\245?\351Y\221\332h\007\205?\277&\350\223\3479\307\277\327\210\001\350\273=d\277\351_\375\346\266r\241\277\177\314\302b2\005\263?\356s\351\007A\373\273\277\253\311\362\300\250A\222?\306\367\312Ie\216\260?\373\2220\316\355\211\222?\205SL\"\362\320\276?\\{u\215r\370\204?\225yr\306\026\343\254?\3232M\307\322\214\266\277\356\320\216\037\312\257h?|\324\272\254\210iw\277\032\355\344\203 Pf\277\356\374\302\252\022l\267\277\347\\\337\213\233\265\300\277\3713%\200\300\325\261?\037\014\330v\225`\301\277kR\342r^\027\261\277\347\236\204\340\227\225\254\277+\273\250\242\250\\\271\277}0M\245\370lS\277?t[\207\363\031\244?\201l\322\206k\037\231\277K}z_8\002s??]\022\303C\265\304?\344\357\326Nx\206\241?\323\006`\302j\214\302\277\350\367\247\344Eb\315\277\022\243><\266\350\234?\234\327\263\341\213-\271?\305r\216\221\220\305\250?\361\"\346U\220]\245?}H\344\2026\353\243?79\242\036-\017\313\277?\217\302\"r\231\275?\266\217\261#\332\213\256?j\320\305\224\345\225\314\2778b\240\304c\020x?\254\376\001\211o>\323?HQr+\372\335a?\021\370\227 \244N\303\277li\244\310\343\216\263\277\210\303\240\263s\257\251\277\307\217\334qr\205\244?Z\302\205\334\031\277\263?\345\242\263\270w\302w?\023\342\002\352\314\246\216\277\367\255\347\001_\257\214?\r0bd\372\023\216\277U\310\265\013\227V\251?.\334$\353\205K\266?0\204\263\253f\253\220\277\024#\270m6\214\310\277\316\316\266\224&1e?QZ\307B_\213\266?\034^\243\315o\322\206?\nln\227\364\026\233\277h-\374\274\203\364\273?\230f\357\244\326\213\314?\000 \017\006\314\301\245\277\177P\350Y\210f\250?@\361\202\274\214a\244?\334_m\327 \031\251\277\361\205 \314MHm?\007M\232`-s\301?\363\311?\365\233\364\307\277/\240\350\213\017A\327\277\335\311X\272.c\264\277\340\302,\203j\272\231? \003\360x\301\n\305\277\236\276\347\304a\r\271\277M\227\241M0\304\271?\206\232\327+\361\216\322\277 \320\224\036\354f\300\277\0263,\026\362\207\306\277=\215\303\365\301\325\243\277\024\374\376m\3510\275?T\317\226\373W}\310\277\016\'\007\013}|\266?]*C\266\344\336\255\277\312\233l\306\025\201\334\277\253G\344M\333\377\300\277@\022siD\331\304\277?QO7v\313\260\277\216\252\301\0003\320\260\277\030\202\323+[w\230?\357j\003\\c\014\252?\332\306\000\n\315\303\262?\306\000R\007F\365\265\277\201P\000\n\202\037\302\277\305\026\2325\2276\232\277\236U\230\2078\024\256?\227E6\204\327\271\201?\3772\352\227\354\226\250\277\201\321I4\242\210\320?\0323(\341\'\\\261?)\001\200\245\311\010\245?5rlm\303\231\310\277\357\373\367s\272\372\271\277Pl\3003\236\242\266\277\205F\030\025\225\023\221?\342\030\311\314\320\344\320?N\264\267\220\323\376\254?&n\3740t\241\263?\350\301{d`y\252?\225\177\030\344\244\017\263\277\322/4\3635W\261\277_\270S\257K\256\331\277Q3\310\260\377\304\256?\000\277\307\277v\213\260\277\233OT\205v\347\262?\321\332\303\212\3647\263\277\334ED\216\223z\251\277?\303\336\0133\266\237\277`\314\223>z\022\230\277\r\211\274o7U\256?|\203t\312\377|\261\277*4S\3660J\243\277\337\002AL\027\016\313\277\260(\250=\260&\240?x\337;\255\027\027\241?@\243o\030\305\331\225\277=\275\344Z\366>\305?j\257\302\355\260gx?Xb\356^L9\262?\306\323\034\003\234\n\273\277L\326\370\001\031\376\275?;\014\033\242\377\252\252?5\n\265\312\270\006\221?\273\345d \214\"\236??B\246\255fB\306\277)\310:\rT\225\247?n\342X\270O\272\210?r\354u\272\254\241\301?\206\272u\255_X\263?\006\266T\361\371\224\313\277Guv\321_\272\322\277\313PY:\255\'\242?\333Xt]B\237\244\277\205\321h*Y\r\222\277\325p=\270[\340\227\277\347\256\277\031\212\351\267\277\204\352\207pu\025\246\277\3153\222~;\255\242\277k&!\307\207\037v?\000\025\327o4\277\242?\253\315h\227f\312\313?\302\311\314\312P\333\325\277$\014\326\377\246\005\264?\336\007\375O\277V\266\277\023m\356\346\354\343\274\277Q)sD\3729\211\277>\255\346Z\337A\242?\266\020\331\334Ze\260?H\010\2323\026X\242?\274\205\325\021]Y\237?\275m\307\014j\332\246?*\213h\261e\332\304\277\215H,\024\356\352\271\277\367\211\036\265\022m\266\277m\3453\220/\310\271?F\253\230\2019\236\265\277U0\225%x\356\256\277\260dN4\237\005\313?\335K\373\302\212\215\320\277|\226R\2330\372\232?aW\223E\342\202\251?>1]Ey\377\247?\266\216\370\034\263\361\272?\270\311\237(\036\320\272?\352\366\266\227\343F\247\2777\363k\255s\361\301?J\271(\210?\212\271?D\224A\3661u\260?\007lw\301I\257\255\277\352V+\013X|\306?m.\203U\231\r\314\277u%[\303\254P\307?\013\031t:\364S\304\277hwfB\021\263\261?-N\340\022\276>\301?&\201wJy+\273?\347\033\222\253\261\267\237?T\275\252y\274\351\307?\306\251$\221\370\003\256\277\350}G\235\271\207\304?\374F\3759D@u?;\363\257\227\232$\257\2774[\305B\315\367\274?|$;\363\261\364\252\277\3152\227\265f\005\271?1[\313\365Q\322\253\277\'d\334\230\331m\315\277\235\27289\347\264\276?\2101\255\332\223X\250?\261\002\331\0030a\206?\320\257\336\364\263\r\257?\013!\260\335\352\234\213?\306$\204\236\037\361\311\277{<\362Y\257-\214?\007\222\362\306\310\356\277\277\277\367\314a\331\302\301?g\317\021o\220b\234\277\240\227\237~\274\232\223\277\003f\373\275p\362\222\277/X\2113\230\254\305\277\302\304\030~W\326\301\277\324\250A\262\231\223\253?\271\302{\010\372\345\301\277\231\013q\262\247!\301?\256\264+\247\264\252\224?.\014M\002\2176j\277\363\223\277\350\273\327\274?\331o4F\362l\266?\213\212\007j\306}\212\277H\237\023\rY\225\235?\253\376\311-\367\344G\277\037\200\325\256\202\257\235\277\027:\336x6\r\235??\002\205Y\310K\271?\t\302~vk\035\225?\372W\'U\314}\244?\243N\224;\nQ\311?\024\316\016\031\212#\261?\330\330\314`\267*\241\2779\\X\245\351-\221\277\030\333\017\301`%E\277\017k\301Fx\275\265?\225\351R&)\324\245?M\nq\361\022u\273\277\035\026\342bI\331\303\277\010T\370 %-\262\277]Y\240\216j7G\277f\351\371\235=q\217\277Kk[i(\004\327?\355\333\204\320\335|\274\277Z\225\350\224L\017r\277b\023\302y\0101\232?\"\371\212\276\230l\310\277H\370\310+\247-\272\277\002\232\360$L\234\255\277\254\201\256\024\004F\301?\"v\301\314\225c\301\277\303j\230\331\216,\270?\331E\244vG\026\252?T\370\247\202\003<\300\277\246Q\361\300\210\200\250\277&\362Qk\310\220\306\277\320gx\021\345m\303\277D?\007V\"\347\250\277\324>\370a5\356\276?|nOZ\332\216\246?\257\264\366\260\371?\244\277F\232\366tC>s\277\304N\204k\204u\242?\n\350\327\0212.\305\277\356\324-$#`\273?,\264\034\344\036\206\276\277\306{$U)R\327\277\274\273\314n\334\261\222?\373H\304\003\027\366\260?\342Lsy)\014\274?\363\2651\341\356\212\331?\311\334r\234\213=\274\277\341\254\352\273\3272\245?\342\302\030M\376\300\253?z@\344I\232\372\234\277T\0324\350>D\245?\037!6Qz\005\223\277\222\321\323\006\206\252\267?\262\2437\354\300e\252?\256\276\321\220N\307\212?\n\001O\023\366{\252\277\316\021p\024\314\035k?q\222\353\310\215R\300?%\233%;d\302\240\277(\261W\320|\371j\277\273z\304~/6\242?V\'\023\206U\350\275\277[\022\207[\265\202\270?\316\216<\0228U\270\277\315\367\321\355d>\273\277n\tF]/J\241\277\017\323e\r\261\203\323\277o\002o\352\2562\264?\340\"\204t\\\340\271?\237o=\307i\324\277\277\301\322\346mc#\273?\021\2106\213\257\210\274\277UT\343]\301 \316\277\234\024!.j\356\315?>\202\230\3058\003\276?\355\265\316\301\242(\264?\n\357\250\272\300\246\310?*\311\342}x\022\263?}\304\027\0226/\321?\221\252\373D\277m\257?0~\253v\211d\311\277\r\037\326}\322\tg?\302\272A\203\360$\316\277\373I\212\243\323<\320?\222\033N\036\326\267\243?\356\220\177y)\206\256\277\210v\204\354\205\237\311?\247\215SJ\324\357\254?\254\345\273\023ph\210\277\206K\264\022\332\334\255\277^\221]_\340\224\235\277\177Q\001_\327.b\277!/\216\021<\251\257\277\014S\223\326\003F\215?\n\313\204\021\241\237\266?&\262\"\246\222L\255?,;!\262ax\257?E2\324\270\362\013\311\277&\304\272\251\202\363\261\277\361vQ=\337\310\261\277~P-\352\375\203\261?7\257T6\240\221\250\277I\337\367@\270D\256?\242Y\270)\247\216\272?>=R$\364wJ\277\321u\242\341\206>\313?\017\277\366\177F\214\266?\265\266\244\203\013\034\255\277Cb\013\233O\302\252\277\354\250!\240\036v\222?@Fe\352\3669\266?\271\002\202\262\004\005\311?#\3150\036nC\222\277M\215{\000:\260\303\277P\342\212\362<\200\304\277t\327<\272\2241\304?X\217dA\221\257\253?\023\022k\320\200u\234\277\353\333\230Lk\241\270\277t^-\344(\265\304?0\007\202\025\367\034\261?\023\"\264\362\365\253\244\277\230\277\227\201\250\273\256?P\032\372n\377\224\247?\021\3409\377\262\343\251\277\230\375\357\312\030K\254?\242\316,U;\273x?70c\2344\263h?\035O\006r\033\026\313?\271Ce\330\203\021\301?\375\312\226\231\335\364\235\277F\343PDf\016\261\277\311k\227\245U\\\267\277\335\320\234=\271\"\315\2774\032\006\226\337\204\224?\3574\224\305?\277\264\277\246;^\016\004\217\261\277\320\270\351\266D\202\264?\021\240\315\361FW\223?\237h~\020\027\330\275?L\261\362h\334\274\241?\270\217&\024\272\235\220?\231\2325.\352\204\251?<x\212;( \256?\"\321\202K\375\2650\277V\\o\310\306\211\264\277\206\322\215\336U\032\262?Xi\024\266\277g\316?\303\007\326CY\\\302?\023\000\254d\306\031\227?\314\322\221\363\307\227\241?\207e.X\330i\260?\344\260%\3109\375\264\277n\025QI\233\342\263?\351\361imPB\264\277\3745\355W$\253\265\277\207\311\204\005\306\320\237\277\"r\377\335y\035\252\277,\332\323\371\205\355\275\277M\231\212\006\235-\315?\275~\222\023 \221\225?\343\354\027kSV\310\277\200\204\341q{\227\243?\036\321\362<ov\262\277\252\210\340\235R\n\300?\321h\226\220\344B\240?\320K\243\245\024\262\250?\007\34125\355%\260\277\2445V\303\331\333\310\277\003\323\267\263gH\260?\330S\341\366\302\355\317\277R\td\274\305\357\243\277\242\334\354\2412t\227?G\254[s\323\350\247\277\005~\310\355\274\033\231\277\023#}\320Wj\320?C\255-3\'\377\213\277\313\334iJ\357\206\272?+#r\2502\330\275\277x\253\r\335\267L\244\277\376\224V\220=Q\301\277L\302\037jz\316\305?\346\314\024\234\276\247\226\277\005\032-q\252Y\240?\257`d\257\033\032\310\277\032\301>\001(x\300\2772\364\376\274G\355\221\277$\t\240\224\267\244\312?\341\023\301N\275\277\251\277\236s\273f,\n\317?Z\234\372H\271\225\244?\216\203l\335\354\271\265?*\322\216P[9\307?\'\370\335o:`\301?Mw\326*\036z\262\277\266\303p*\375\342\325?\261P|\377BE\274\277\364\302P\367iT\301\277\006\367\306\013\207r\274\277\355\350]\037\363\237\311\277=\202\300\250a\237\200?\226i\0261\327\255\300\277\265+\034}\0162\255?\022N<l\023+\254?&\256\250\350\231[\246?\210\n\037Rk\333\220?m\"n\347N\346\305\277\364\242Iq \337\243\277e\307\320\246\201G\261\277 \2473\317\236\347\225\277\271\310\232\215\276f\262\277y\276\324]=V\300?\2540\035DR\347\305\277\256B\026y\316\316\320\277\321m\315\334\352\354\231\277b\nJ\254rk\265\277p\276j$7D\302?\036p\201u~C\303\277\2116\037\226\211\316\264?\245/\362\227\345\221\230\277\221A\350\340L\277\272?\002\037\333\216\360\335\254?\001\217\375l\253\267|?\001^o\004^\271\213?\001\236\0333+\347\210\277\221\373\312,\3420\265\277SK\352+\346\343\305?\327\216[\003#\362\273\277\020\247\0059\350\014\300\277\277\313<:\343R\204?r.\216*\217q\264\277\023\371|:\320\304\250\277X]\226\212}\342y?\242\376\215D\002\027\271?\236\246\257\354\034\254\301?\246Ww\314#\030\267\277lx@\375\374\244\266?&\257g(\340)\267\277\324@\'\253=\245\262?\360V\r\255\371\010\217\277\300\0200\302\035\025\263\277:u\031\000.\224\243\277>\037\312\367J;\256\277\352+q\242\225\337\232?\210\372V\023D\023\263\277\343;\344;\343\324\257?\347O$\376\033B\301?1T\035\312\024\361\256?<\312\252b\022m\301\277NT\326\007<O\245\277@\227>\272H\301\303?\250\221P\243\223o\246?\275\365\007\315\366\223\245\277\004A\217\313w\300\303\277\017\tx\377\013\354\225?\t\234\357\331l\217\323?nLE\346s\376z\277\345\370\000+p\362\231\277\301\230\230rc\376\305?2!~|[\271\224?\212Sk\264q\327\230?\220\0041\267;@\231?,\262\235%h\222\236?/\317\353\003\241\300e?\214V\221\r\217b\271?\374\313\\\370S\022\305\277\027\357\237\023Oh\260\277\016-\\\313-\372\260\277\210?\256\031\211\313\305?\233K\334\365\301H\304\277\304\310a_vg\244\277E\337\364\237\323\312\254?n7}c\244\343\256?\327\306\230\253\330\323\235\277O\000\260m\357J\257\277\222T\032\202\244\030\264?Te\327\215\315\247\265\277\264\037e*1\002\221\277\370 -\362U\275\302\277Q\032\032\005\241\267w?;\004m\006\3166h\277{E8\233h\220#\277|\242\300\013\"\344\321\277\210\375\226k\264\267\304\277\252\274L\326\254\320\257?I!\010\360\3172\262\277\353\343\252\2455Y\263?\335\364\211\334\227f\232\277\"\311\302\323S\023f?\250\246\325\356\213/\235?\365\272l\357\3109\302\277\303S\005\025&\004\306\277^\211\210\371\\R\245?D78eQ\210\300?\200(\260a\020\014\220\277b\256\220\367(\177T?\332\253\311\274(X\302?,\253\0311\245k\306?t\347\2148D\371\251\277\346e2\305XD\245?\000w\252\007B \251\277\266Y\'\023\211\010\255\277\274\332\002v\205\252\240?Go\"\274I\363\245?I\253\201\342\322\313\277?\214V\013\222\373Q\271?}\222@\t\251T\270\277$TW\032\316|\305\277\363\271\255\234\223Yy\277\211^qOt\332\277?\311\2242j\207\361\243\277\203C\006~\320\026\260\2774g\230{\225r\265?\274\033\342\023\361\277\322\277\321\345\030~X\261\301?O\344+\252\262\226\301?\237y\227\3250;\271\277\302\370\312\020\207\225w?\016\357\311\3564+\242\277\215\2438\225\315\361\246\277\342\001UI\301\225\252?\353~\254\326\313\027\206?\004?\021\266<\t\212?\376C\331\303\320\252\265\277I\021\230\302A\330\226\277\324h\375\225\222\343i\277\363\225\217\034\370\360M?\025\225\266H\316N\247\277\255\335\230\377\\\037\270?\320/\305Qc\'\270?Ue\006Hr\026\262?\021\345!\250\331\234\232\277#\344Z>\341\257\301\277\225;\342\356\3250\237\277UA+D!\235\233\277\004\376\324\220\304d\305?\010\250\t\371%\010\263\277\004\271Fb\342\227\244\277\200\241&!L\335\320?\363c\037\245\365t\270?a\215\267\302\353\036\014\277a*U,\342C\272?S\362\3071\205\224\307\277k&A9\302\201\263?\037k3\030Wl\226?\336\230#\243\303\307t?]\004\005\220\000\217\200?\323`\360Lv\010\247\277}D\332\212\354\356\311?D \240\234s\236\257\277V\264\303\366\243\365\200\277\316\304\032x\305\213\230\277\000W)\031\230\022\327?\301\372]>n\205\217?[\224Vm\221g\222\277O\311\224\376\224w\301\277`[_Ya\203\245\277\327\267\022\3700\014\302?b\324\253\000\320\243\234?G\345h\234\374\013\257?FY\r\252\337\330\321?6\327\034\304\302\254\217?\035\023\374\264\357\013\274?\266\351\311~@\347\315\277\223&-9\001d\206?\204\013\020m\'\320\254\277\365\371VZ\265\277{\277M\\jlV\237\217\277\343UXrs\363k\277\377g\371\260|\177\226?\304\203\243\237\330\200\301\277\000\320I\276\"\346\271\277f\007!\223Y\373\260?\202\313u\234R\310\253?\275f\365\311\001e\261?Ph\340\005z\217\301?\016eo8\376\000\245\277\233\346\374a\307\347\277\277b\350\2263kQ\233?\321\301\353\350\220\357\251\277\274At\023Q\256\214\277T< \260]\037\200?z=\236\346s\010\265\277\310}\355:\306\260\233?\324\320\350\240\023*\245\277\030\305m\007+w\300\2775jB\017A\251r\277\310\365hZ\204Sd\277\344\3126\337\033\311\266\277\217\021\245\326\0071\224?\240/v;T\256\263\277\246\245\231\237\376\343\226\277\236\330\237\\\001;\255?\033\371\221_^\232\270?\361d\032\016\206y\304?X\033\216\336c\373\260\277d\317\020q\210\250\201?JP\014v\373\366\273\277x\025\244H\250\216\266?\225\270\330&cQ\260\277\014e:\305\262Q\257?\262\336\332I\244-\267?YcM%\312\243\317\277\354eF\000\014\203\227\277\333\\1\275\036\026\246\277\026[\321\206\301\226\271?\0250\014eb\345\210?\364\316\323\206~\254\224\277I\265\250=&\017\250\277\364\352\016%\334\324\204\277\221\330\315>N\206\273\277>\365\375W\375\330\266\277\004\006B\261\007\242\270?\357P\354\271\234\275\252?5\207\377z\355=z?\332&8\366\216L\232?\346\243\230$\244\007\244\277I\222\264<\321F\255?9\230\354\230\301\024\255?\034\360\265\314\177g\245?\212&v\264\225\332\266\277\351\303\257\030E\243\251?D;\264\243\"\254\304\277\356\270G~\371\336\216?\177S\325[\220\340\220?o\277B\301\342\200\232?\230\243\233`\275f\217\277HMEm\345\240\221?\344\014\324#\005\361\273?\341r\221\370\336\256\262\277\224\275R\347\374\233\270\277\321A\262v\201o\251\2771\365:\215e>\275?\36532-\001\237\275?\372B\266F\0346\304?\3754\326a\201\262\212?K\027\320\351\004\272\267?4\235\316\334\310\t\276\277Af\272\321\245{\257\277\025hi\357w,\253???\210c@\026\265\277\227\337,\357\020\300\251?\356\374\305t\245\250\301\277\352\263\004L\313\002\204\277\027\237\3574?\216\240?>\265\014\213P\333\222\277B\rP\213B#\242? \324\027\301\n\314\300?\321\364&\004\254\233\225?s4l\354~@\261?\020\321\306\005\033+\310\2777k-,\304p\262?\214\177v\336\235\277\265?\244\230\255\377j\357\244\277^\377hO\320A\242?`\251I\366L2\272\277Z\241vew{\241?Yo\001L\207#\266\277)\370V\264d[\305?z\342@m\311\026\221\277\3163\240\021\343\253\260?\374\240\362e\332\026\244\277\036R\252b\245+\220\277\262:V\224\021\n\236\277[x`X\334Z\314?j\266\372\267\373\324\311\277\035\\\013`^\354\256\277\036^\024Q\301\376\n?\365\207\216\230\025\030\305?A\273H\201\225ea\277\203\354*>\364\247\226\277\271.z8\342~\263?\305\234\020\336t;\306\2776\301\212!\005d\251\277\353\371\233\250XA\267\277\230\370\231I\242\374\266\277\352\330\332\026\340\334\265?\3147\037\036m\257\301?)\302\260J\345\034\277?\311\034b\355\017\027\271\277iq\017\0379C\223\277\221G\002\307\243\035\222?Z\302\361\247\244\030\305\277\225pm|h\036j?\01758\300\271\024\253?\302-XJ\016\241\300\277A5=\271\376\314\220?\333\356\260\000<n\230\277\365\230\246H\307R\273?Z\274\032\307\323\317\312?<3`\323\354w\310\277*r\345XM\035\277\277\032\256Nc\355\304\267\277u\367\245@\333g\262\277\n\275\303\026I\344\273?\247\364\226\342\377\325\246\277cZ\212\334g\307\314?\217\201\367,[m\243\277H\234>S\216\204\274?f\322\342!\232d\236\277\243\216\313\377\322\177\250\277b5\234-IH\321\277\352\324\365\317W\257\300\277FkA\0358+\301?\240\214\353\273\243\274\305?2Mb\004f}\234?\034UKP\\L\314?\217\207~\255\224\306\312\277\251\361\201 \013\340\240\277\276\273\323;\344\353\303\277\262\2042\305\251\303\230?H\267!\225L\326\320\277\310\230~\310_\313\273\277\333\233)Uj\202\303\277\371(\206N\022_\324\277\005(\271\300\217\262\255\277\326\245\254\240\275\005\301\277\371\263\006}C-\205?\211\333\255X\324\246\302?\207Q~\310@W\263\277\236\312m\253\0072\233?\372O\005\356\263b\340?KvMdr\272\270?\'\227\312\035 \272\271\277\005\332\261\027W\\\221?d\304\037\376\371\260\301?\3146\305\313\031\'P\277\004N\340dK\004\246?\016\010\340\372\327\003\302?\364g\362\373$\024\265?\255\356\242M2\345\276?\345\233\001\264\362p\321\277\214\323\303a\257\300\220?\327\223CzH\342\220\277c\'\370\351\267\253\266\277\207\302\025\025\241:\264?\336\370\024\375\277\326\301\277y\347\245\3665\317\247?\274M\326Pm\327\234?\263\321d\214\232\317\236\277\372\315\017\321\256*\206?&^\234\364\343\340\265\277.\036r\307\3426\277\277U9\026\202UE\261\277_\tu\356\336K\267\277~\226YQ\316p\325\277\277\371%\312\020l\211\277\377S\354[\213\006\260?\000\242\267\005\204F\253?\336\372\327\310\334\357\302?\242Aq\272\'\214\212?\374\027\207\360\200q\310? \325\242\'o\367\270\277\010n\004\265W1\274?\207\233Ce\336\273=?]^\365Z\210U\261?\210H\376\270\252s\310\277\317bdq\375\007\205?\037\331(\213\327\356\302?\373\327E\010\000\314a?W\010\002/\230\305\250\277\177a>l\364\201\244\277\034\222*\350\222:\275?\2502\354e\032\246W\277>\203\273\243\304\304w?\306\353\347\303\t\214\265?zN\034/C\271\276?\346\264\341\230\264j\247?=\031;\213,\037\304?\367k\200\277\343\356\250\277\333\216e\273\261\201\303?\220/&\221\217\220\275\277K\232\017X\313|\244?x\377 dr\222\306?X\006\226\243>\322\265?8\215\325xfs\303\277\203\307ecQQ\322\277h\214\315U\231\206\244?\342\235\0350\221w\234\277I*\222\247 \230\311?\tY\0033\035\213\317?\362\304&y+\346\242\277a\220\255}\304\013\302?\276Bn\005g\312\300?e\273\222qhI\274\277\321\354m\000\337\217\267\277x\021\"\316}\316\220?/\236\336\373\372\212\333?c\222\203!SbB\277\353\007#\311\343\254\234\277\220\373\004\225\243\006\264?y@N\300\340\355\330\277\355\005\365_\2625\267\277\352\n]\026\2402\266?\255@\274\027\235{\260?EH|\364\017{\304?\371!*Y\265i\244?\325\2113-\215\245\271\277\317\034v\360\034\231\276\277H@\357\274:\017\027?\350O\\^U\270\277\277\\\266\265\305\330\007\314\277?\315\215J~\360\277?\302\322\317\324\242\"\275?9\014\263,\3200\303\277lqM\363{\301\325?\202\2211\036\364/\235?<m<\206~S\247?\314\021\021\216\024<\273?VS \277\001\274\301?\261a\255?rQ\241\277Y[\352X\375\371\252?\"s\"\346\037-\253\277&1\010\373`\217\257\277\016\005\247K(\241\260?k\330\265x\321Y\234?2\n\013\244I\211\264?\313\355p\325\317\350\246?\036t\374\273\247T\232\277\001\206\303UL\207\300\277\177\253\365\3360\213\265?\374b\007L\t\264\311? \347] K\346\220\277\222<N\270I\004\317\277\274\263\210u`K\300?hz\201\322!\360\245?^\261\023#\335}\303?1\364v\177\233\037\211\277Y\0278\347\034/\235\277\265\007)*\226\n\313?\004\257\352oR\252\261?r\323\246\341\331]\310\277Y\313,\252\366S\256?,\300\253\342\206.\250?[\226\316\225i\357\236\277E;$\246\023.\240?\211y\345\003\376\342\307?\232\000\252\000a/\266\277\020\357buM|\273?q\037\300\257\tB\245\277-\221\027\t\263\010\312\277\313\275\033\3628\316\221\277ih\'\246\212,\275\277\004\022\273e\021w\254?\367\344\367\205f\r\216?\225\036$\354MY\257\277c+mp\227\363\270\277s\275\361\027u\240\213?\025{\263\310\341\202\256\277%\032(\353\274\363\245?\347%\321h\224\210\263?XL\333(\031/o?\340p\310\2616,\265?(K\307\366$3\272?\023 b\035\360>g?\023\371\021\032\377\316\221?Q\021\276@\004\337\273\277\333X\234\303B\260\253\277y_y\356\235\262\270?\336\265\373\246\211Z\242\277\364\023D\034^3\253\277\177V\374\307\"W\304?$\256\265~\251\307\261?\246\247>f\244\333\244\277\022\371Md\220\275\306?\330X\210\217\262\002\250\277\210?#W\337\251\301\277\254q\342\2155D\265\277H\204\324\313\310\270\255?#U\365\337w_\231?\357\203\241\002\202\245\234?\332\325@5\026+\213?>wBv\032\326\262?\273E#N\224\360\303?^\240\216\353\313\341\240\277\317\375-i\317\034\305\277\302\341\325}\236<\263\277\355SL\261\3647\255?\000\242d\010J0\227? 7O\\Yy\261?\005\346\2272\030\360\217?;S{f|8\307?\025\315\326\314\216h\302?\322<\325\3676\277\240?\021&\314\003\322\322\254?<X\364\241\035\343\302?\305(\254\305Lz\275\277\345\244\207\313\262y\303\277\235\377\222^\371\343\273\2777\375\320\274\'[\340?\033.%\254?\221\242?\245?\221$GX\276\277&\013n\332\335h\276?\223b\234\347h\022\221\277\271\305t\377\\\n\265\277\024\225\024\t\342\346\206\277\034\255\203P\364\345\302\277\3727\214\342v\312\253?\244\017\312X#\361t?Me\260\337\324\354\310\277\237\003\330=\212\030\242?S\317\010\327\014$\217?\353\344\266\r\314\036\220?\211\004L\321\014\351\264\277\311\020 \314\304x\254\277\0366\245\036\004\234\243?.\212\342\024\325\227\233\277\372\310\030=8\214\241?\224M<\316__\224?Dsd\026s\302\177?G;\241o\261*\277?\252a\325 \364\257\220?5\037\276\222)\315\230?\325\302\305\002/?\235?_\245\200A\343\021\230\277_\310\013\317\367\205\213\277}\277\265h\235\313U?6krS\216\371\301\277\271\333\022\365!\r\250?\273\t*\230\320\315\257?D\336\365xX\263\257\277\3707\037\035\002\273\305\277\257\211~\324]\356\266?\316R\372~\217\243\232\277k\342}\027\3434w?\204\351\377Khw\254\277F\210\212:2\204\265?w\013F\366X\006\253?\007\020\345\270I\330\277\277\237\255\025\217\353\317\261?3\216\025\236\375\206\272\277\035\325j\274\022\337\331?f\335,\265\344\251\244?\222S\374\371\373\214\305\277\321K\275\226\325\037\321\277&\243\3544c\224\253\277\337\024D\014\206l\242?U\304\361\215\261\310\301\277e\257\331i\010\235\240?4\235\363\262\221:\272\277\367\246\251H\0071\256?\036\355#8\336\350\305\277\246&\'\335\007\257\270?H\360\373\357\273i\227\277p\327\350Y\222r\315\277\346F\241\325%\'\236\277CyH~\321\004\216?f\224\003M?\302\272?_\201-( ?\307\277\326W\017\375\216\361\305?uB\3059tV\246?\212N\235W\235h\275?<\273l\034\336\206\275?B*x\025zv\251\277\300\216<\303 \264\232\277i\210\343\365\366K\327\277\212\251\341jD\220\261\277\310\276\307\245\265q\276?\356P\344\335w?\223\277x\357\037\304U\032\301\277\224G_~\311\275\272?\245\221+\316\366z\256\277&\371p\204\245\023\220?\370\335]\334\206\335\246?L\021\273\260\347\357\302\2779H\275\027\353\014\247?\315z\343\333\274#\256\277E\232\265\037\304\256\262\277\247\021\233[l\311\266?=\262\362\002\220\367\266?2\257\033\nYS\275\277\342\266B\275\325\341\232\277\321\246\336\264.\234\300?\252\361\234\3306\311\300?6\035\247\037\224\010\231\277\330\275y\034t \264?{\362\270\346\275\211\322\277Qj\307\023n`\273??Y\027\206\211]\264\277\327\372\344p\333\232\260\277l\372\351r\233\274\275?\0075\263V\371\317\220?\333{.\346M\370\246?\216:\253\252\212\267\275\277\177C\345~\006\335k\277j\202\314v\205\316\231?\207\261\005\367\366\264\270\277n\177\026\264$\310\227\277\365n\232\243\241T\254\277Pu3\276R1\264?_\017\2452\305\324u\277\\\240n\377\010\257\311\277y\372d\316\031\337\301?0\"x\265\201Bt? \275lc$\341\302\277\345_O\240\320:\300?\031\371\355\322\026\222\236?3\002\325\005\371\335\217\277\363\241Cb\230\200\302\277\314\027\224\371\205\224\227\277\236jG\025\337l\306\277\206R\177\345\340^u?C\205\nd\257\353\207?\025\245DN\270\'\242?\356E\302/7%\244\277i\027\034T\302\016\272?\336\021mLC\343\202\277\'Y\213\227\r\247\304?6\017\221_\236\363p\2776Y\013>\313\203\207?\215M\367b\265\226f?\006E\227?\006\031\321\277\360Y\362\001We\265\277\336\031,\311\203\335x?\270c\331\"\222\037\273?tW\361M\035.\320?\033&\\\310$\370\241\277!f\002[\217\272\315?\251m\321\350A\021\272?$\001\016s7\202\261\277?\376_T\325\210\256?\335W\263\001\017c\257?\000:\351\313\0310\256?\304\256`\207\357\004\270?\207\273\324\347lP\261?5\016\264\031\365\n\314?gt)@6*|?K\215+\256\251H\275\277\275\2472\323c\317\306\277\324\271\251\314\'\336\314?\222\346\240\'I{\262?n\025\326\351\205+\240\277R\003\314\206z|\263\277\032\241\337i\025\346\271?i\305\003\3026\003\264\277\253\233\326y\270\211\257?\026\214\311\374\000\010\277\277\266\026EYO\246\240?\363o\2265a\370\320\277Qu\177\220\344@\251\277^\013\361\371U\261\315?\206\321o\336N\320\264?6\030\007\033<\310\307?($\227\177\r\215V?X\253Ce\313?\251\277\316\335\245\336\364C\261\277\370%\224\372\276\377\210?\020\205\021w\241\356\300?\230\320\377uT\304\302\277\232<\017\343\275\006\260\277\326\206\001p\205\325\271\277\331\203\234\212D-\307\277\345\321D\314\017\035`\277\221o\315\211\341\223\300?\342\303\201%\177\334\242?\250\241\313tW\307\274?6\245r\3018\210\273?\242\022\304\373\353}\313\277\257\341r\352\310j\250\277\254\026\246|\017\212\222\277\032\000\tk\311\352\312?ZOE\250W\005\315\277^\\\362Nb;\221?\trc\206\201\n\240\277\221\373_^Zs\222\277Mw\'O\320I\220?\032=)@E\016\242?\021\352\223\245\000y\320?\370\357\344\n\204\256\244?\200\026\356>\362\313\252?\\Ls}\262\250\241\277y\247\255H I\306\277\211\200Z$@I\221\277\257\310\204\335\307\240\270\277\246D\315\226\327\025\301?+s\374\312\2608\306\277c\031\\\313\020\355\257?W\234\002\022\230\222\271?\354\347\374:\343 \307\277\016\263\337\325\370\216\250\277\030\377\250\r-\327\300\277\331\222\241\230h\010z?\023\331}\306\304\200\261\277\265.0\210cK\305?\251us\351L{\305\277\215\231\014F\323\326\325?/a\251M\243\213\233?\3657p$Uz\307\277?\267\013\265\371\244\254\277\341C\016\034,N\300?\214\366\336@o\260\260\277e6^\354\362Q\267\277?\300\224\307\353\325\243\277\246\361\254\303\352a\226\277ZW\235\001d\004\273\277\023\375\240\202\024\252\211\277\242m\277\261\260)\304?%\313\321\032\3022Z\277\207Ud\367E!\311?/`\232$\005\301\321?\201k+43[\235?w\302Ot(\351\263?\355\312t\343U?\301\277Z\367\253lo\357j\277\003q\032\3656`\250\277E\327\207\220\353\370\265\277\352\307\357\006\232\366\305?\354\374\017{F6\267?\260\216\306\274\247\274\230?!o#\335aW\270?\032\371\\\262\\\355\246\277\313Da\026I\350\212?\255\254\241\332\261|\244?\355\013\302\304]\340\310\277\344f\310-i\303\225?\357\374\351\316\301\334\245\277\037C\366\004\314\314\311?\003\027\371n\243v\261?B\265\223*\014z\300\277\302=\375\357GM\263?\344\261\027P:\013\312?1\212w`_\312\307\277v\246\272\276\250\177l?\210O\372C\317\264\225\277\016Gv\331_\"\262\277\n\033\327\361\206\320\243?F\335|\026r\345\312\277\013\3218\241\251\262\220?\035a\211\270n\003\253\277os\376\2325\276\267\277\344;FclC\277?!\022t\235\004\001\300\277:\022\331\233T\312\270\277\211F\272G\274\023\271?`\007\244\334\023\332\240?_+E\220r\025\243\277\262[\330\223\013B\265?\347\265`\001K\230\224\277\3562\005\247\355x\240?\306\366\330\027\230\212\243\277\257}e\237\3330\266\277\246\010s\'g#\302\277\362Ib\273\2577\232\277\357\376\340\234\217\242\312?d&}\343Ou\320?Z\036\210\036\341\222\256\277\177vU;\314?\226?\271\306J\255\207\251\263\277\311+8\010\207m\300?\340E\215\251\223\030\240?F+\351?\377\214\307?\036\272\004\032t\303\301\277+\271;]\234\032\256\277\035Z\210\227\244iv\277\232\271\006k\240 \315\277\306\371\037\235X\321\327?\305\214\363=\237\236\261\277\243\233\'\235\220\244\254\277\002\373\264&\2235\317\277\006\313\373D1\207\222?\264\"\362\204\233x\315?\\\t\227\016#o\266\277s^U\337\017\355\253?AGQ;\274\327c\277\207\305\\\006\026\367\206\277\240\263\323\236E\302\255\277\375^\241\213\301v\264\277\210=\260\317\344\221\257?C\364\207c:\\\262\277\'\315_E*J\265?S\252z\363\227\232v?O\3445\020\002\344\300\277\342Le\2436\025\320?&\312\037=\2223\275\277\233Wv\027s\235|?\231\025\273\201C]\266?\023\363I\270<g5?\310\372.\002f\307\213?7MG([\301\246\277P\324\307\211\245\276\273?P\276\327\241\205\215s\277\305\307!\001\022\252\251\277]\232\262\277\223\377\271\2778\376\033j\025\327\317?%\210m\365Fg\222\277W\2362A\020\200\237?\320\343\237\247\211\035\275\277\375\312\352\335\333\276\267\277\017\305\3211\014$h?\276\2246[\035\312\300?\231\'\332C\263O\260\277\255W\302\353w\006\270\277\323\356\020\004\023\205\245\277\233\033o8t6\303\277\226I=IDz\267?\034\247\321\":\257\242?\033\214\207I\256|\263\277\233\231Y\340\314D\265?\356V\353\346\265\007\204\277\\\214\237\356\025\332\271\277\001\210\003\\\300\231\310\277\031\034O2YQ\312\277\237\316|\367\270\010\235\277HR\222[\274\236\301\277\230\177R\021\374\020\236?\366\306\n\234\337(\262\277\212\234\216\'\261#\222?9E L\244\t\243?\355_+[\361\377\240?0~[[\007\246\267?Tr\346\253\213\330\305\277\022\032n\256\035>\277\277\213\372/W\006\014\220?\034(C_X\240\265\277\257\316e\tZ\272\317?c\253CN\261v\266?\240\366\345\216P\n\251?\035D\267\276F\t\254\277\244\234\306\302\243\240\323\277\031\254V\375\362\321\256\277\032]\337%5\243\307\277\311.\323\200\341\376\262?\374\230\323\r\213l\264\277t\353T\225-^\202?(\372\014\357\351=\263?5\256\0068\213%\323?v\263J\026\025\024\237\277\341\235\021\200e\363\240?w7\277\351\275*\301\277\244\325at\307[c\277`g\230\234\202\257\240?c\3221\207a\336\240?\217\325\225\3732 \321\277\371Pv\351\302\372\240\277\215_\315\221\014)\244\277\314\247\243\367\036\273\271?~\246+r$\372\253\277\276\310d\201\321\177\304?\000\231\273\342s\343\310\277\"\310\231K\3102\316?SN\260{:\\\277\277\340\332\r;\237X\264\277\354\351\'\2300\226\220?\333\207\222 $\300\243\277X3$\232L\264\267\277\324!Gg\332\205~\277\033_\306^)\n\331\277fw}\365\242\347\263?\007\032e\266\377:\246?\355\031o\022\244\254\314?[\334,\036r\200\231?\2773\235c\302\314\261?\276\347.\374\377?\245?=\364\017T\273\304\264\277\326\254\022U\373#\216?\023\312O\325\354\002\302?\326\375\366\374\026\254\276\277\2579\177\030.\231\274\277\304\014\003\210\030/r?\344h\206\226Q\372\262?\250\007%F\243\026\252\277\331\022\277\326\300\037\177?\2104g\276w(\236?\230MS\313\334g\271?^:e}sv\223?\236\016\221\334\331\301\307\277\257F\322\333&h\316?\245\003}moB\320?B\317\365\211\"u\243?\250 \361\345;<\223\277<;}\353\314h\310\277\233\205\373\035K\027\262?Uw\246\362\243\235u?,f\300\263\3521\250\277Lw\331\004\356r\304\277.\036|Kz\351\220\277\004d]\300\t\033\255?gI\264\"8\033\234\277W\230P\265k)\253?\272Kh\014B\351\200\277\315\013\303\244\0300\265\277<K\201\220g\337\275?8\250\001g\344\022\260\277\237\260\317V\027\375\254?\300l\021q\335\224\243?\270\312\332CY\351\205\277\371|\377\036\002J\251?\211\224Y~:\307v?\256\243\374\317=\024\301?\2216\373\317\255\274\275?D\206p)\227h\263?\361\361\332\214\260\365\332\277\200\342\210/\275l\247?\025=\366[\317\301\262?\303\027<7\334\332\253\277\275WG\307\353<r\277\365\323\310\007l\005\202?\376u\235\227\347\323\242\277\r\177wD\257H\310\277\352@s\256Bx\277?_mG\337\t\024D\277\232a\264\272\031\355\304\277C\2002\362=\244\316?\253m\321\0017\255_\277jNS{\347\203\315?\366\035\2656\225\366\304?v\207\255%\212\264\252\277p\2169H\230h\310\277in\"w\243i\321?.F\327\237}e\302?\023X\352\344\355\242\312?\037q$\335JK\245?\007\363\034<\201^\307\277q;\272\005\316\323\306\277ql\010\331\334\317\206\277(j\017h\271\273\232\277\354\275\240D\361\006\314?#\376\236\350\030\264\253?Y3\020V\202\274\277\277D\355\303P\223\246\250\277\341O3\206\307\323\216?h\021\263\330\'Mz?\362\363\031i4\226\306\277\215!\014y\314\004\312?\022^p\342|$\264\277\317q\273\006\021\337\245\277\305\255\355\375;\306\213?`i\325\207\037F\301?\351\277\360\374\010\024\205\2777\223\247\357\250\026\244?\257\376\0343\027\234\276?\231X:\265\377\373\303\277\006>=\241\350\352\240?\005\2240\246\220b\310?\217f\227\214F\211\261\277*)5\220\036\201\300\277\247S\347\027\273e\307?j\216\007\321\322\323\311\277\350\250A>Tm\263\277\267P\230\247\335\007\257?Z1X\365\261\031\306?\323\250\024\007s\374\263\277\342\300&\320\306\320\250\277\316\005n\330\234G\263\277\243\251nWOM\241\277\315m\252\365\252\014\260\277\227I\370\367\363\256\244\277\256}\220\037\264\264\305\277T\227\2465\277\314\242\277;\337\302\240~!\220?\270\177\010G\353C\265?@\277}\013:Z\300\277K8\203\n#0\225?\252\216z/\310\351\203\277\353M\240\357\353-\206?\274\264\t6 \334\310?4\313\t.\025>\270?\326\250N\254\277\352\303\277\222\245\341c\373^\277?\220Dx\232\177\321\271?~\372\225\225\363\305\266\277\023{\352\227k\021\266?\332\212\003\002\303\367\271\277\221\263\'\271G\323\264\277\366 \004Ib\222\321?fR\317\r\227\311\264\277\007\247$\031\334\301\231\277\266~\266>\035\247\276?\361\325\224P\023\355\245?\316<V\224\362\251r\277\314\310\331\332X\203\305\277\020.[n\361s\274\277\370\234{\240\367<\317?\246o\353\216\037H}\277\342\204\'\233\001>\300\277;JlvF@\322\277\0035V43\340\244?\033\363\307\363d\211\226?,\343\255DL\234\302?\027\330\221\315\035\234\301?\003\250\254N[\351\232?\345^\t\003m\204\245?tZUh\331\253\302\277\275N\2773\305l\300\277\021lb=\376n\263\277b!\247a3\233\266\277W\306\251\014\r\244\264?\324<\217\262\200\357\254?\342\"%;q\321\267\277\271\225C\334H\n\300?\310\265\344\304\342T~?/}q\010\271u\263?d\322\303\336V\031\255\277\250)\305\330\275\367~?r\253\215\237\025\356\233\277<\327\3404\366z\306\277C\303)\202\334\336\255\277\'\370\005j\214.\245\277\033\001\'u\256\347\304?\r`Rl\227\024\245?\301\316]F\327\000\260?eyx\242\225N\222?\343q\010D~U\267?\n\354e\345((\302\277\267\236Sr\360\255\264\277\316{\203\036\313\353\277?D\262\246\010z\026{\277\210DX\002\355\312\270\277\225\214\336<\216\214\275?\367p\320\347\214\307\312\277|\221\340\r\234\324\243\277\236\243\335\313\310F\261\277?\2233B\262\326\267?\312i\271\0058\314\215?\016A\323VE\377\224?k\375\332\350\321S\261\277\3744\031\371\324\353\233\277\326\342\320}\210\026^?\014g\247\3434>\201\277+\024\320B\375\260\267\277\202W0 \370\312\321?\345\032\025\342\016\220\267?H\336l\334\312\365\241??\330\266\205\242\247\320\277\234R}\206j\300\264?9u\322\014\245\346\264?9\260\211I\3118\303\277fU\253!k\374\303\277\330t\026\312\3720\264\277\021\273\376\230\307\000\243\277\257\311\263-\240\nY\277\233zQ\016_9\247?B\230$\210s\023\243?\272\022\336\271?\022\305?i\245\354\371\330\262\277?f\0073\000\245\345\262\277\277#\266{\026\253\276\277\260\000$\256\274\253\254\277\330\271\243\342F\252\241?\003f0\000\232\340\277\277Vm\006*\264Y\260?\205N\212D\177%\253?\316J\217\267\247\027\321?N\311\265\236\265\354m?x\215\223\332\360\006U?\333\000t\261\\\243\245\277\327\245\341\250aZ\256?\270\267\202\014\256\010\300\277s[\236\037\002e\326?`O\231b(\004\312\277\377}\037a\021\236\271?Wp\210\332\377.\267?\246m\020t\345\366\210?Z\241\335\217\276\224\312?\021\237\'\231\n/\261\277\244\2477L\247%i?dA\263Q\353\272\273\277\360\r\352\357\031\323\243?\3718%3a/\247\277\353J\257g\3234\307\277;xd\344\331\206\267\277\337H[-\t(\260?x\350\231R2\004\241?\330ZWL\2364\263?\017\220\246\271R_\266?.\221\357\377\3606\303?qC\210\252\214\\\323\277\312\t?v0\033\270\277:f\307\314\333\263\300\277\036\231R-\017L\256?T\032\346\254Q\233\316\277\371\212\233\310\243!\262\277\245/@\210\360X\245?j\256r\273\272\272\301?\016U\237\234(\343\264\277>\177vcTQ\300\277\\*\t\244\306\021\307\277e0\271\263r\341\326?\272-\214w\304\376\265\277#J\213\213\307@\305\277\014\300s\014v\251\243\277\333\346\340:t\275\300?Q\016R4k\177\204?\275\371j\212OH\302\277g}ajv\033\271?me\260_}\212\302\277\212r.\034\004\021\273\2774S\220fuZ\307?\0005\270\376M\374\244\277\343?\332\242a\347\275?\365-\327\274\265\025\306?\026\343T\240\253?\325\277\210\017\376\204\303\273\242\277\000\336\266\r>\255\320\277\320\033F\376\\F\233?\317\366y\253*/{?\r\277vS\343[\272\277\035\273djo\242\241?\317\326^`\303\331\177?\314#Y\"<\263\263\277\371\242)\306\340\370\240?\342\376b\347\025\350\261?xey\007\223\267\261?\004\215t\257\343\323\202\277\340g\307Q\370\017\227?\261\230\272-\024r\267?\027\254\252\036{\003\251\277\023\3318\030p\203\230?\245\356\343\333\367\024\265\277:\224\034!\350\017\240\277\321j\\\340&\025\270\277PJo\306\270p\214\277`\371\326[\t\002\242?P1\217\354\276\227\274?@\237\0329\302\022\240?o\022\216\3012\363\263?\003\031\317\266\305\350\242?\332q\274D\217P\300\277;+tB3\357\300?\356\242\377\325\346\317\201\277jeF%\300;\240\277\3130\221a\366\213V?^\241\327i\355\270\225?\t?>\346_\177\265?+\232\371T\030\214\207?\230\2335\205\216\020\254\277\265x\223<\006\033\310?!\247W\360\232Q\262\277\007=\313\275\204&\214?\177\225c,=\203\303\277I\021\224K\334\220\256?\344\007\177s\252\205\262\277\377\225s\206\032r\264\277m<\273\027\2256\205?\322:!\237E\374\256?\214?{TF\034\302\277]\022\214\354\364\316\231\277\234\034\225\003\031\240\237?>t.\276$\265\252?}\0067svP\266?\347\340\ru\351\313\314\277\021M\374\242\345j\213?\255\252S\314\267{\225\277p?\263\022\320]\310?\335k\275\202_O\267?0X%\333\324\'\213?\035\220a\010\300\302\323\277\377\227\372\211\007\327\215\277\331\235!\271vO\257\277\022[?\034\3113\276?b\030\361\030\272\274\250\27763\340\266\240\374\303\277\024MQv\237 \242?C\270S\341\306\306\265\277\272_^R\304\022\230?\\\1774\0236\323\252\277./\311\024=\243\265?\251\022\306\035@\332\275\277\025\270]\323\201\332\261?\321\036\000\247<\335\230?\016\237L\323\303^\244\277h;[I\"<\263?\252-\364\332\t\313\244\277\251\031)\271\352\334\276\277*\301\272\360`i\244?3\3475\273^\220\304?`\273T]\364@\264?>\251\372\242\336\013\224?\024\360\240\033\271\336\304\277\250\365\010\322<\354s\277\352\274\256)\"\224\242?2\341\346\014\365\254\301?\002#\330\301wV\224?gNJ\251\301B\311?\027\355#,\007\244\265\277\370me\305\314\030\272?\204?\204\334p{\272\2778\030\025T\221\355\257?\253\253&\242\352s\224\277\023\304\032di\243\251\277\241Q\357l\356\331\275\277\025\027\014e\255Z\244\277\341\231\301*\342\203\245\2779\251\2279\206\225\250?\236\016\320\005\003\r\247?d\177\026\235~\036\315?\\P\327\205\235\227\245?6\r\246\024\027_\274?v\373\022\313\342\363\323\277\027y\3225[2\321\277~\342Og/c\246?C\030H\271\203\006\247\277\255\203s\013H\371\240?\317\230[Z\031yr?\262\346<\303w\353\264\277\203K\026\363\t\336\266\277|\265\335\265\351\304\254\277cM\016\333\347\'\235?TJm\336\033\261b\277\014\350R\370\177\372\314?\242nb\327%\257`\277\250\355\"\203\347\367\237\277\325\202$\323x\'\301?S\350Q\277\322f\315\277\221\'t\365\331\263\250?\276\301\313P&\250\202\277\024l\362x\250\301p?\020\031\246(\t\003\232?\315s\362 \331\373\227\277\205\270Mb\265)\252?\344<gu\255\016\265?\3717\340\230\020\276\227\277\276\037Z\235*\032\234\277\275\276\235l\332\325\262?\037P\020\355\351\345\230?r\236\325:LO\265\277\266\264@\034,\300\275?\227\031\203\356\266)\273?\345=\302\366\225t\204?\001\031`\211\004[\261?\242VO}\020b\222?Q\260\241\236\027\353\262\2778\030\247\0163\007\303?\307\277\220\025\263]\305?\333x\376\350\202\226\310?5\035\224v\353\325\241?\016P%\210XX\250\277\" &\253\363\215\254\277\376$Bw-\262\263\277\272e\310\256\266\300\264\277#\014\307\210\247\371\226?\347gN\003Y\317\314?\232S\342\344\245\372\243\277\200\030\264\264\305.m\277\264\311\222:\336\014\274\277\034\003\271NK\"\260\277\353B\357\353\275\311\244?%G]\323e6\303?FK\216\351\345L\271\277A\1775o\337\342\266\277\\\376\220\"\262\330\266\277\317\332\230\254\300w\315?\233L\224\347/\275\240?^\245{L60\300\277B\340S\313&b\300\277\027Dh\333\214\376\274?\0033\n&b\204\243\277\357\245\217\310V\376\207?\262\301>\036\001\320\267\2772\017F\252e\213M?\251\037\035?\361\'U\277\252p1\220F\344\234\277\037\317\204}\333\301\265?wr\005\231\311?\311\277\307\226+\"C\246\200?F\034b\372WV\300\277M\1778\365\306\035\267\277v\232\031\005\273\326\276\277^\177\033rd\242\247?j\3239\2676v\305?e\365\334\314i\237\254?f\004\266\016\262\241\256\277\263\312\270\000\214\321\266\277\220\343\035\236\336\325\302?m\253d\231.\265\251?B\340%^>\305\235\277d:\363[\004\t\305?\035\001h\246&\213\256?\307a8\304f\233\270?8\344{M\323B\312\277\250\007\366\203y\332\240?\033\270t\376.lz\277e6\241y\\I\272\277dP2o\206p\274?##\257\262\200\252\261?=`\375\020L\233\302?t\313\373\003\266\035\274\277+\'Sd\347z\307?\005\332\321\225O4\242\277\367{\302\312}@\263?\3525\300K\3232\301\277\342^\207?u4\223\277:3\334$f\300\230?\033\3557\315:\232\320?\217%j\2367V\263\2771\211\240\035\023\314\260\277\026=S\350\354\315\236?\211\327\345\316\334\026\273\277\201i9\030\367`\223?\311\320\000\236s\235\301?g \224W\300\033\320?~\251\236j\3261\261?5\"\206qQ\262\246?\t\310\002\232\327\311\274?\227\353M\307TN\275\277\336M\223\360\345\250\277\277\222v={Abv\277\350\237\003\020\006\r\307\277\201\213\336\004\tT\246?\374#L\207\265r\243?c(\371\271\263I\267?\020\002mJm\010\272?\340\n\314\313\354ev\277\247ZQ*k\210\322?/W\330\310c\327\272\277L,\253\374\376G\306\277#\245j\314R\333\272\277F\274\223\254\'\344\303\277\351\305z\374\315\013\273?\013\332\274<c\226z?\004\345\331\3508N\260\277\215\222\362G\322 \270?z^&+\014l\242\277\302\031\314I\365\277\303\277\327\000$\275a\302\321?r\177\036`\361?\314?\272A\322\032\035F\240\277Y\010\326\306\274\365\252?\343\371\241\220\214\005\263?<=\272\2325\206\300\277\367=x\020q{\303?\306\312\037`w\306\257\277\334\314E(\206\352\257?L\2531l\245\220\251?k\222\352\233\2240u?%\030\257\327\371\223\241\277SC\340\262\345\252\222\277\177\001\352{\234\237\241\277`\315\226Q\320\252\301\277\344\257\224\235\031R\266\277zg\2545\2673\214?\330\306\177\250v\262\267\277\217g\260\355}P\264?\314\274\014C\330\374\213?\021\034\242]\022\221\305\277\354x5V\364a\274?\253|\202O\315\245\240?\366<\230\330\352e\245?8[\214\222SD\305?\332\334H\372b\273\302?\260\255\243\352u/\230\2774\240\255\"\245z\316\277G\323\305\203\300\364\216?}:\300\226\266\023\301?i\316\277\245\022\016\241?_*\007\250\n\034\265\277j\0215\351Z\373\306\277\206N\006X\366\362\272?\214\220\276\220\023D\262?\317\241\255\0013\344\234\277#\017\003\374\\0\214\277\310\214`\201\342h\250\277T\241Q\3325\270\260\277\251U\322V=\255\237\277d\366\340\372\002\271\303\277\213\231\017\263:\206\227?^y\004\263\320\257\263?R9\027\"~\241\317\277\360K\240\251\005i\251\277B\374BD\004=\237?c\345/\361D\302\260?\326\240\271q\325\245\301\277\177\257\312\025JPZ\277~I\257\255\274\270\271\277\036{\323\265\005\240\304?\014a\215jE\234\221?N \255L\335\001\252\277\020\255\304`\225\315\324?\002_5\326.)\256\277\r\206\326\253y\344x\277\276\305\007\234]\316\301\277\272\314\223R5\223\266\277]\337\354SX\250\216\277\"c\202\222\033\237x?\021\315\211\027\032g\261?\026\307\331\362\006\215\272?\376~0\'\263\344\315\277$\321% \2237\257?_;\031QO\"\247\277uw\361`\376c\244\277\322\226\251M\341\333\240?ad\000lP\334\307\277\037\0029Iv\351\252\277P\202I.\201\321\241?\003#\276a\260@\321?\203\315E\3654\002\303\277\372\002F\307_\372{\277\024\017\025\251]\217\207?M\010&\233\250O\303\277q\223\267\177PsZ\277\353,(_\232H\275?\026\022\207n\337\262\311?\3779;K\260v\301?\323#v\237\225\376\273\277\261\320\210\313^?\266?\303\020\353\372:u\313\277\314\333\300\316\364O\275\277P\214\347\t\001\212\244?\345\266r\232\222\020\267\277\375\305iE\033\275\263\2778\277c\363r\201\223\277\3141\335\312\260\340\252\277\370\344P\003\\\202e?a\327\263\371\340\261\256\277\021\315R\335,&\237?\365\353k\203\234P\265?\013\0242\310\020\274\320\277h\240\300\217\261\352\221?l-lM\243\267\203?\201\265\245%#\336\260\277!.tuc\267\255?\323\303\367\312\274\376\261?\263\214@\320\270b\274?S\215pe\006\370V\277\0057#\364p\313\246\277\'e\347\024M[\214\277w\272s\'@J\305\277\201E\256\363B\220\234\277_N\322\322\241\345?\277\241\315\233\232I\241\303?\311\326\326\374\232\321\300\277\272\026\206B\323u}?\327R\273AE\342\267\277a\310&\376V\354\305?\213\251p\343%-\204?\210\325\177\034m0\250\277\315\321\312(v\317\247?\207\237c\263\230g\323\277\r\032D\302\035\361z?\332\332Y\313\364\031\246?\236\212\355e\237I\264?\t\307\310\272`\020{?\372\225\330\206\251\302\300?\365\342=\261\346\201\272?\313\255\007\014\254\342\210?}\246\355\225]\351\274\277\353\0341+x\323\224?\343<\264(Y\373\260\277wO\004\362\213\376\222?p\017J\211\224\006\233?\366\355?\317\3065\265\277\327&\253X\277\344\206\277\016\333\002r+<\177\2774]\215\213\3675\267?.\302\245RX\305\311\277\005\200\220\261\017\203\263\277T\324\354\025V,\266?\032\234\325^\267\330q\277\177\367\316z\322\025\245?\202\353=n\355\345\260?\\\342\255\'\223^\246?\230T\337\273\260\271\303?\021\262\272o\250\027\217?\030d\220\216&\266\275\277\2325\212.n\266\317\277o\254V\201\337\340\255?\355{E6\245\230j?\007\327\242D\373\332\263?\337\254s\023v@\216\277N\227B\263C\323\276\277\303V\256x\277\337\310\277\335\216\351_b\010\265?C\363\277\3715\016\260\2777.\204\355\212\320\267\277\235\302\027\246\353\321\303?5\224\234\241sW\262?s\3247\201\001\"\275\277\320\361\210\347\240\340\255\277\333\t\200\241f\310\325\277\240>\000;\2523\253\277r\232\261\261,\262`\277(q<\n6\337\261\277\313x\035\3614\034\302?\215@1\266~\023\252?\2752\344\270\364\260\277?\3458l\263,\241\230?\377\006\006\3122O\231?A\t\245u\366\246\237\277\337\334}lR5\305\277\341\266\371\223\312\265\250?\340x:>w,\236?\246\304qF\230X\301?n\262*\206+\345\250?m\207\311\232F\360\245?\256\235!\202\307\275p?\355\036;\037\210\263\300\277\334\261\374\"\213^\311\277\335\346\335I\212\333\304?\222\353\311\242\333\037\262\277u\341\275\350\327\305\231\277\027\"\236$\036\005\240\277\322h\016\207O,\214?\266\274\322J\255!|\277\240\262\032\25559\274\277I\311\000\362\350\357\306?V\035\315\316\211\177\303?\374\036su\r,\275?\360\024;\003S\007\263?\022@\251\2378!\247\277\204\234@\313\330z\306\277iq\345\2128J\311\277V~\330\037\037(\311?:\'\212%U\234\274\277\275\235]\353\\\222\251\277\2421\274\250\304\344\310?7\222\333\322w\266\223?\263a\005e\372-\215?~\312\252k\365\306\267?\214\211\013\235\376\217\254\277\252\177\313\273?\220\226?\252\265\223\377\031|\272?\317\337\207\364\254\215\256?\342\002\232\321\026\270\273\277Hk,\335\006\253\262?i%S\310\'\034\262\277!s\270\342\237\210\251?\224\363.V!I\300?\237\215\340\350E\222~?\3175\033\324\273(\334\277\376h\024@\'\271\261\277\240\261\330\363\224\354\254\2770\022 }oJ\262\277 $\371]\363\372\243?\214\037\260\367\253x\272?\017f:t\326\025\266\277\240O\340j\223o\320?+\212\327\315\216\307\226?\024\276\230\034\371N\257\277\022\205V\033\252\037\217\277\321\206a\367\242\300\317\277\013Q\241\341D\r\241\277?\215\364\003)\334\277\277\254\205\377\322\360\227\267?;\347\253\303T\017\271\277K\177mU\037\337\270\277$\034&\214\002\037\243\277CGnW\007\375\270\277\262`>\322\272\350\262?\333\312\241%h-\314\277\263\276\217O\005\300\306?\211\347\315\325\242]\215\277\277\353\323\353G\212\240\277\277\242\0335`\363\311\277[7\304\013b\244\233?\224\354u\355\033\205l?\330\215{\3152\233\266\277\256\004\275>\350\033\310?R\034\266e\tf\276?\317\211\275\232\206\323\253\277\3746H\242Y\017\315?\'$\372\026V(\241\277Q#$\345\036a\271\277\307\024n\242\234\273\315\277\317\202\0004E\212\306\277\030\001\260@\334N\242?V\'\013>\366\254\210\277\207\265\325G\315>\313?,#\014A@\327\315?\332{S\035\335\227\202\277+>E\313~-\302\277\203\324yv2\021\250?\264\374\333\305\267%\251\277ilAe\336\264\263\277\033S+\356\033\216\277?]z)\203\233\321\275?\306\344\363\024\310\252\273?\376\3634\002+\313\306\277\212d\320DB`\275\277\2764\017h\355?\227\277\340\227p9\246\352r?@\260\332\276\271&\272?\300/x>\030\n\305\277\3508\346$\023\272\264?\364b\271S\332\006\263\277R\025\313I,\023\317\277\375\252\031\365?\275\204\277\214\033\037\372\371\013\262?\224w\226\3751C\315?\237DM\n\205\271\303\277\346Q\010\376\347+\232\277\033\2076\323L\271\243?\352_2\355u\013\230\277\334PU\034\377\274\243\277YS\226y\307\266\255?\342\341\231\rg\370\245\277\273\332\325\215$|\201?Jf-u\250,\260\277\206+\301\325V\332\243?\212\007\255\013\343\320\262?\261kBn\351|\264?j\337\007\354\241e\262\277\341Xp\347`\262\243?\033\03329\203\014\221?Htxn\202\223\276\277\003\240\253\2515\334~?\3628\234\242\224\233\254\277\3462\223\377>N\305?i\365\035\007\301\230\265?\014\204-L]v\224?U\203\324\245\362J\206\277\306/\240\312AF\212?\000\272\375\320\241\010\271\277\275\032\304\232\302\315\321\277\246A\010\373\306\035\262\277\241\245\307A\235H\262\277I\372\317L\277\002\265\277Nh\200,\023\265\266?\212\362\"\373c\261\312?\267\272m`\362\367\312\277\177\335\260\371j\346\305\277\3516I\265\312\363\221\277\322\375\010\201\014\211\313\277x\243\2019\020\274\311?\340\360\202\276>\241\252\277\2117C\277:w\305\277B&\252\\\205\247y\277\371\310\261|\344N\243?\260\220\246\001\251[\261?\357\375\267\345U7\257?\262r\010\rH`\301?7\014\201l\351\223\264?\367\246\363x\347@\247\277\224\023\242\273@\225j?[\036\316\365\236C\306?\256\322\214\236\223\201\264\277\365hD/W\304\242\277\261|\272\274\341\375\257\277\355QX\272C2\254\277\377\217\r\314\306\334d?\007\226^\230%I\225\277|\036\357+\034w\311?N\207\355\213r\030\274\277\226\274\025\327\263u\224\277\324B2~V\206\301\277\272\334\203D\235\255\307\277\262\204\206\374*\002\267?\202\036~~\341Q`?\302>@\267\365\267\231?lZn#9\370\250\277\2627\236\336\243B\276\277\271\002y\267\305\266\255\277 j\006HY\367\247\277\003s\026\313\036\357\234\277\323\323\t\277b.\276\277\034?>\232kk\322?\271\311y\233\373\005\207?5qm\275~\361\254?vj\000\016\331_\223?S\351(\037\230y;\277\262M\026x\276\177\306\277\223\375\343\217\004\310\276\277\367Nz\336\001\026\310\277\004\274\212\256\"w\225\277\177\277\365\354\251A\264?Z\r 8\377\311\227?1\227n\206\031\013u\277\221\247y7G\253\303?\213\215\007ib.\215?)\206A V\246\203\277Q\177_vuN\260?=\360.\t\233p\317?\254>\343\316k\224\270?\026\231\243\220\322\260\263\277\203\266\375\273 \373\305\277*7\265F\360>`?(\221\214=\255\276{\277\301[\322\323\237\224\232?)\376*r\0323Q?\217\261\230d\366<\304?\223\006\201\373\216\252\300?\026\005\017B \346\252\277\035R\252\r\204\227\273\277\231hDE\337\320\265?\313\272X\332\001\264f\277\327\216\004\212\201\205\250\277X}M\325\023\033\257?\333\013\272\007\301z\265\277/\014\357f3\304\272?\252\267f\321sV\311\277XY~\250\205\005\322\277\211\242\005\260\213\262\246\277J\247y\nGP\204?\310!\n\2624k\310?\221\330\272\217 \301\236\277\320\347\256\313\314\200\246\277C!\035S\232`\301\277\313\035p\026\256\253\275\277-\\\r\024\350`\212?X\314\361\352\242\346\314\277\034\202yEL\312\220\277\353\223\227\313b\334\222?FV\217\222x\032\267?z8\217\330\253\366\251\277\301\t\030\010\333\255\275?\363?b\364\341\244\243\277\203\3117<\214\333\240?,\274,-\201P\254\277|oA/75\266\277A{\215V\235\030\255\277)\014\026p\222\256\272?\340\013\336\240\003\237\304\277\250\227N\350:\342\225\277;\222\332\246\335\266\274?n\342N\006\014V\267?w\232\255~\031\202\211?\220}\022\275\rz\201?\267\000`\373\313V\251\277E\321CC[|\276\277A,%\360f/\202\277\022\330\236A?\031\276?\311\"\216\010\301=\306\277\004\230\240\001\356t\266?\\#4\254\027\315\254\277 \017\205.8\007\234?v\305\037\317\312\021\320\277\277p\314\255\224\304\267?\022\311\354L\360\243\274\277n\3349\247Z\227\301\277)\214h\334m>\240\277\005H\307/\217\246n?\353\231\000\315\024\254\302\277\306\025_\263\037*\320?aN\252\245{\336\256?\372\260\205\261R\253\222?\r\276\256|\314\276\245?\0059\257\346\027\350\263\277\334\016z\201(\350\200\277\023\310A\177\366\002\241\277\033\323\003\037V\206k?j\312S\234RA\244?\317\rH\264\271\030\253?ZO\020F\262\301\253\277d\036\302Jv@\271\2779Du\242&\035{?m\261\315\310\026N\316?\337\341\025d\224q\304\277\320m\342\377\233\002\216?\202\217\340lP\225\277\277\210\261\233?{}\263?\255\273\034z\213q\303?Y\354P\343p\266\261?\037\202wJy\302\227\277:\232\002\364\233o\307?\305\247\276\000\276\212\300\277\352\265>\032*\202\253?\3740\013r\331#\222\277\026p\002\232\006\n\265\277d%3\271\273\017\243\277\3269Hd\372f\264?\223\010\366ux\235\302?|\352\213\311\261\275\255\277\331\207\247\211\t\210\274\277\3216!\314Y\346\220?\220\203\365\253\241.\221\277\310\014\024\360\032I\300?NC{\376L\255\243\277\275\302q\275\304\276\306\277\263\301\364\357\243\232\216?\322\3732\264\3332Z\277O\314 \322\317\007\225?\"]l\177\024\331\313?S\314\320T\355\217\247?@\250?|\317\024\260?0x[X.\030\311\277\003\2515\257\005M\246?\257\265\017\236\036D\300\277\342\256\201\203\256\317\314?\335+\216\211\203\244\264? \333\261\321p\002\240?\324\307\327r\265M\240\277\217\016\017Q\032)\256\277l\333\316\355\370\233\300?B\336;\242N\346\247\277rs\313\253.k\261\277\241\252\266\017!f\261\277\337\376\353\t\362\206\242\277k\372b\353\372\254\314?K?\0161\035m\325\277]\353f\370\255\250k\277\324\034\300+\"\346\246?[\311e\t\265m\275\277\253\261o\346\2729\265?\032\250\0263\003\034\251\277q>\014W\010h\200\277\245\032>\031i\242\265?\000n>9\355\320\246?~\324\225\251\214d\272?\262#\006!\010\223\303\277\245\340\322&\251\033\263?#0\217\3352\350\221\277\260\326\373\253\177;\325\277\237\377&n~{R\277|\010\224g\357T\256?@<\260q\355\361\250\277\266HG\256HI\232?k\232\355i\227\211\320\277\236\360BZ\257i\277?\325\327;\031\377\240\200\277\244\033(\343&\214\312\277\271i\236\361\346\324\272?\\!\005\322E\003\265\277m\\\242\027\201j\260?x\342-\343q%\230\277\205\003[f!_\273\277\374\363\262[\365\216\262\277\302u\222\003\257\214\250?\365\366&\333 \373\272?WUH\2503\242\245?\007\327\025G\366{\300?}\303\\\347~\261\212\277\033\246\270\201\340+\275?\\\233\306x\245\315g\277\200\340\216\345\355\350\261\277\232#\202/\340n\237?09\245\\\0174\245?/\0130\3619[\266\277\373\316#e\363\363\225\277\255\327\254\271G\312\260?\252\356\356k\263+\260?Op\240\206_\225\305?\305|\332Cz\033\223\277(GC\3061\257-\277\207\301\213\006QA\304\2779\r\031*n\336\244?\3670_\0215K\244?Q9?\000H\272\253\277\313\272\214\211A\221\272\277\014\032\263\224\262({\277\325D\355)H!\246?\367n\262~=\221\277?\363W\341\302v>\254\277\0359\312i;\303\201\277n\177\270|\337\022\262?:)\323\252\356 n?B~\303\3408\365\264?\240\036{\323\370\214\244\277\226(74\270Q\313\277;\0060\316r\242\260\277\362V\366\254\375\214\300\277\230\372~\036\377r\267\277\302p\255\0109;\273?M\000\253\215k\316\233?\245c\242\246\022\037\244?\315E^\037p\307\323?\326\252l\250\000\270\264?i7\373\331RJ\251?\024R\035,\tq\301\277Y\347\001\301\245\004\267\277\201\327y\204l\375z\277\271\236\272\235\366(\304\2778Z\377\016x\371\202\277\260m\333\257\226\212\264\277\323\263\377\205\217\255\221?W\271\215$\214F\252\277\t\377\263\302\263\177\321?\306,\242\257\300\007\276\277\256\302\315,\233Y\254\277N\332\350\006\tt\324\277\036\302f\254\t\306\235\277\375&\007\355\231\013\306?\273\377\355\251\002\225\302\277k\324o\024L\250\245?\321\340\300\034\026\027\221\277\260Y\007kA\213\265?\352\001\215\242\343x\211?z$\032C\230\231\302\277\022\004\024\2229I)\277\257Tg\356\371\346\263\277W\212-\230\372M\320?s\271\255\307;\340\241\277\341\224\341\333B\312\306?\213-\272\005\245\200\230\277?\367\302z\001$\300\277w\023lEFt\232?\357\022h\347\t\231\266?\001\203lS\351\217\277?\345\276\274\235X\003\207\277\315\026\237\364:Q\220?\376\363\263\211\341\345\307?a\021}\337\331\272\304\2773\247-\354\215\311\255\277\003gD_\014\302\247\277\210\001\307\005t\241\255?P\223\341&\241(\220\277< `B\034\222\260\277\224\261\306\212\333\344\273?\311A\313\336u\234\260?8\315\235%\214\233\237?d\274\330\226\334R\270\277m9\301W\326\362\267\277g\302\3574\2760\270\277\227,\264.\3574\310?Q\037\333\364\274C\242\277\317~\317\032-\214\215\277\002>\001\217\373#\221?U\205\010\227\376\360x?\232r\362\203\024\007W?\370Y\246\355\332\346\216?~\265\243\000\227\227\305\277\325\226\266\206\223\364\306\277\313\006\nwXD\274?\250*M\250^hy?^e\276\266\273\235\245?\262\267f\265\312(\267\277\033\374#x\364\010\254\277<t\360\014G\037\264\277+r\362ke\202\241?\274\277\273@\371\201\311\277\330G\306\226\203a\267?\340\3765\244\210M\273\277\310J\3714f\205\267\277\225_\333\311v(\215?\356\362{&\267H\261?\302\257\241\310\241p\200\277\310)\361MK\267\270\277Y\267Z:\207@\302?\345A$\274\352\213\236?\336\'\000Q\326\021\321\277\352{J\207\017\322\231\277\356\241\344G,#\273?\201i\353\3255/\215?\303T\335K_\023{?\260|\336\330\354\303r?\003\342l\214~\004\225\277*\344\221\260\205\303\305?\3043\236\227\035u\203?\to\370\350\035\333\207\277^s\2117\202\033\177?#\260\245\356i8\261?\246\346\225\177W\321\301\277\010r\253\210\306i\320\277\032B\250(\353t\212?@<\302\243\354t\257?P\226L\312\274?\300?]\270An`\002\330?\311\262\276NJE\202\277\177Wvwa\273\272?\032\275&\214sp\247\277kS\316\177\214&\303\277r~{vi\324\240?\301n\215\316%X\212?}%\243+\352\227\303\277\347]\334\n\"\220\251?\317%\003Z\243\t\321?y\317\"\352\264-\263?\272\007;w- \327\277\305)\255\303s\230\263\277\022\330-\335\323\025\223\277\032\277I~\026\323\203\277\017bN\323\323M\217?\336@\027\222\227\371\266?\350w\316&F\342\261\277\245\303re\016\215\242?\345a\233\031R\200\231\277?N\257\304\341\346\272?\236V^<\225l\262?\306_\267O\004b\226\277>\231\320\220\360\273\227?CN\375 T\223\234\2771\016\371\337ci\271\277\022\337E\351\235p\232?\215uw\370Gp\246\277\302\247\221\363\327\321\272\277}\"\267\320f\017w?\036` d\303z\276\277\006\320h\267\014!\252\277\326\272`\025\034w\301\277m\302%\022\363\021\270?\374\214\332\324B\302\260?3q\213t\224I}?\302\256\266\244\260\263\263?\267\034\234CW%\226?u=\353\3746\014\261?\242\212\3408\351\216\304\277LtD\265\247N\220?K\340\211\031})\253?\353\225\241\253\n\"\252?\325G\245\373\030\223\303?\321\255IaM\307\301?<x\002^k\022\274?\272\016\207\311\251]\201\277\346\357q\032k\251\261?Yi\251\231\035\'\271\277n\263\217e\203i\223\2772\303Ve\347\002\242\277\372iO\270J\202\233?(\267%\225\311T\253\277\'\276{\224\202|\272?v\220\214Mt3\251?_:!\314r\273\205?3C.\321\305\037\266?\rP\360\321\307\325\306\277\226\021\217;\314\362_?\213^#\232MO\305?\262\227\250\374\322\334\024\277\274\207\357Q\317\271\255?\364\232]\256\325y\262?\223\320\276]\256\271\252?F^1\335\031e\226\277\333v\320\364\035\304\261?\332\246\334\014\203S\204\277\372N\177\356Q\326\305\277\324)\240L\212u\303\277|\341\331\025Bx\246?\374\025\215h.\257T?\024\255\036\202\342\324\245\277\245\306\374\207mV\256?.\226\362[\202r\265\2770\250\266:\201j\306?\246\232\345\343\304\353\301\277\335\2604\314\032\207\226\277\275\342a8\036\n\320\277\273\231\351f\372\367\303\277\336\3036\243\333Vk?\202\273\254mg\343\304?\202\224\334i2L\261\277\306@\025\332\203\240\224\277\346e\304QJ\316\255?\355?[\026*\333\262\277\\\370\335\305\377\325\261?<y\345f\262\\\270\277\263!w\263\273_\235?UD\355\022\354\\\315?9Iv\226\243\036\244?\221d5\372}X\255?\345\362\220\247<\331\302\277\201\r\210$\334\357\244\277\271\235\340%\'\003\263?\341\347\312\035s\274\270?)K|?{\000\267\277\034x^\321\276\371\200?\260Q\023A\031&\304\277\273\351\307\316V\270\267?!\n\374\026\026\276\300\277\233\305\177\267 T^?\322>\303X\305\001\262?-\223\230\n\376\244\303\277\355\033\330\275K\224\231\277\2416`\3763\000\303\277\365g\373\310>\250\304?\027\326@\360\371\222\252\277\274\371\321lY\303\301\277/\261\025\317\274\251\270\277\360\222%z\017\036\243?\336\277\004\270,h\264?\034\255\361k\023J\217\277\267\201\272\323\362\216\305?\324\005\332\004\251\210\263?\324\204;\230Py\270?\337\251\375\323\360F\257\277O\3237\322Q\024\231?\276U\266\327\266\244\267?\022\271\325X\2503\311\277\231\331\243\367\0223\271?\227\343\262\333[\017\245\277\275\3639\007}\'\303\277Q\206\240\321\005\274\240?\300\223\261\245\315\333\320?\367\024*V\034\263\215\2776\2123\356I2\302?\264~\2550\201\325\320?\324\341\001\367s\316\261?\260\no\234\227S1\277\252n[-\217\325\276?\265\014t2\300\346\271?z\201\2734[\273\237?\346T\304\0219\377\250\277\263\272\257:J\263\254?\3061\201\261-1\241\277\021\322\370\276kQ\304\277?#\010R:}\315?H\235\304w\013C\323\277\225+\330_\363\252\246\277T\033\262\301u\345\255?\371\243\345$\370\224\303?C\327\225_\367_\271\277\"\261\354\374<\313\250?\025\262\256Z\250V\247?\377W\024o\223E\273\277z\363\361\003\367\245\207?\211$\333\257QJ\276?E3\"h\342\003\233?\007\000\370\202\244\273\306?\0264\026\327)\310\200\277D\234\033\347\325\032\320?\037B\341\033\2226\315\277\020\373\260\306\205\210\244\277Q \353y\305\202\217\277\274\343t\300%u\322\277Pn\213e\'\260\237\277V\202l\333a\312\250?\004j\024\315EH\226?\n\016\002~\205I\244\277x\333S\375\367z\240\277\270d\t\276\006\277\200?$\341\005\322\273Wt\277{\3164\242O\245\243?K\225c\3106\206\260?r\nc[\204+\300\277)\351\001{\375-\256?\037\271\314Kxy\244?\216@\374\201W\001\266?\035\024\201\276\212\313\300\277\000k\337i\225A\306?b\302\022F\221\351\267?&\207\303\214\362K\313\277\002h\033\261\230\347\302?LB\251l8\255\221?\200\245\266u\346\205t\277O\351\257ho\231\265\277\374\215\177.\363Z\260\277\272\2647\260@\317\236?X\304\275-\250D\275\277C8:I\233\305\261?\\K\331\005{\202\272?d\216\331\336\324\177\310?\322E\334Z\235\354\277?\367\216\252\3175\305\243\277\351\277\247\217\002\251\273\277\265\215\362\267\034I\200\277\254-\235\355\233\300\273?8n4|\023\326\215?\330T\"\016\333k\266?z\341\370y\307N\327\277ni\372\334\025\211\277\277\2458\372\337\311A\243?\331\365s\334\276\320\265\277\022\321[\0061\236\265\277A:lT-\250\200\2774\273Y\251L-\245?\364))\272\360\003\235?\0331\341\275C{\266?\331\325\277>e\000\274\277\302\000\255\030\310,_\277\344\223bh\370U\207?~\200\217\303\323V\277\277\035\252*\323\017\244\222\277v)\252HV6\326\277\303\211XpxB\250?\342\346\236\021\013\214u\277Q\357W4:\231\240?\241\263>ye\226\270\277\273O\305 &\356\243?\270I\326mV\026\223\277\315e\363m9S\275?\022U\035\377B@\264\277\200\024\250\345\262\r\240?\204o\223\245%\234\303\277\006R{YB\314\306\2770\217\273\034B\246\222\277W\345JW\272\207\210\277V\356]$\341B\274\277\344P\344e\'\310B\277TmY\014\270B\240?\240S\354\323\332C\242?\2168F;\357\363\240?a\347\355\375\022s\231\277\r:\307D\314\200\243\277\351g\267}\021\377\301\277\303\220\343&.\232\320?u\031h\244\th\247?\t\351H\003\004h\255?\315\206\337\221\357X\271?Q^OyZ\331\263?,\036\030a\364J\207\277\335\001d\362 \315\217\277\017C0\246\363\367\255?\305\020 \260\231O\242\277{\236\265\230\235\272u?(`\244M\361\370\275\277\265\014o{l\275\220?-\231\314\331\036A\260\277\t\306\366\3106\006\211\2772\335\223:8%\201?\343\323\017cn0\272?\000y\233\036\347\334\300\277N\001\200<l8\314\277\201b\265\253\305\233\262?\177\372\366\365\326\211l\277\323\036Q\"s^\263?\016t\353\210\023l\266?\247\236\220\256\233[\234?\326~\306\226&\260\302?\341=7\374\351Y\262\277zg\310\263\3368\215?\304\226\205\0077\232\302\277\313\2010\017>\222\212\277!\227\211\300Y\370\221?\376s\207\226i0\253\277`\315\225_\324\323\267?)br\224\201\372\227?\325R\250+\220@\262\277\241\371\020M\276`\244\277\353\323;$\272b\304?\022Fky\271\274\314?\372\315\007\234\3452\300\277\247\215r\237k?\322?\265]*~\220{\265\277KB\227r\037\226\263\277\020\263\320\274zG\274\277#\211\334\221\2120\320?\214\267\030\274E\030\314\277Jm\022\306\030\274\313\277\367\273\375\350\210\014\236?\370\224\346\2116\234\250?\006\362eY\2343\251\277p8\2776:c\221?m\246\000\343\357\252\311?\257g\'\037\264\236\214?\351\333\2562\253x\214?\217\245m\374\314\373\234\277\325k\271p\253\013\253\2778\235\321\337}T\265\277\025aY\021\335\000\301?\335q\302\3262P\264?gagQ\243\231\210\277\247\367\3478\347\263\242\277`\311\3705_\204\210?\203\274\341\010\273n\264?\244\247f\300X\235\304\277\362r\207\223t\225\274\277\216P\206\253\256\033\277\277%\257\302@\037\020\277\277+\220\025\014\007\317\222\277]\217\274\340H}\301?\363\017\272E\3256\327?\006TB0\220Y\300\277\210\310\253\275\203\211`\2776\302\257\000O\200\243?\201\230\274<\2165\262\277\276\365\335\213\355\241{?\242\3306\030.\214\271\277[\366\352\013\'P\214\277\001\237&\345/\326\273?lJ^\014\202\014\235?\216!\253\217\0042\311?\361\337\206\224\235\343\274?\214\177\030J2>\221?{}\262?A\010\207?\'\024\005N#6\243?\325\001\316\267\356\234\266\277\007j\020\313\003S\312\277\240/\014\205\352f\235\277\032qKrqL\270\277\331\033\2041\355A\302?\3064\260M\332\246\265?\232/\2472-\310\306\277\353\002\314\rR\333\231?\rK_\220\031\234\266\277\244\233\260\3210\265\177\277\337|s\362\334>\302?\261\317\356i\231Qr?\361\217q\022-\366\255\2773*\322\027\270&\301?\211\254\360]g3\300?a}\341\342#\343\245\277\340\215-\305\212\032\225\277{=3\361\265\361\302?\013\236daTm\216?\327\024N\360\345\275\227\277r\347\033]\324\027\244?O\370\037k+\244\234\277\341R\371\225\006\223\230\277nK\022)=X\246\277\277]\234\204\013\235\305\277\357\233\2530\337\274\256?D\250h\310vH\306\277tV\207\352\024\320\263?\266I$\364\2450\232?\177-.8\220u\307?Q\230p\030\342\333\245\277\232\330A\232\347\034\301?\034\275\017\233V\205\300\277A\017h\357\037\022\271\277S\005s\343\nP\265\277S\006^\234-\021\307\277|uG\265\226\301\302?\367\r\026\243\360\210\323\277y\261\375\016[\237\300\277\365\010\005\371\332\263\222\277{cUc\3743\304?;\216e\363(#\324?c9`\204\377Z\275?c\203JS\033W\240?<j\210\227\271\307\272?\2407\002+\230\031\273\2775o\325\344ur\300\277\340La\275Ro\220\277\375\371\300\306\220\027\303?\350\035\366sC\252\262\277\224\312\333E\206\344j?\031f`\2474\\\266\277\307N\224)!\241\313\277\314\243\357\345\365\355\305?\336\320\337G\207b\311?\331UNV\247\345\243\277\303D%#rm\275\277[.D\227O\217\277\277H\033\323;)\254\312\277!_-\372I\\\246\277Lf\211\310\331\305\266\277\024\037[\261\000\235\242\277R\324\341\2426P\274?\301\\d\263h\243\240?|\333z\203\222\275\237?\3574?\370\330\211\266?\302p\316+\365\030\242?\025\264\272\256_\202\272\277\210\310\222\377K\371\315?x\362\236\345C1\302\277\016\322\224y\355\245e?#|\201F\374\331\255?S~\"\2466\242e?\370\374\252\034\006\330\250?\237D\226\025,)r\277K\316g7\232\376\225?\021,0?\231~\305?\205_9>\235\177\241?N\376\335\331\345\037\230\277F\237@z5\312\320\277\230.\305\271\007\007\271\277\342\252$\205)\033\234\277m9\006s\222\245\213\277\213\345\206\347\376\215\266?{W\377\270\304\036\251?/ZT\024>\330\202?%\365\362\243\345\364\303?U*\033\371\224g\250?\013\263\320\200\337\323\275?O\345(d\254\366\273\277\030\016>\347\360r\270\277\265s\367\246\362\330\241?P\276$\374\303\225\266\277\257[\3510\361\363\276?u\344\246\325\277\262\206\277>\325==-\345\220\2778\017\377lAH\300\277\244\262\246\276\330\000\315?\302\242i\244t\272\235?\273_\234T\250\317\266?\321\253\352\020\242(\233?\212|~4`\232N?5z\367})r\254\277a\256\200\266\314Qt\277\224y\210\244\r\336\262\277\226\315\300o\205\260\205\277\321\210\233E0.\307?\341\010X\213\001\005\200\277\013\200Sy]\341\253?S\007\273S\002\014I?\277\273\267\357h0\301?iN\221-\016\341\314?c\252\271Y\277\177\216\2779\341D\366\366\024\211\277\347\241M,\377\356\301\277\2201\315\274\300\327\300?\3079dv\211\352\202\277\245\021\263\342\0258\245\277\245/\371uC\321\306?\032\331\232(\344^\225\277\003P\301\301\354\364\231\277k-\242\343\237\374\236\277:~\224t\367h\225?\037\207*\031\256\023\244?\252\013\251|\265&\301\277\245\377.st\232\302?\036\335\343\r\335\252\252?k\224#\365\200\277\244\277\331\355\301\025d\350\313?3\206\272{\303\235\206?<\242\013\217t,\241?\202\325\306\365\361\021\255\277\330\332z.\375\302\206\277\214\220p*\356.\265\277\264n\327\t\236\215\225\277\221F\032Y\321z\221?\300\337)(\'\370\247\277.\301\250\354\267\302e?\245\316k\373\324\217\310?\207K\200ub\034\325\277\'n\026\023\337\265\207\277aE\236DW\257\264\277A<@\251\310\211\263? w\244\2119m\255?\"\204iy\342\213\201\277\343O\247\353\270\265\211\277v\'4V\322-\240\277u6\246p\006\227\300\277m\032\256\362\354U\224?\246y\371\244\313\230\264?$\262\325\351\3345\306?\201\025\311\216\2573\222?\370\207\212F\206f\310\277\274\366\261\264\352{\263?d\263\3355\216\236\244\277d\036#^\302\330\216\277q4jh\005i\247\277R=>\351\027\035X\277\222.,^\256\303~?\237$\360S\310\242\270?-\303uf`\376\233?v)\3542\352\343\221?h\\\t\264y\246\260\277*\260\0237\366\231\271?3$q9\206q\274?QKK\371}\340\303?\312\307\321\237\337a\267\277\307\373S\214\234\366\274?\'\241r\213\360\341\264\277R\302\360\372\304>\226\277\246\320\206\302\247O\301\277\332\306\200:\320\326\301\277\371\005\371\363\026\037\311?\004\226B\003G\326\252?\241TX\021\344\206\321?\246\346\023\007v\215\245?\026\200U\312K\035\300?\222\344\341\007i\322\316\277\214\020W\215\325\342\250\277\032\023\347\373<\353\252\277\312\273\216\374h@\266?j1\253\246\016\266\305\277\203\024\303y\376\025\262?L\375\010\325{h\310\277\253\264#u\250\223\312?x\320\0363\3013\271\277\363\236\365\352X\032\243?\354a(\001\242\340\246\277\032\232\231\334\001s\300?W}\214\014\333?\262\277\267\261\377\014\246Ve?T\301T\"\330\234\237?d1A\376\341q\203\277+\277\027\231\2223\271?\313/\276}\";\257\277u\240M*5\267\331\277\371\\\365\340\311]\243?\334\014Kq\204\270\256\277\005\020G\026\326\031\300\277\252\250\030\303\226\372\265\277+bw\205\244Cg\277\303\200\3306`\267\225?\361\005\260~j\032\226\277k\322\301\264&\005\237?DW\372.z\374\217\277\361\320\030b\250OG\277= \315\221\206%\303?n\312\200\032VN\226\277&f\336&c\233\235\277\212\274\301\273\237\037\227?\036Q!\340\222\304o?\"9j[E\341\225\277n\362h\352\262\277\267\277\361\303M\013`\362\262?\363WH[\277:\267\277\271\354TK\231/\227?\334)\317\270\241a\270?\017v\3240\220\r\254?v\362pT@\277\240\277\341\205\310\373\230\370\220?\373\311Z\360\230u\256?\016\206TEoH\254\277\304\256\223$E\331\266?\302\206\203L\000]H?u\320@\010\016\343\246?i\362\235\270\tZ\272\277\345R\020\312\361\316^\277\255\266g\271\017\n\312?\340~R\227iQ\247\277\024\346\202\030\325\373\224?\251\364\230:\277\256x\2777\315g\332\326\361\270?\014\340\004\207j\347u\277\030Nm\254\333m\324\277\320d5\022S\026\242\277\322\351\017c\030\272\206\277\211H\nS>\310\307?\030\256\336\030\001\235\302?\364\252\211\324F\020\300\277\024\272\366b\t\254\306?\245\001+|\311\332\247\277\273\213O\237\006\013\267\277v\304\205g\214\325\211\277\326\254\031\340\216\236\240\277\246q\\j\n\275\273?y5\316;:\030\223?\355n[\333\305W\300?r8&\007\253:\245?\327\223\245\325\270\310\231\277\252\3133\031e\237\276?\246\332\324\"\244\327\242\277\323\237\254\343\246\274\324\277W\302\3038\'\314{?\301\355\271\366\273%\265\277\325\010>^\307a\255\277\025\t\223\242&\212\302?e\3758\2228\275\220\277A\332\3552\207\217\304?2n\242\022\267\261\322?\303jwV^\275\264\277\260\033\030\222\263\016\304?\014\263\211\"\351<\303\277^<\315/\234\266\273\277r\366N\n\377T\215?\316D\3164*\374\271\277\275B\303`\214nV?\354\345\232 \347\026\267?A\324\226%tO\252\277\273\325l\r\363!\264\277\030\356\322o\204E\304?I%Y\010\006\235\251?p\t\013):t\237\277\353m\340\266i/\312\277c\361Y\305\203?\235?r\003x\257\343\320\213\277\366K0\356\335\375\314\277\245\333\2531In\262?\036\003c\215\340,\234\277rYrR\216\266\301?\317\254\005\000\032Q\315?J\374i\312\334\326\275\277[\321|\237iA\247?p\361\353\345\nH\311?\345\332\033*\272%\313\277\322W\344\025D\353\227?\320+i\034\221$\247?\330\345\007q\373|\267\277\231\316b%p\320\253?\321\024\002\365\233\221\264?\'\377\000\356v\026\302\277j\t\267\271\257\014\264?\323\3122\361E\312\306?\207M\326\353G\221\270\277~\215\033\335@\217\312?9\300\307\374\303\362\305\277w\211\250%\221\020\266\277\335}\374z\275y\272\277\"\347y\275p\031\250\277x\335\027SX\002\247?0\273\034PN\211\313\277^\310\024\310\300\320\221\277w\227\240vD\002\224?C\201\322\224q\327\300\277t\016\2676\032\265\312?\256\002\212\355)o\273\277mDH\357\311N\220?9\346q\364#\277k?\026\361\366Bf\256\245?>\253\02253\221\262?\241\277`4\177\342\256?7x\356\271g\237\305??\314\032e\227\021\236?A\\\247\216T\270\237\277\223\245edf\314\251\277\2748-\330\354\010\256?Y\372WI/w\263\277\330:P\324\305u\271?l[&\033e\320\247?\267\024H\211\213U\262?\360{\001Q\332%\266\277iO?\023E\035t?Rx\017/\211\264\325?\231<\030\302W\014\264?\002\032\272J\366\'\307\277\257\265\325\035E\211\227?[G\261\032\2509\301\277\007\333.\364\201\013\214\277m\250J4l_\242\277\354\211\233*\324\037T?T\n\373\355]F\257\277\224Q!\223\376\347\276?\234\261\375\322\257\235\300?\326\372[\203\237]r\277nn\351\274\230\225\222?\267\323\305\266\377N\251\277w=5\274\005\254\253\277a1(\000\332\272b?b\347\315zj#\273?\0048\213H\243F\233\277G,\237U8\013\250\277\254\304\216\337\376!s\277\321\210\354\257e\023\253?n$>\361\201\272\307?SU~\232\264\353[\277\264\267\216\r\316\tr?\240W9\220D=\307\277\272\002\341\231\373G\252\277\374\0067\303\372g\273?\177\014\211Ex\025\251\277/\037{\362\370\211\272\277\236s\2021{U\255\277\262K\240\026Z4\235\277\021|\262\230<y\264\277h[\005X!\312\216?d\272\\\310!\211\260\277\203\004Nn\317\244\250?r\330\244\\\246\370\311\277tr\017Q\\a\271?E\030a\027\316\273\243?]v\316\216\246\374\315\277\177\r\276\3253\010\243?<\030\255\223\303\347\266\277\340\374\010\253\262\317\247?\322\327\201~\327\265\316\277=\n\307\252\241f\276?}~\205\026\334\223\261\277{\237u\304\202^\322?\271\274\313\013\213\206\300\277\267\017\331Nv&\300?\231\002\017\317ue\210\277\227\264\211\260\305*\301?(*V\230-c\253?\204\347\276\210\021\320\247\277\272JOS{@\305?\274\022&U\302\260\265?\324\335x@+\t\275\277\025[M\007\333\314\254?\270\306\376 *U\267\277\354\375\355E\360\223\216?\2311\357\306T\016\250\277\014\201\024\205\035\215\272?,g^\325\221\277\261\277,\227\207{\025\002\227\277\"\263\305\"\363\332\303\277\022aPp\351\365\304?\233?hd9\335\232\277\240p1\221R.\266?|\006\354Wx\265\273?z\375\017\342\034L\232\277\016\310T\342\203\374\223?O,/\236Hw\276\277\375V\205-3C\275\277\363\034\332\177\027\345D\277\000\200\323C2Q\260?\242\346N\r\253\213\270?\210\330\311V\315\204\303?\344J\263\376\232L\227\277~\340\342\"\"\221\231\277\214\004\202\"}<\312?v\230L\037\306\370\260?\233\217l\036J\033\234\277\006)\235\274\241Tu\277\272G\t7V\213\226?\375\240\3562\211C\272?T(\021\256\"\"\225\277\034\333\255\264\022`\273\277\315\332x\277\010\224\260?\236\234\r\224\320\312\242\277\322\372\010\276\222\273}?J.\030\237\327g\267\277\036@c\317\024\357\237?\246\351&\226\221\344\274?\035\025^\267\270\230\260\277\025TvC\031T\263\277\250\325\345#m\201\255\27791\007P\253\336\311\277Z\003\335hp\352\304?\026\254\272\212\366j\255\277o&\003]$\344\310?KK\372\331\243L\304?n\224jN2t\246?\340+J\373\203A\303?\276\r]\214\241i\265?\351-\215\201\023\243\261\277\006\302+?%e\250?\022\230.G=\264\261?\333@\202F\324Z\252\277\0075\013#:w\245?\341\263\027{\254\224\263\277\303\257\220\215\310\331\311\277\273*\030\325L_\305?S\233\215^\005\032\237?d0\331\246A,\303?\036%\321\264\237\241\252\277\271\265Tvi\274\247?7\010h\354\004\353\215\277\347\246\242\247 \017\235?l\001\332\356\273\354\260\277L\367\347P\311/\216?\362\251a\037K`\301\277\372\0231\301\333\264\304\277\351\353\227\363\ro\237\277S\264\000\'mM\301\277\341\317D\251\262\243\270?8\202\304\2117\024\272\277\225\223`P\347\221\277?(\264\3755Z\226\327\277\363\220\253\376\200\013\321?\346\334\275;G\205\264?t0,\240\276(\316\277\024\344\265\004\261\373\270?iX\371\"\362\371\253?1M\253MB\247\305\277\033.Af\261\221u\277h\r\2179\311\013\246?f\341Rf<\360q?\000x-\377\357\322\304\277\371\230\236\247\342\353\321?\261\nq\226\232\246\302?u\273\335 \371\221\216?\356\310\367wl\227\322\277\331\240\300g\325r\260\277EA\003\225\305\n\227?\364\322\351\354e-\300?\211a\261C.+\233\277\343\002\002\024B\367\274?(\031\004\244-\213\276?\2276\353\025\217r\263?\270\252\375\236\246\304\271?\014\'\357(\252s\304?\010=\0070\235\264\304?\014\355\212\364\273J\314\277\352:h3u\217\\?\033\216\005\263\334\251\301?x\213\352\340\261.\270?<\2129\024$\370\300\277^\257\204\363\321O\245?K\013\310\304J\266\252?(\302\376\340\023\310\320\277M\017\241uk\004\275\277\343\334K\005\345\345\241?\236\325\375;^:\254?\354@\2637\320\243E\277\302\352\010\247|.\262?Sx)\266\342\333\261?\357\336\306\033l\022\311?\263\204B4B|\302?\020\330\307\310\246\014\224\277L\3213\200\357L\242?1<\246\3364\t\323\277L\021X\242O\311\202?\032\220\351\211YR\255\277Y\245h\032\035\231\276\277-7\034\013\233l\303?\252\3708\307[W\262\277\273\245mrZ\326\225\277qRc\'=\360\274?l\327\322nm\'\235?\312\354\030\030\205\234\225\277[\316p\310\t*\266?\177Z!\024\270\020\223?\333\264\310A\177C\260?\274rM\362@\360\322\277\245\232\021\373\252\222\224?\214\226?3\234\310\231?T\tE\000\253u\310\277\265\233\244\003y\231\224\277\215\202]\272\256\353\277?{v\\\271\233@\270\2778\214(\330W\327\251\277\016/\3649W<t\277\225\250Ej\363]\220\2778g\230G6n\255\277\301h\002\263\001\363\265?\320\016_\275B;\260?K\234\230D7\227\273?\3749\216`\310r\212\2774V\265\341\232\016\240?\003)\252\373\255\264\261\277\311\360\363vVl\241\27789\000\215_\315\263\277\210\227U\213\322\230\323\277\233^\270\234\270\023\260?\240n\013\363\2279\251?\265\320\020\323%k\313\277\263\n\226FK\231\232\277\024\231\375\002Y\266\262?\361{\345*\373\037\251?\337\335\271\254a\005\266\277\271R\003UY,\274\2773K?\264\035\353\263\277\003\200\215\207\031\211\303\277V\374\342\362\246\376\260?~\222\314\374k\266\306?\212\236\017J\230<\267?#\2225&\\\322\272?\r\003$\r\3601\261?\233\345\357?E\037\261?@ pTZ\247\303\277\242\246\271\307\006M\212?\020\261@\326a\004\247?\177\332\025q8\007\227?(ZW\277s\246|\277\210\224\034\361P\031E?\220\307I!\362s\251\277\371;q9ry\253?\\\232\226$\366\313\232\277>\033@\276\ns\266?#|\375\335\023 \301\277t\353\377\206*\005\300\277\325\010\377+\300\376\266\277}o?\206o\013\271\2774\373`\201\346>\274\277\272p\243\262\231\241\215?\010\376\373\263\001u\257\277<\025\263\303\313\326\323?]\261\325\337\305W\261\277,\016\224 s6\310?O\353}\244\237\210\265\277\276\357\332l\027\356\316\277>\264\342\343x/\234\277\222\034\312\341it\300?\013`\340$\nM\252\277v\301\266G\3021U?\260B\010\322\030X\303\277\320\262;\377X\367\235?2\000|\256U\306\220?\246q\306\361\241\004\252?|B\272HO\263\241?\243\004\340\206\017\261\263?(( \223Q\241\303\277=2\311\244z,\227\277i\361\210\032h5\331\277\327\336\330\357?\315\264?\010\303\033\025\000\014\266?\342U\206\310:p\265?\377~F8}P\252\277\240yJ\371\tZ\321?s{\310t\333\244b?\221\243\330B\313\316\301?\330}\3674\353\200\215?\220(\342\232\342\213\243\277\305\270\222\nKY\267?H9D\201\357\010\237?i2\225wX\361\242\277\212\346\217f\341-\237?\004\243\226\330\r\227\212\277\227\355l\255\224\036\240\277E\251m\t\364\020\237?-\007\010\205-\343\323\277.I\263\330\343\266\251?\014-\026\025\365\020\273?\245\216>\205!bz?9\324o\230\033\223\267?mW\027U\023P\271\277\251%\241\204\374\026\255?\226K\177\301\005F\277\277\022\301?\303R\307\235?\241 \305\237y\005\277?.tyP\262-\250\277H\267\002\220\200\245\301?\025\272\013\031\365\225\300\277\225\'\375\332\216\343\262\277\'\014j\037\244\263\246\277\3007)\325\\\347\266\277o\245\014\002_S\265\277S`\240\036o\024\246?U\245\321\013\275\331\234\277\363q9\361\307\225\264\277\024\224\231n\375Z\263?1\321\350\304\251\r\263?\324wV\005\007v\274?\253\236\205\300\227\343\254?\306\262\227>\330\030\264?\313\215\275<e\344\243?\373\3533\225T\371\261\277\226A\311\371\351\266\272\277\225\257\323\"\266g\201??\364:^$\272\322\277_\216j\333\344b\234?qPaH\316\226\240?\361MU\224c\314\270\277\320\025\320\001\373\252\231?\220|h\020\204\333\301?S\311\317Zz\261\260?f\355\223\374\333\234\263\277x\325\317\031\032\206n\277\007\032\243EyU\245\2775Mb\2615\337\313\277\003&B\013\313\201\272\277\215\2137\337\207\274\247?\205h\327k\005\361\262\277\223\003z\342\317T\320?\244]\247\026\033\340\266\277\254\325\205o\351E\233\277\271G\335\016B\034\264\277\255\324\017M\237\215\304?\212\n\0048\361\002\265\2773f\305\021em\256\277\346\300\236\311\021\035\241\277\177\325\223\370\232u\247\277\376\324\224\376\244K\203?\246\260\207uj\'\307?\370\2345\314\334\345\245?O\n\025\212\221\245\247\277\257C\235;f\335\231?\311\251_\013\342\376\203?\003;\2524\364\215\256\277\362\366\\R\031C\254?\254\232_\316\373\022\266?\223S\371\034[\352\207?Y\010l\335\335\005\260\277pU\005\3366\213\253\277\3705\024\350\002T\327\277\320\207\216i\371\014\273?,Zc\3422\352\243?BM\345@\0216\253?\037T\320\202\177\350z\277\331\000J\3543\300\265\277\202s5{\'\352-\277\253%\"\305\334\005\240?&\335\021\344\"\022l\277go\337\032i\351\300\277i\037\270\227v\224\231\277\"\301\023W\242}\312?Z&C#,Z\272?U\331#-\247Nz\277\315\314\227q\271\220\213\277.9\002h\306\354\250\277\212\313\322\377L8\273\277T\250m\367Ft\311?y\264\0016\320\354n?\374\331\254\224\356\362\233?\002\224\210?X\250\301?\250! \264\223\010\254\277\357\363\321\301\344p\252?x\254\225\263\304j\303\277\343\262\033\221\3505\273?\251\014\203\226q\343\313?\363l\267\341\231\322\213?\003\031o%\330\317\315?\252]\025C\244\267\274\277\010\204f#\001G\207\277\177\332\275\345\2459\244\277j\226\032>1\216\277\2778T\232\221r7\313\277\251\261\325c:\270\233\277`\221\252J\036e\261\277\221iF\037\306\254\246\277\263\025\234B\274\006\205\277Z\224*\030\325\200\261?\244\210\204\211\374q\225\277 q\334\035\1774d\277\346\341\206l\037\252\220\277\306\321!\321|\311\273?\2730Z\r\034\330\262\277w\222\370\201\345\265\257\277\212\212r\272x\261\226\2770\352\326\017\211\310\263?\246U\265>\255\\\324?\017\203\024\265\376\350\255\277\250S\341\026\217a\300\277\306i\221\016\263\037\223\277X\237\326\030\366\337\242\277\274\033&\364^\223\025?\222\245S\307\305r\264?NR3\334\\O\300?\254p\243\365\023\216\243\277\213\264\247\024\017Z\230\277\270\253\333\304\027\333\236?J\324\373\021j.\306\277\210.\236\362\232b\262?Y\202\376r5\007\275\277S\237\277`\343\352\271?\022\201\347T\213\312\276\277\206*\313\020DXi\277\010\254\215\026\035\247\270?\266e\027]z#\310\277@\236\rX\246E\267\277\221\217\375\255\361\273\235\277}}\022>\n~\304?$\231\007\262\242\347\255\277.\317\316d9\336\261?\022\326\001\022\312l\273?f\247\327@i\323\250\277\227)\360\016\352H\246\277\375\364jF\217\336\310?\377+\204&\314\256\320\277s\\\363 X\367\262?\200\024\217\001\223\315\270?,\333\277\261P\010\251\277\242\376=\031\000D\254\277\217\240b\370\363/\240?\225~:\224d\000\262\277p\273\324\300\352\211\256\277\371\350\332}\263\010\266\277Q\231!\320\250|\274\277f*\307\244\240(\244\277\340\0102a\320\254\305?_\036\255\365\003+\260?\261\331RS\264\343\273?\243\017\331\3350\035\306\277\200p\036\340\207G\213?\222\231s\005\335A\243\277|\347\263\347\241\035\241\277\306\320\004\010.-\253\277?\017_\033\214\n\266?\265\257r)yR\257?D\272\340\030\242\336\213\277\n\227F\200aAw\277B\3279\267\237\350\213\277\n\031\327\302^~\246?\327\242m\302#y\266\277k\026ra\3604\253\277\354\272P\373\233x\220?\327\361\363fZ\007\242\277\n\204t\252k\202\270?\275_\234D-0\276?\314\312\207\324c\311\271\277I\276\034s\253=\303\277>\272\255\364]\253\257?\'\363>\367i\002\200\277p\2528\372m\320\261?\201\240\245\2514\001\226?=\220=\306\203\t\273\277\021\322F\354\314}\240\277\033\333\263\273pI\242?Y^F\273\214?\232\277\261\343E\230\0338\241?\\\212\362\325\342\032\314\277I\305f\236\244\350\263?X\3760\"\027\014\314?\267^>C\"[\311?\317.\377\271\035\361\261?\014\216\322\312[@\224\277}\033Q{\210\234\225?S\323\205\240\217\004\260?2Fq\032\n\274\243\277\3375xz\254g\271?\325O\255\304\226\027\303\277\250\234\"\366\354\037\220\277\357J\312\217b\373\236?\257HI\017\037\363\322?\362\003\216v(R\226?\233EP\007F\036p?\004\204\276%\357\365\267\277\250\302Y`}\375\260\277\321\321\340%\034f\322\277io\334\363\247\337\216\277> \366|\225\225\246\2774\330\356\300\335\363\222?\237Z\242\306\337-\212?\310\335\320\177\305Zl?\323\270\231\002\354\230\314\277\223\372i\321\232\024\302\277\354\321s\3553\361\260?\322\3262&\331\300\300\277Ch\317F,p\270?\231\212?\270\007\207\274?\"\251\311\355\356/\235?\303\247\016\027\255O\303\277\206\246\340<\311\005\260\277m\000\305h&Y\253\277\324\267Lz\261\007\237?\250[\213\255\311\244\303\277w\340\202/\006K\265?\262\303!5\r/y?%\374\234\0314<\254?O\n\231\255\375D\252?L\316\271\211\321[}?\224\003\007\257\203\266\325\277\320\272\370\377\010w\247?\210\355\235k\314/x?639\326#\324\253\277\245w\2171\231L\254\277\361o!\245?\251\262?T\305+\231\017>\302?jL\025\024\365\026\232\277\262\217\231\337\362\035\276\277)\332\224`\346j\226?\234\227\343\312G\270\272?\276\023\327N\232\013\221\277\350\023\221{\210\366\256\277\334\34280\355\333\201?\001\371\261\2326v\271\277r\242G~\355p\301?D\241\370\312\314pr?\030\370\321\220\227\240\244?-\264\010t\244$\230\277\345\250.\305\234\212\222?\373\023\026\321Y%\275?\022\221\374\304N\322\275?\026\320\232\274\363\024\315\277\255\355\3503\3435\302?\001\014\"i?\371\242?\030\332S\252\303\000\272?\364\343SIb\317\212\277(\340\306]\205s\300\277\032E\306\204\253N\314\277T\235#d\321\201F?\271P\206\262?G\247?S\302\210\344\231\t\272?\262FSRH5\310?e\352\251\032\002\260\242\277\347\342\325\0029Y\315?6O\203-\316q\270?\264#*W\2201\267\277\026\014\331\361\274\266\262?\225\246\332\020\251Y\231?\236\024\021\326\205y\307?\344\0244eo\227\272?D\023\010\302\312\000\227?\250`\336F\344\036\264\277\026\213\2342] \337\277\215E\350\310\235\222n\277\276\223\262\n\\\023\232\277\316\232Nls\226\230\277\221\212\360\0130\t\300?Mu^cl\361\253\277\244\007r\225\215\006a\277\362$\305\347\243e\320?\375X\030\016s\000{?\220\022\3035e\277\265?\274_\370a\314=\261?\342$\202\327\020\277\252?\200H\326\306\2436\256\277\334\017\331l\312\006\303\277 =:5\251\275\261?=@\343\365\323\325\270\277\020\t\320\000\341\016\262?x\272\212X\032$\306?\347\344\\\254\300P\316\277\252I`\204\343w\252\277\207\227i\245t\266\304?\0034\027q \354\243\277d\341&\377\363b\255?%H\026{g[\254?\'\360\037\021)\266\304?k\'\320\033\212O\303?\362f`\023\221<\200\277\023\026\341\334<\251\275?HY\314\232dx\301\277\357\227d\021\010\016\232?*h4\177\006a\277?Rt\310\021\226\227\301\277@\261i\315\205q\211\277\274uEV\253rw?I\243\217\035\222\205\276\277:\234\323\215\016\306\275\277\2268\216\253\037P\264?8Rg\333\203\350\273\277\261\002h\022\034VA\277\262\252\325\314J?\276\2779\324\201\033\270J\216?\315\032f&\232\341\243?\276&Vu\233|\306?\301\333\225\000y\016\232\277?M\034\221\032W\257\277@\250.\303\224C\301?\262\235~\343)8\211?\237\265\225\014\347&\235?\36240Z\034\031\260\277\210\002PH\354\336\313\277\250Y\344\2710\032a?\214\340A\340iM\261\277\233\031\275L\026k\306\277\003\215W\277\216\232\226\277ezA\267\005\234\201\277\212\266\366\317\351\362\267\277\216W1B\024\251\321?\233\223\263\343kV\252?\243\021\212\221{^\310?\362\306@[\362=\246?\225\370\353\207\0041\201?\177b](\240\363\242?\333nO\r\"\003\217\277\274]\366J\024j\202\277\021\310\307mR\365\221?n\2725F)\001\266?\330\216\002\207)\325\273\277\341\002\353w\375w\260\277\210\354\337\003u\201\255\277\220\t\305\225\317\314\255?\314%\350\240\310i\300?\275K\231<\021\361\264\277\223\010\3531\021\027\255?}\377\364H\234a\301\277\377\005>\331-{\302?\312<\343\360\225\303\267\277\313\316\233\226m\371\207\277X\243$BrY\257\277(\373\3611Mo\204\277\231\302Ok2k\232?\266\023\210\306\345\347\226?#\277\306f\321\213\221\277\317\374Up\270\231\256?\234\302~$?\253\243?\215\300\352\330\232\313\300?\2638\355\3122\005\253\277\200T\301\021+u\214?E\341`\244\226l\233\277S\352\311\343\314\035\306\277\251\217c\352\301\223\312?\256}\372\344B\231\220?\022\200E\025\230\254a\277I\035\315l\324\222v\277*c\214\376\004\237\247?\314\272fE\024\270\322??jB\265\264\353\263\277V\326.\230\250)\237?\321>\323\226\202S\317?\342\316\035\336\033C\322\277\242\341\030_\360\341\221\277\r\325\250\021\021\233\305?\314k[\235\251V\302?E\206\363\335U\320\320\277}\201\231:\260\353\230?\222\222\235\271E]\243\277\272\314\270x\275J\311?*\365\002\255\243\266\235\277\270\364\305\212\254\220\266\277/h\247\332k\256\267\277\267\374x\340r\330\217\277>\253\252\242\026\366\246\277\225\255\375u\316@\253?\346\"\224\353\037\001\303\277\261\223e\333xU\235?\'\207\223=\316g\234\277;\274\324+\270\022\303\277M*\351&\323\320\267\277+\320\366\263\226\373\260\277\332\031\3259\304\003\300\277\273\363<\303\273\333\303?\355\375\025\230\372\336o?vFU\253\270\021\262?):\242\024\250\221\315\277\315\363;hRo\260?\253\277\024\326\177\273\204?\213O\2779\317m\320\277\3038lw\355z\324?|\372\234\367\335a\235\277&\242\237\220\014\264\257?\302h\310\241\3108\306\277\227\316\006-@\007\250\277\336\301X\350\034-\257\277Vo\240\362F\353\270?\367$1\336\360p\321?A\365\031\200%V\265?\275H\323\2024\207\250?z\277Wj\311=\242\277\001vna\371Dv?\375\3548\352\355\261\233\277e\226\306\343\273e\262\277\006\336\265[5\302\323?l\002Z\301e\014\261\277\004\242v\271\017\321\303\277l5\246\252\273\241\265\277\362F\374\327\3440\215?\034i\207i\202^\241\277\226\374 \020D\226\220?o\r!9\204K\220?\3505\343r\365\027\254\277\n\343\'\323\034\303\265?/-P\352\332\262\261\277\247\271\252s%?\301?-\366G\024\260fo?\364\030@\013\211\276\266\277,\356\267\355\363I\264?qu\021#\267s\202?\366UL\310\261\252\242\277\2429&_N\266\262\277.\302a\340U\252\305?\272!D\257\007,\263?WzE\352\301\312\230?r\370(6-\026q\277\366+<\302\027D\264\277\200\230\027Ag1\307\277\000RB\362`\340\311\277\351\253_g\242\276\262\277\327\304\236\203\304\342\251\277\263\343c{\034L\260?p\306\325\023(\274\252?4J\277\\Gx\227?:n\'j\203\373\276\277=\0211?J\207\305?\310\314\337\211\035\006\301?\031\355~\331\367\324\212?G\356Q\233z\242\217?X\337IQC<\316\277Z\273\306\335K\373\273?\375\322\031\314\024\246\305\277\302Nw \342E\323?i\343\351x0\373\261\277B4\210\304(z\254?\206(\021\371\240\257\242\277\255(\254\2129J\300\277\263\371\243\211)\316\271?\311m\0160\206of?\352\260g\376\352\350\300\277\311N\223\205\021\340\254?\274\272\310\301\220\331\263\277=\371Ls\356T\257?\221j\032\035\321=\305\2775\366\362\313\355\271\304\277KKh\"\027\210\307\277:c\000\253\337\330`\277\034\363\244\372\306\324\272?$h,~\377\223\250?\361\240LDi\321\245\277\000\363{\343\\\013\273?\302B\336[u\257\273\277M\215P\251z\177\236\277\327\210w\241\272]\254\277\0262\00228\006\277\277\373Z\303&-\343\251?\322\331O\250\257W\261?\325\2268\223\367\312\230?\231F\342\215\220\036\241?W\270\362E\251Y\246?c[<\320\370\360\307?\023\t\345\354\237By?\036\325\\\t\372\373\277\277#\010\r]\244\n\266?\366b\241\3476\235\262?GF5R\266\343\244?\340vx\316W\035\226\277\304\254\351o\212\320\316\277\364\014\223\026\014\246\267?\347\216\021\362\031+\241?!\202?\023vy\272?\222[\256\262\276\256\255?\026\033a\241\223}\277\277\247\363\345\303\202\317\267\277#\250P4o\303\256\277\0019KP2\265\250?\206x\355\355\377v\256\2774\327~\017\256\331\220?lj\240W#\235\234?\345U\243\026a\354\257?\007Zt<\337\343}\277\301y\255\314\363F\241\277\336%\3776\'!\271\277\230\017)\217\365+R?\350}D\210\005\377\246\277\256\310\\\272\327\024\216\277jl\242\311\225\177\241?\345^\372W$\263\274\277\213\253\014Y\\x\273\277}ZI\246b`v?\342P\252\354\204\377\311?\343\026\330V\324\t\244?\230\267c\210|I\300?\265\364\252\233\002\246\267\277\037B\303\201\375\343b?\236/\027\205\303\210\323?\357\241a7\260E\331\277\352\234a\326G\240\262?\335\226\320\024\243\"\254?\313\340(\320\305V\260?\376\342\211(\013_\245\277\375\371\307\217\023\310\265\277-\322\311\254\031\350\257\277\215\352)o^\373\215\277\216d\020\320m\260t?-y\221r\337\004\310?\306\303\233\016\357b\265?\205\225U\r\361\242d\277A\010\342?\315o\201\277\243\2459\260x\301\226?Z<xj\251\237\301\277\360\263u;\270\205\266\277.bE\251\377\034\301?f\347\306P\261\035\212?(T\311\275XT\240\277\322q\026\311V\340o?\220\343|V\212b\272\277d\306\347\376v\023\276?\353\302\370\230{\031i\277\302\254\271\220z\342\321?\345\232`\276\356\347\273\277\250\277\377[\375D\263\277\017-\374\236\nY\314?\013\204\375lf\335\261\277=bF\223iR\225\277\347\004\005Z\tZ\265\277r\377\250.\'\360\226?\'\000>?16\244?\340\026l\366\375\266\205\277\235D{\023]G\222?zs\035f\250\337\265\277]\354\251 U\000\236?\261\237\204(\255\301\240?V\206w\016\006\346\276\2771\307\213\275\234oT?\374\023\263\200\266\321\232\277, \374\001,\232\267\2778\217J\340\375\351\270\277\000n\272\365\370\351\264?,\274\324e\025\n\204\277Y\333n\305\240\352\270?\001D\305\r\371\021\305\277\232u\217\021\326\270\272\2770\342l\3656\272\274?G\250\250#\353\201\262?0\373 \275\227k\276?@\361\263\272B)\302\277po\330\211\033\020\260?A\202F\000\223\307\325?\022\223\247\321\217\221\261?\362%\215\200X\370\274\277\370\336p\333;_\272?\276\305\3571\235\275\240?\257c+\316\244)\261\277\277\262\013\t\230\250\250\277\345c\021\271l\200\237\277\361\301\361%}\006\275\277N\363J\200\272{\224\277\306=a&\376\314\256?\241\003\310\237\373:\260?|\330\246\251S\002\260\277\336\017^z N\272\277\244\2053\336=\233\271\277\350\334\000i1\002\261\277=\375\013fe\267\220\277A\211D\2604S\310?\245z\007\360\367\177\213\2772D.\203\360x\243\277(e\022\265\364`\211?\2337$]h\200\236?MBC\306\232\320P\277\216\002\252N\"P\231?\350d\242\356+\332\320?\356\221D\272\355\367k?5esk[\324\253?\376O\232\207L\210\310\277C\004\252\240\371\361\241?\306\034\371)\307y\245\277\'`\210\303H\364\276?\313\023^\352X9\251\277\277crv\337*\244?\361\n\373\235\004c\226\277\223e\004*@\215\304\277\'\254\372\312\237N\243?\312\213\375\021K`\242?K1\211\327\317M\257?\200\226;\371\233x\221\277\212\365\204\002\3443\304?\322&\332\\\350\223\255\277uJA\354k\007\253?\301\307\346\247\\&\310?4\t\233\204\352\234\250\277\211\351_\365=\341\260?J\201K\231\302\344\311\277\360\267\334\017\232\002\276?|\323\316\313\";\262?\342{X\361\347\360\273\277\364\347\361\263\rK\271?\232\004\317\256mO\242\277\330]\261\307\036\233\274\277\014]\244Z\356>\214\277\2342\322u6\334\224\2779\306}\354\217\273\233\277\267\016\331\264\367n\252?\336\005\351\203q\233\253\277w\001\213\210\363\312\221?\371\366|\200(\276\200?4\325\245\036\341!\313?\355\'\206DZ\254\270\277E\304\220\005=\352\300?\025\276\023\350_\330\243?\215n\306>\336\242\273?\"g\212\354\313\343\264\277\356\024\214\376\275\221\227?\323\225\214\331 \306\266?\263\201\323\n\240\364\261?|\200\363\205\202\323\300\277\337U\300\344\316\217t?x}k\035\247w\262\277\254l\335\242z8\236\277\rh /\250\315\274?\331\313\266\355\377;\302?]\023F;r\204\227?PAL`\214Wq\277]vZ\2268\031\260\277\210\304\236\374\325\017\320?\260\307\374\353\317$\256\277\177a\313\2612#\233?\266raN`\352\300\277\330\265!\034\256T\255?B%\366\376\225\270\223?t9O_\251O\242\277\3203J\266\0266\240?Zn>.2\243\255?\272w\2252Wr\217\277\323\314\031\307\007k\277?\255\270\376s%\357\260\277m\307\rs\217\314\203?ry\251\3252/\261\277\202\206\272$,y\311?S6\240M\255b\233\277P\222\332t\014:\247?p\345\214\3171\001\216\277v\200\341\322\343\264\224?ZkZ\021\205\205\274?\317GK\270\341\377Q\277!\306\003\033\212$\331\277e\375\334P\t~\203\277T\344\210\r&\030\301?\002aRS[\234\231?!\330\344?/\241\303\277\377\013r\202\324<~?\207X$\304\253\331\273\277\024\237\340\026cs\210?2\222\030>\334W\241\277:\304$L\365y\275\277\345\261\242\236\t\246\230\277\365V<\327\236h\305\277\'\236\374@\004\244\264\2775\350f\236\322[\243\277\201\270\3127\\\340\312?\340\030\366\236\216\262\267?\211\354Y\247\211\323\246\277 \314\252\312\360\004\326\277\305\227L\346\r\017\301?\264R\266y\325\372\312?\374\322\274\275\000\251\244\277\030^\354\243\261#\265?\\\360\261s\3335\273?\353d\025\270\334\'\240\277\343\254\233fC\030\230\277\n\2327\222\006\325\264?\030\344\207\031\253\326\201?\302\2350\3316\037\302\277%,]U\031G\241?T\256\304\r\215S\201\277EY`\315\342F\301?\260\263\3562\256\275\243?`F\303\276Z\307\251\277\312\215?\353\031\'\234\277\371H\371\226\235\204\241?\334\003\357\004\366,\326\277B\324\373\331\312\260\266\277#bUR\222\333\246?\373\r\245GFFV?J\220\256\236{}\270\277ck8\317\363l\306?{\302\234\201R\027\302\277\021\300\021l\223K\260\277\342\260)\034A\377\222?\367\311^j`\242\240\277\246\204\303\332\205J\301?\340\350_\225\r\215\254?\305E\361\276\227a\222\277u\317\204\245\300st\277\257R\375,\033m\273?\350\031\215$K_\235\277.eh\213Rx\247?=&E\013~\250\242?[[\254\244m:\271\277\245\204cA\224\201\242\277\355\261\003R\370\320\322\277&\214\270A\336\326\300?L\345\215\352\3371\260\277y\226\220hw#l?\003\031\270HC\360\231\277\357\021\215\344\373\266\265\277\014\340-?\325\206k\277k\301K\320\356\300\227?\310\271$\262\262\326\246?)\025f\367\345\203\256\277\335x\311\027\254F\315?\331\210(\273\247n\305\2776\002Y\376w\273\254\277}e\336\302\344\352\261\277\315\025S\346\350\206\251\277\214\376\010\201\236\260\331?\35314\003Jb\227?\275&Y_\232\332\303?\003\237\355\260\222\030\304?\027\005\251x0\027\303\277\212\252 =\325E\261?\326v\366\312\264\363\273\277\336m\006\201/v\245?\372o\222\374\340X\263?@\243\n\030\306\\\232?\306\333\305\212\214\367\303\277\247\206\0332u.\260?\255\302\377\346 \265\214?=\332>\236\200x\276\277\305\\\206\260\013\217B?+*]}\222\352\275\2777\314x\017>\265\302?\2530\3275\037\243\242?\223\330\025\326\327(\266?Iv\273u!\303\255\277\342\330\334\320\024\266\242\277\000\213t&Y\200P\277Y\201\203\253\332\316\243\277\213+\241\213\014\213\302\277E\340\\\330X)\267\277\324Z\007\\\032\263\300\277\237\007E\327\030\007\312?\275\337\206/\233\276\267?c%\000\351#>\275\277\335n\337\247\265e\266\277I-s\315\025\351\317\277\212s\022Z\206\261\307?C[\0342d\030\267?\n\322lH&`\267?\247\213\212\322\320\001\262?\031\006\241\356\312\310\305?\2343\346\364\342\325\207\277\034\263\2175\204\216\205\277\360rp\203V{\313\277@\275H\303\211\223>\277DO\t\264\204\334\252?\304O\271\377>x\275?\321q\005\256!\306\303\277\346Pr%\256\202}?\246\242\310\324\255\334\277\277\025nv\304Hb\271\277o9\205\307fS\227?\354\0243\256C\270\231?\372\222V\r\305E\303?}g\021X\346\017\321?\302r3\273\211\014\253\277\220`L~\027\242\255?\223x\270H\233\251\241\277j\322\243\033~\377y\277\245*\377\326\314c\250\277\220\346/$\256\301\242?\375P\324\360\036n\327\277\023\037\352Q5\300\270\277\242BS\207\274\021\245?\310Z\354\327a\233\265\277\3510\007\207\375Q\271?\017\037@\237\246\356\220?\264O\342\255)J\247\277 =Ph\316\305\247?.\353\367\363\276\233\253?\260\031\240u0l\273?\024\215\001~\340>\261?\030)\370YG\277\241?\263R\211\267\242\223\267\277\245v\347\277T\213\272\277\\\235\021\254\256#\312\277G\'\227@\333\234\356>\326<!\345\210q\241?j\223G\201\025\202\300?\326\352\370nH\221\244\277\251\264x`?\223\276?f7\361~\177\254\201\277\245~\2247\366\323\305\277@\273\232\330d\022\212\277voM\215H\304\232\277\350$:9\235\263\314?\200\346\243\304\272\260\207\277\354\213\306\002\310Jr\277\217\321\224r\235\367\330?I\352i\226\032x\322\277\257MW\263\007\230\237\277\361\362\244nJ}\221\277\312YHj\345\t\306\277\256\257)\321\023\321\273?g\235\024\254\2013\264\277\375\357\307\255\226\260\227?\211\363\3116o\332\274\277\207\"wJ\253\362\300?q\377^]^\030\275?\363q\346{\341 \264\277\327\242A\301\341\210\273?\346\007\306\231Em\273\277\212\305\241\2601\310\250?^1,\253\312x\241?q\037\377\231\376a\224?S\025\254\274\374/\227\277\250\315\237$E\\\307?\242\tR\377\205\234\246?\334ll^\027\002y\277\267_\263\350\274\275\246?\227\300\231\370|\327\264\277\306CH\236\\\347\266?2Fqowm\261\277\030Kh\363^\353\265\277*\353E\235t\323\206?\206w`f\031}\274?\265\251\271\277\r\025\243?a5C&\253a\301?\033\375\242\212\261\201\264\277.\235\237C\217\342\250?x\213\035lO\226\262\277m\337\033R\377\243\250?W3B.N7\211\277\210*/<zd\274\277\210\013\233(\344`\267\277l5\356\032\227\241\262\277\257\244T\233\216\354\211\277\243\231\241.L\210\255\277|\222t\004\3048\253\277~q7y\035r\257?\320\271=\361c\223\300\277\215\210\301\250d\ts?\2735~6\245\224\222?\314e\307Dk\036\304\277\301\020\247a\'\202\207?\272\227\303d\000c}?4ZY\317\016\267\265\277\233\010\206\233\355\277\225\277iSr(H\336\304\277\224\370\213\350w\373\300?\014\365\320\210\340\230v\277 \346\276\004\276\017\277\277\210\032\207[\330j\251?\365a\031\347\227\016\302\277\342\367\232\350^\260\302?\024;{\235Ok\264?_:\315\000\320\365\272?\3336,\374\307\254\300?^\354\312\371]\232\213?>D\035\315\253\033\204?\326\207\247\217!$\240?\330\351O\024\003N\300?\243d\363+f\323\306\277\324A\252\370\227\345v\277@9\247\306\307\326\245\277JG\275\355\326\242\252\277\212w#.\250\362^?\264\2535\261#<\245?\241Rdo\356\322\317?\004\026\210\270\312\264\306?\333\215\275y\334I\243\277q\237\365}\"?\300\277/\221\343\20555\202\277m\332\325\210\025\255\220?\317\033\020\007\014\302\264?cAn\205\260\306\257\277\320\236\001\013\257\370\315\277\001\202\255\010i\203\270?\264\326\245*Rk\301?\315\370^\373r\274\263?%\207H\004\010\302\275?\261\177\217W\345\255\255\277\226\260\267\002\277\257\306?h-\353\0308f\274?2\267\177\026M\232\275?\250\232\353\024\255\271\263\277\232u\351y=\264\267?M\321\004m\000\314\250\277\316^\371ekk\230\277\306\213Q\300\0208\260\277\2364y\346\324\270\211\277\262\270vW\024S\261?\316\0178\303\013X\314?\202\251\323\201\217\037\315\277\037\3617<\005\236\246\277-;%\355\256$]?\\\035\365pn\006\325\277@\007%\274\373\200\317?\220\240e\377sr\247\277L\331\016\274b\371\301\277\223\312Rz`M\265\277\032\311\r\241]\205\243?\376\276\213+\356\326\270\277\240UN{\251\033\306\277\020\330\347AFp\254\277,\311\361\230\032\250\243?\217\242R\223\033\273\276\277/V\220\323\227\334\300?;\033\332\260M\250\247?\323\270\377d@\274\245?\037\230\037y\027\344\323?~d\034p\000\375\250\277W\345\247\022|\215\232?Y\205\035\364\333\'\301\277,$\351-Ngc\277v\010x\340R\022e\277Cmqdl\027\303?\016\236E\013\3344\274\277\207\321\302\272U\203\254\277@b*\316|5\217\277&?BA\210v\221\277\331\001\\\2458\207\300\277\013h\301\216\332L\300?\274\211PAxQA\277\024JJ\346Gl\265?R\237s\305\347X\255?f\200\200\010A4\226?,\225\3446\342b\307?\357\2531\316\r\200\275?\"\261\321![\371\265\277\236\255\345\2461f\255?P\037L\247\254\310\250?\300\263\365\366\316Z\266?\030\017\232\010Q\362\267\277\202 V\374\302\342\240\277T\252DdN\267\240\277\254z\010\231tv\262\277b7/\253j\244\247\277<\'\346\337d\247\314\277Z\353\225.n\360\254\277$\004a\345r;\247?\345X\026\344\213d\271\277\022\035\273\020\307F|?h\256$\016V\243\264?\346 \032(\364\356\273\277l\326\001\267}\027\302\277\231\346\"\333\345\337\207\277/\223J\2067\200\245\277\301 \3455\312F\316?\374O\306\274\303\027\260?\315\206\267\213\303\313\270\277\210\344NQ\007\206\235?Jj\003\006\035\344\301?e2\375@p1\301?\271\224\2744\217n\234\2776\005b\245Z\272\233\277\035#a1Xo\231?\304\243J\334U\346\255\277\255\205\016\320\021\307\277?\314\020\370\377\206\022\213\277\247g`\026D \275?\031a\343R\336Fn\277\255dI\371d\363\304?ujW\\\2408\304\277\217\252\367\232\264\266\254\277\342\232\331\214\014\351\242?\214\307\024\010\235\254\262?x\tq\005\005\226\216?\213D\321\325(\013\263\277<\265T\304L\246\227?6\250\306!\365\246\265\277\336\245\307\312\350\362\230\277g\271\262\225O\215\300\277\301\237\361\235\026\316\223?l`f\224VU\274\277 lm<\302L\201?\264\200\002\024h\314\272?\007\301\340\021\030\000\274?\313\010\263%\342\374\235?\225\025Q\034A6\241\277.:\002\325r~\225?\342@\214\235\257\270\317\277\306\020\336wE\260]\27737B\321\013\014\263\277{\252\336\263DP\223\277\211\306&\240F;\253?\326\340\341\337\010\227\265\277`\007\326\277\371\004\306?:\3744\203y\004\261?8\375\326/\r\352\232\277!4\\\030\211\036\214?6\365q\014\210\371\265\277\361\2076\024\010\230\231?Z\342e\301$6\221\277\024\344\020\013\247\232\225?\353\260\255\306\223\274\275?\253\020\017/B\301\274?d\033t\017xr\263\277\361o\240e\206\031\322\277\243|\006\344\330\373\260?\261\350N.\352\231\222\277f\367,I\330\213\210?\230NK\246\363\252\226?=\2343\037z\370\221?\304\350\010\201Zf\246?\201\326\334\273(\010\265?+\324\240\024f\363\260\277[N\374\232\353\027\260\277\246\236\361^G\227\317\277\321\354\035\234\343\373\222\277\003\253\350tF\363\263\277V\305,,\\\005t\277\010\301\330\376=\350\212??\277\340\366\302n\300?\246\023LI\373\035\260?\233\376\177o\0206\262\277\330\276\312\271\212-\271?\263:\037yM<\261?\300u\366\017\320\316\252\277W\320\320%\2646\300?\330\242\364&\202\372\244?\343\261\217\344\033\257\275\277\221\245}\264\375\324\231?\212\341e\270\253\330\262\277\353\033\265\206\322C\242?;^\np\360\363\276?\332-\377\235\273?\313\277\033\257\222\224\254\037\244\277`n\"\256\305+\252?\332\"u\232p\234\305\277\320\3255\\Y\370\316?|:\260f\025\221\263?b\021\214(\005\242\277\277[\026m\232A\371J?\203}\240\236{\240\305\277\337^1\325A0\307?zU\222\362\210\345\207?\216\313\207\276\3553\324\277\035E\256\376\267\316\222?1w\352q-\r\267\277\371\325\303d\354[\252?\315\236;\217\020\343\272?/\007\241N~\037\303\277A?\306&Rr\276?\211\244\377`\272}\273?d\277/\365\321|\304?\264\206\203\235{B\272?\305z\277\210;\231\266?\177\231`\005\n8\222\277\373\217\231C;r\303\277\014gz\352\250D\245?\367\367c\326\344~\250\277*\312FJ\331\370\251\277\016G\342\340\202C\261\277\274\324rys\213\312?\300.\277\003\036\233\312?EZ\002o\021`\251\277\224\360\271\241\030\331\235\277\224\212P\340\010\325\237?O\356\345>Bw\272\277\231\362bT\r\315\240\277\245\242\374<\204t\277\277\201\222\035\347\365\306\224\277``\366\030\234\367\226?qc\266zO\214\270?\337\026\322\314\337\275\323?\275\3751\"\324\237\230\277\020\376\302D\021\366\222?\242,\321I\013\366\251?\316\322X\242`,\301?\371\006[\030\022\276\217\277\002\"\201\0175\036\223?%\362\210\215`\256\270\277\312\256\356\024\202\315\267?n6\321\341\314\262\220\277\023\252\003\231\'\336\254\277\016\245\304O\363k6\277\245|\005\251*{v\277\217\245\207\250\037\375\262\277\376\033\275^\310\305\316\277\01401b\340\225\303?\331)\351\026\266(\274?\301\344p@F~\311?\373\010#\0043\236\263?e\354K5\357\204\254?8s\\\251,C\210?O\345;\320\030S\211?\013T\334\022\235*v?\302\036\375\243\370\271\277\277A\201\000U\372R\223?\361\"\263\350\357\234\255\277w\344U\037\243\'\246?0\351\350/\365<\300\277\356\375\221N=o\274\277/\265\267\021\3731\222?\377\"L~5W\252\277n\230rs9\242\324\277\315<\241\026\204A\246?\304\r\322\216\221W\252\277\236^b\2702\306\233?\031\266\233\212r(\255?r\356\003\007\254wk\277\351\270\327\031/\266\221\277\233\014\014\037\307B\277\277\344\314S\260\364\351H\277[U\317s\317`\263\277\344\010\327>\000#\313\277\023\205 oD\354\313?\203}=w\033\025\260?\2728\000\250k>\271\277\017H\227\233\262\365\240?\365\3155y\204\000\267\2775\345\310e\275\215\232\277\260\276J\343:\200\273?\323\255?\220`E\255?\201+\257>\007\343\305?\354\274{\257\210\023\245?\333\315;\255R[\277?\177U\271N\276\374q?\265\205\270\201\311:\262?\276\013\220\305\253\013\221\277j\016\222l.N\300\277f\227Kz\341g\267?\272\375\302nk\243\260?0\031iv\215\320\232\277n\003\003B\337b\261?\033*y\254w\026\267?\214\256\206\362\r\036\260\2771\215\365\333\216\'\254?\223r\2149:|\235?{\345 \344l\037\262?Ia@\303\335\345\302\277\255\227\333\344\216 \273?c\3709\\\266\206\300?\003\312\237\033\r\255\220?gpF]l\230\272\277\234\327\320\\#v\247?\232\001\266\224\260\330\270\277\310\204\352\232\345\316\266?\332\336\221P\337\tw?\363\227\300\\K\037\261?Q\327N0D\317\305?\311\3456\226\016\213\262?\276A\331\337!V\274\277\255\274d6\327\324\247\277\257\321\375I\003S\266\277\023?Y\240\350\317\275?\270)r\027sR\262\277\334\273\216R\355\025\200?\017\210\232\356\372i\320?\334\230\231\322NI\267\277\032\214\357\227\007\377\251\277\252\252\270\375\016\310\306?F\201\316\316-\215\252\277\323\272?\360>&\246\277\316_\'\271\212\201\257\277\307T(\370\260\006^\277\017\231)A\013\217\236?\304\274Iu\301\272\253?\203m%:\230\236\235\277C\341xIy\222\260\277x\327N\221\327\334\224?G\276\225;\004[\245?\213<\217\036\252\241\303?\255\254\010?\356\201\241\277O\250\277\247#\322z\277\270\205$\022\270\231\212?\006\327\335\347\n\327\274\277te\321\202\306\356\225?\236\342\274\372\215\206\263?fJ\017\300\235m\314?\205r\010\267+\262\266?\307\221\317\234o\304\263?\2133\255\241\2574\211?r\203\360e\223o\231?\317\374\336|3g\224\277\314<q\200l/\270\2774\223z\260\262\364\306\277\352\361:\203\223W\247?m\t\257.;\227\267\2778\025\344\277\3568\262?\034t\330\024<{\262?\262\300i\213\357\310\245?\334\266yvk8\257?\243T\032\357\343k\304\277\3018\317\255\256\261\210\277\235#\224\235j!?\277\345\255\350l\000s\264?}<<\260\302\327\301?\375\',\334\215\314\224?\340\226/\320\234\023\265\277\257\255?:T\247\307\277a^\301\340\317P\244\277\341Qx\276\026\353\260?7\301\213E\2261\265?8\013-!\210E\204?.\026\231\306\037\326\\\277L\010\244\226g\027\275?Q\245\177\236C\306\245?\374v\267\331Z\301\225\277\374\323\034<\004#\255\277\301\241\226\366\305\315\314?3\364\251\222\2653\263\277\256\253\323\236\006\027\272\277\035\327\022/\233\224m\2779\207A\347\274-\301\277sK\215\344\253\'\261\2774)\035L\326\303\302\277K\315\224~w\251\265?,\347N\'@\363\320?\365\327\177[,\223\236?X\317\024\332\236\000\242?\377bP\267\222\377g\277r3\261\377\331\226\301\277\366\237?%\245l\257\277\345\375D\020O\332\262?\014^\237|\354\346\267?\017%\363\315\027\227\275\277<~4U\026\217\265\2770\003d\031\225+\317\277lL\013\353{\262\215?\322-[#a<\304?\025\363\347NOJ\261?\3015\004\211\207\354\302?;\357\275\'\177\257\307?\t]%\364\360\370\265?eN\223\231\214\n\260\277;\232\246&\247\342\255?\315\333\232\335\356z\311?)$K\212m\323\305\2770\030\251\265dL\300\277\013\321\353\034x\343\263\277V\227\232gX\333\273\277\272\260D&A\255\324?\334LKX\332\366\242?\225\356O\237\024\316\276?XJ\027\'\216U\220?\375\240(\246r\000_?\016k\000\320\310\327\262?`\230Hf\027\'\236?T1\211K\225\377\266\277\225^\t\227vA\274?\251o\360\214G\227\256\277\t\010\354\t\221\334\233?\002\323\026\014\361g\250??\027lA\324*\236?\371U\356F\313\322\304?\256\245\355\243O\352\321\277\271\252\272\305\032\000\264\277\2627\336\226\243_\255?H%#\000\212qi\277\240\246\231\016y\016p\277\004\262\276v\240_\230?\265\031\306\241\007\272`\277o\210\367=\240\366\236?\255\000\210\326\031\026\310\277j$\332J+\377\226?\336\3406\217\364\230\303\277\025\363v\034\273\275\234?\312\007\343T\313~\205?\322$\301\t\314\002\304\277\224\216\014\030%\345\214?\237\0239c\317\262\264\277\327\314qt\236x\306?%\264D\244!\325\301\277\0315\006\024Z\242\302?,\272\246d\2430\272?\307\310\361\017\3037\265\277\255;\214\251\243\220\256?\221\210\304D\222\347\177?\340H\332b\237d\266?\247\217c\177i\254\250\277\327\334k|\371w\241\277\341\257\032gud\231?m\263\364\303\206\021\245\277\030\273\263\013\253\265\304\277\207\270\313:gL\265?L\353\231\374\265t\274?\373\335\2007\037!\317?7\371:B\202\345\267\277\370\037\256\032\373\211w?\313\370\377A\367\366\257?\347\326r@7\216\276\277\321\355\013=83v?\246\266\t\305^x\265?V,A~\302\206\265\277\000\257\221]\273\322\263\2770\206h\201$\350\232\277\023\rX\301\357?\256\277REz\216\315V\261?\324_\300\263\361\221\262\277)\231\276!\225\010\306?rA\2550\001\357\264?\340\260\002E-5\262?~\216\242\335\327\000\267\277y\240\006\202\246\334\275\277\037+p\301\323\372\265?\017\221R\361\306\274\276?\275\336 TR*\237\277\334\313tt\344\272\321?,\033!1\247,\262\277\361_\362(2\357\214?\025$\007Z\035\202\244?\310d\'\206;_\307?\324\332\035\222g\206\204\277\270L\3724\310R\260?[\204\213eb\350\300\277>\326fX\350\331\307\277\223[(\374\376\272\300?\177q7h\\\002\222\277\263r\002\244I\253\241?O7<$a)\262\277\263\371\"\334$A\266?\373\023\367\243_\325\303\277)\"X_^,\304\277\354\240\334Sg)\203\277C\356x\360\201\253\314\277\263\370\343\331\025\001\242?\300\326\000K\'\320\220\277\2464P\023*j\303\277\241\323d\331>\006\301?k\357\365\001Q\241\266?\020$\377\366\r\355\273?!\004H\255\236\007\267\277\230\022\343\300\347\267\317\277w\234\300\342/\014\272?\207}}r\332\010\264\277X\003\325s\337\006\307\277\213\235\277\277\251\332\234?\205G\037\247\324\310\223?=\314>\351hh\325?z%<F\202\315\326\277\316I\r\344o\366\261?\"\200m\200\212y\231\277\257\'\224\240\021\247\272\277\364:\346\335\347\320\307?\342\324f\362{3\261?\031\243\350\"\'\nt?j\324\237Q\202Y\272?\213\354\341\224\035 \221\2774PQ\310\254C\231\277\251N-\315\017D\304?=\261\303\n?\036\237\277\335\244KB\024_\252\277e\341<k\317\215\316\277\207T\276\252\034\036\262\277\034\242\343\256\223\373\222\277\007w\375\031NK\301?\\\370&>\006\233\315\277Ww\324\314\0078\232?\013\177\277A!\246\247?T\343P\033\255\363\214\277\261x\004\t5!\275\277\375\271\020\210\205X\265\277\274Y~\374\352f\243?=|yAK[\250?F\305\207\254\223\367\271\277\272\'\237LA\332\241\277\032G\321\253\005\346D\277{mo\t\237\310\214\277-\261gV\277\331\271?lY\327\3236}\252?\334T\342!\267\032\310?\330\322\330\305\332\306\242?1\010v2\330\363\263?\345\243\254\270\302x\265\277K\006\343Y\375\n\217\277\014\022]\035\353\276\244\2775M\332\273\253\260\245?5\340:|\230\366\303?&\223\263\353Q\206\255\277\227\214|\205{\001\273\277+\03500\307\004\300?n\000^\351%m\311?\025 \335\217\210E\273?\237\203\221*\230\370\261\277{a\224\263\212-\273?\027\232\304\034G\016\311?7\343\377\370m^\227\277}\\\325\177K\212\226\277\366F0\255\234D\307?\307\024.\243\327{\261\277F]Q\224\315\232\303\277\203\305\034N\255\274\261?i\342\210T\007\250\251?AJq\213\313t\266\277x \031b\354C\266\277[S\265\3357\216\263\277\303\nE-5\031\246\277\247\371d<\\\'\261\277\341\234S\003{\203\265\277zG\017\231\331\252\277?\252\367~\0313\373\214\277\363\271\262|C,~?\225{\023\254<\310\270?\257\324\354Wk\210\253\27776\234\374Gg\300?\332\302\311\034H\246\202?\'6J\270+q\214?\356\0316,\314\214\264?R\305Z\304\0103\264?6\304\242\365:#\204?PG\033\003\023\312\267?x\236\336\024>F\245?\030\205\236G\014\366\300?\245\305\361|\224\354\242\277\370\350\277]\022\006\270?\033\003NC\346v\244\277B\214-/\264\035\300\277`I\342v\301\262\242?x\035\233\3279y\211?eb\227}\301\366\235\277\212\250<\303\330:{\277\007S\261O\275\222\255?\300\036\016\257kT\304\277\'\325\334<\013\016\270?\231D\262\004\005\326\234\277\277k0^\372P\253?\365\304\207U^\342\304?~\374aR\217\343\225?\177\202\007\024\020h\303?\313\222\270\201\n\262\213\277\367\347+\357\334O\262?S\265\375\242\327\031\256\277\334\276\0132\362\034\201?\314\263\227\363!\355\315\277\206\321\317\241\002\253\222\277\020\374\234+\370\215\240\277\357J7;\254\010\321?\022\264\263]w\366\251?se\200\310\356\201\234\277\215{\245UG\203\274?\003N\367\025\342B\234\277\322\313\314o\014\334\273?\253\025\350\276\032\277\201\277?iP\302r?\276\277\341\027so\004\232\302\277k\366\250g\001\000\256\277T8FU\265\337\261?\362d\337\324\303\241\314\277\243pTZ%5~\277\264O\002pp\034\237?\0320\362k\257\371K\277\366\005$9\033\013\312?R+C`\362\021\255?>\337\027,\350)\220?jT\001\267?Y\270?\255\202A4F\232\302\277\307\033\236\267\370\316\307?\354\20618\2401\247?\300\231\210\321\346\006\265\277\303\'\001\354\270A\274\277\325:#\035H{\257?up\262\362\312\224\274?\305\354D}\353\023\257\277\207\377|\r\272[\273\277\314^\035\257\360\225\264?+W\271%-#\265?b{\321\272\231\251\255\2773j\307\242Sw\244?$\340\303\312pB\276?O\333\001\273\3516\231?\361\t\223\t\221\006\206\277\264\254\020\305U\344\273\277\231M!\002\300\261{?\010y5e?\365\263?\262\262\332>\315\230\224?\330\354\237\177<\215\232\277\330\350\n\300n\223\277\277Dz\373\021\271D\201?\261\373\373\270\002\223\244\277\251\333L\264}\243\277?\211\245\370Z\033Y\261?\363\302iG\235\372\213\277\272\014\332E\251\033\311?\242\347\201\336Rg\223?\224sO\205\017\237\260\277\222<!Xr\300\314\277\205Y\003\004\274\013\334\277:\035q!\353\260\262?\314\227\r\316\230\353t\277\363,\\\372Gh\242?+\"um\315\254\265?dn\004\252\331\023\275?\235\355\264_\262\355\302\277\203>l\035\2547\301?`\223\010\003r\210\177?s\361\321h$\217\275?\372\'\350\245\3530\302\277qp\264\232\365\353\215\277\220\201\203N\234\\\301\277:\355i\235\3536\306\277\022kVx\305P\300?h\022\031\262b\n\310?\374\266 \376\215\031\271?\301\212\037\345\013\022\300?\271\230\000N\230\366\246?\027h\217\036v\325\246\277;\273B\352~\030\247?\023\216\276\\\363\023\327\277\032t\375\325\372\214\250?\026\003\006\323\341:\322?^\'\244\2063\346\322?\322f\246Q\263\244\256\277\361>\000\022\266+\300?]\263\031\177\027\265\250?E\375!\243Me\277\277\257a\272\211N\322\247?\261\276W\375{V\317?V\253g\233u\353\240?d\270y\013\004\337\305\277\371t\333\366\3151\300\277\031\1770r2\211\230\277BZ\314\377\277\315\262\277\021\353\352\244P\341\227?x\326\330\271\250\263\252?\370\230\037\0258*\267?7w\036\032P\267\304\277\271\257\372#)\364\256?\212\250s\024z2\211\277\352\013\202E]9\276?\334\300\361\372=\014\225\277o\247p\246\345\027{?\n\267\031\036O[\217?\\\301\032\276\355\331g\277B$(\234B\377\270?\310\273\234\210\177\377\246\277\001_A\264\261x\325\2772|N\005\330\267\257\277G\244G\243i\222\256\2772v\305v8\033\233\277j\346\377%\305.\277?\203O\242\021u\177\233\277\227\206fLt`\252?\230\207m\301\025\217\312\277\001Y\023>S\375\231?K\341\327\177\350\220\261?\240\303\327S|*\265?\363 j93f\253\2775b\214\316\201p\231?\331\237G-Ue\255?\352\016`\005O\032\321?\310<\262z\336\350\256\277\247/\007\345$\023\265\277\"H\350A\242\230\273\277\200\226\005o\205\204\217\277p_\244\014\365\025\307\277\206\202xPmB\212?$\205:y\r\377\313\277\302v\336?\035N\305?Iq\\/n\016\275\277\250\307\257\232M\350\312?\323\230\251\212\214Z\244?\371br\016\226\315\261?\270M\364h9\210\310?\374a\266;M\026\310\277Z:F<\256\025\257\277x\353z\366\013O\273\277\303,\236)\222\030\300?A\017\005\211\r8\214?\177\307\026\234\032\010\255?u\242\364:\333z\240?\246\251\216\223\025\343\246\277<\3511\306{\234\244?\355\341\221\273\022<\265\277\264>\332\262X\261\247?\336z\235\325IH\277?\330\023\216\254\214h\251?T\317\371jQ\311\242?\000x\033\365D\021\261\277K\321\236{Ic\244\277\214\024G_e6\240\277\244ZZ\363<\237\315\277+\310\215\235\214\021\250\277\2455\327\177Mf\276\277\266z\'\341F\304\252?\\\207+L-\323\300\277\346\007T}m\001\242\277\201\003Bq\374\220\224\277\201u}N\272\025\312?\006\374N(\316\331\255\277!vr\3125\337\247?\275\365\004G\304\032(?&\373\317dOt\307?\205\"\370\026\337\001\260\277\324\021H\220\307Q\210\277\204\027\256\202\311\326\230?\374\013ge\030\212\260\277to\207\211s\030\227\277:\312\352\276\345\266\201\277^\313\001\273lf\244\277\243\324R\340\361\204\261\277\'\246\345\316s\006\266\277\317,B\027l\335\254?6\260\373u\357\006\251?\3432\222\304\242\206\266?$\006\241\327\327\322\263\277\204=\222\227\"U\252\277\234\316\302\010\343\247p\277\262\327\206d\373\336\267\277>L\363\231-\356\215\277\256\002:\235u\323\274?Lt\341\031R\257\270\277\031\207p4\035\252\267?`\366\247\242\300x\310?13I\317<\317\254?\020\242t\207\246\302\244\277\207\253\216\304\363\033\274\277\213_\313{5>\254\277\257{\207\021^A\264\277KG\031\355!\377\303\277\223Fyu\027q\304\277#f\021\234\0206\205?\210\303\300}\245\001\304?\244\376\001\341\2241\314?\013\334\004k\370-\273\277^\0037:\354\237\260\277Z7ay!\035\301\277\232: \366(\345\205?\3551\006+~\352\272?\263\226[H\\\000~\277ITr\034)\'\272\277\003\364\367\357\027F\253?;s\313Q\320\346\234\277\201]F\245\240\026\305\277\375\350\000\214m\352\322?\311\030h\\\267?\254?y\006\023\364Mu\260?\237\232%\260\355>\226\277\004\332\355HUO\274\277\374\024\275\322\342-\254?\361\022\000\265\340\373\223?\253H\306\206t\002\266?V\001\235\005G\221\270?E0\344\213=A\224?L8;\321\301\027\270\277\213\253\031r\212\273w\277\005\035\256\237\207\035\222?8\177RP\020o\240?\213\274\030\2522\221\304\277\206\314\252\261\206\344\204?\320\033\275l\256\230\235\277\333\303\325\204Y\352\267?\330\203\270+(\"\301?\016/9\316\336\201\227\277\302\242\376\237\225N\224\277\371G\311\204\201n\273\277q,\316\375\261\204\260?\032\243\177\257#\221\270?\331[\013\223B\030\275?\003\255\246\235U.\257\277\217FX\302\261R\211\277\343\001+vm\351\254\277i\252\024n\343#\264?5\307h\216\016B\262\277\017&\217\210\322=\303?H\207#5D,J\277\340i\243V\324r\250?R-H\312\257\307\204\277\244\220\210\243L)\303\277\261\227\365\377#\364\266\277 L\367\024H\372\244\277\361\237\343\217Vx\225\277\r\n%\267n\320\276\277=\251\225af\320\206\277\221\376\023\327(\327\261\277|\345\343\n\277-\316?\260\3170\352x\357\305?\003\353\346\202\354\020\255?\250\275\246\325\234\210\240?\277\26417\033\216\240?\220|\200=\372P\246\277\"\335\002\022\t\305\257\277q\352\017m\0077\263?\016\275fn!\346\255?P\355g\277\372\373\241\277\350\n!W\273V\267?\033s\274\204\227\317\242\2779\301\376A\255\352\236\277\367\240D\346so\247\277\365V\006\307H\304\316\277`\365\311(\0065\323?\242\242*\365\247\200\256\277c\201\002D\021\232\300\277f\031Qa\275Q\302?\030\027\2247p\237\300?\264\317\227\373\";\262?\242\241|\376f\357\245?h2\322D\315\200\225\277w\245$$\232P\252\277\326\223\">O\r\241?;i-kQ~\252?\006\233\221\361\316\016\261?\200k\\\333\223|}?\353\314\027\002\013\311\262?\224\002\037\231\242\037\232?\241r\213\251\274{\312?\235\033\303\255\302\214\251\277\350I(,Fk\255\277$\"\340]\207\341\246\277\341<:}\355\177\214?l\353\237\255\332\237e\277\352\275oX\373\303\310\277MN\030\315\367y\222?3\030\032\236jQ\247?_\226:\354\300\311\253?\307}\266\370(\033\276?\250O\211X~\235\275\2772&\006T\203d\256?\262\374M\267\235o\250\2779\027q\262\037\202\221?L\3321\016\251\203\313?_RMU\376o\276?\260\344|\236\372\202\310?\230\306z\344\231Z\265\277\362`@\374H\260\253\277\2615-F[^\310?\276\3271\026\3131\277?\3441\032\007\363L\254?YBw\243dW\312\277\360\005\243_\260N\204\277b\373\n)\302\024\303\277\177\326\372\3514\276\246\277\334\'\231[o\260\223?&\204d\313\303Z\255?G\312\000\0172\312j?\224\350y!1\305\307?\260\301l\177\227D\252?\2466\024<\333\001\244\277\301\037\313y]G\242\277;\340F\241^\205\261\277\327\244\264\203\177T\240?\216\305\345\310\362\t\300?{\334\312g\320\320\307?\371\373\263\320\226\242\277?\022\027\244Ep7\210\277\350\345\3025\211\"\317\277\003\033\324\006\363>\227\277\201\330\332\310r\000\262?\027\310\324\376>~\206?\032\005\310\331^\356\270?[t\240{&\376\271?f\347\ru\246\227\305\277e\375>0\212>\302\277\034\374\315ev\327\265\277\013C\260\001:\233`\277\006\2127g\250\365\312?\301\333\213\370\215E\301?\335\275\210\302\231L\267\277E\373\';\312U\252?@\006*|\177\221d?\235NT\261r\264\307\277\200$k\336\201\222\265?\357|,\"w]\263\277\001\350\312\256\274\260\335\2779\030\223\325\024\366\236?:\215\362|Q\005\236\277XHIIw(\277\277\325t\232\260\333=\275?\317\001u \006\311\222?\336\346\321\323\024?H\277\257\r\014\312\226\272\272?\355\267R\017\236\031\223\277\223\211D\305\357I\275?WEY\353\355\326\255\277\013\"\023M/\332\274\277\324C\003\310\000\317v\277\313\310!~\2768\300?V\325\004\307\355\366\257\277\r\203\244\325\306\346\262\277D,3\227\370D\302\277<\331\036\211\217U\243?\262\201\246\023\344z\311\277\230\035E(,\245\247?\355\002S\035\311i\274\277\311\315\326\214\326\326\262\277\240B\"\266Q\010\263?hj\370\241\214t\260\277\024\317\204n\261\375\203?\277\321h\321\241S\322?\315\213/\357R\327\253\277\377)E0\025\371\320\277\326\367\225k\310\242\246\277\245\353lfX\'\313?\332\314\364q\366\221\216?\323N\323C\2449\312?wxkP\270\261\266\277\027\314\177\267\242\375\232?\375\366\207z*x\322?]\206\3366\205Ox\277\247J\227\302d\205\241\277\007=l-\356\246\314\277\347\232V\'7\372\250?\344\317\316\370`\256\316?\267\"S\036\016da?\300\005\3257\371\263\316?\251\264V}\032\233\267\277c\307\021U\207\345\320?\363\013\352`2\234\305?\365h\224\n\241\272\245\277\244\003\272.\216\254\273?\271\377TB!\032\206?`3\227\344\241=\263\277\007\2210\350xI\307\277^.\035\010\2103\271\277\303\014\357\242\357\254\254?\277\210C6Fp\323\277\342\261\\\301&i\261?\005\000\321\0219\360\261\277CR\205}\000\005\253?\321\313\334F;\274\327?G]\374J\252x\313\277~\343?\273[<\272\277\276]\261Xs1\240\277\352p\212\276\343\263\230?\360\211\356\202y\345\274?\210O\026\217\344\001\241?\355\377\272\020\021:\267\277\222\032h%l\375\302\277<\375\243\216#\270\267?\021\"R\363\233\307\240?:8\242\245\026[\260\277\217\031\302\232\277P\254\277#\336\377\213\241\252\256\277\315\252\2338\274\262\314\277\313\177\256!~\033\320\277\257\213\022\232\226\007\272?\021%mX\222\203\205?\245X\006\0016\272\264?*\354M\311\007\306\314?\271\301X\360\271\341\260\277[\231g\375S\253\270?\373\016\303\005\210D\235\277\261v\266\200F\216\255?\0311\026\267_\234\255\277\007\256\206,\371\221\305\277 k\241\342wH\261\277\025\312\003\346WT\271?\360-\370\262dqZ\277h\017\253|\220Y\266?U\277\234g\361s\257?\377g\323T\263\235\177?5\250\350\321\256\014\241?y\3249B\312\306\235?\'\332\207\217\205\225\272?he=\214\225\033\304\277\251\003Z\024PN\220\277[\031&\201}\345\260\277\341\217\252\337\2765\251?\200\322\203j\373\264\243\277\370\257\270\003#1\241??\206\315\336Wm\233?\205\026\263 pJ\264?C\312Z\230\221_\225\277C\272\017C\243\374\305?j\006^\377~\257\253?\336\207F\344\241\333\230?k%\300\260\257\305\235?\210aeRr\253\275?1S\347\212\275w\260\277<H\261\177k%\243?\227\201\320%\232 \247?\225\222l3]\231\263\277\352Cc\351\021\330\255\277\t%\373\033.\202\267\277\345\242EF\314\274\225?o`\361\322C\227\265?\026\263X\350\030:\267\277\030\272\205\235\333\223\222?\362\216\263\311\245)\261?1\201\361\330\320\030\316?\252\246\035M=\177\217?3x\2676\266g\270?>\375A\025;\306\275\277S$\371\026my\265\277@\314f\243\2325\261\277k/\250\216-P\261?cp|\333\273\245\321\277\212\254\030\321jo\240?\256l\263\220(\353\322?\321\227\316\220\302\367Y\277\017\253\272Ek\371\261?\177y\001]<\202\241\277\301\230\365\337&w\240\277\020\351\310n\360-\301\277\2043Y\2753I\243?f~\276\371?G\272\277\024\345\255\235z]\210?\256s\007\270\336\253\241?o\205\211\372\242\231\260\277=\310\265*\036U\270?\342J>.~\353\304?\215\r\225\310N\360\256?\215\376\267P3,\270\277\207z#\362\373d\266?\205\n_\014\246i\200\277\242\367\322N\007\275u\277\326\314~H\225r\213\277_[y \036V\307\277\237\326\022\203\036\235\233?\270\263I\265\235\001\257\277\215\344`N\366\271\262?*5\235\276@\350y?\352\341D\010\203 \230?\252\003v\314\265A\324?l\021\350\376\214\331\261\277J\0175\325\316\326\301\277q07\325[\000\310?\361\357\253_\001\335\243\277\247\366\250x\246\202\311\277m~U\340\351\277\266?g\220\265$\313\306\301?\002\236\277\253v\222\300?IE\231m\204\266\237\277*Eb\023x\223\260\277\363!7\202&\314\274\277\375\251\335\017\014\212\205\277\004\007,Q8\364V\277*\355! R\366q?\303\267\272\210[\"\235\277\374\225\302\207\270U\221\277\237\245M?\376l\247\277\272\213V\245\337\306m?Ng\000F\366\316\271?\223\224u\230V\201\247?b@\202\n\256\345\224?\356\233\202\207\364D\220\277\223\253\026\242\n\341\260?E\030C\003d7\256?}\331\264\330\006\233\241?\204\307n\005\3722{?_-\304\266\350\007\220?m\21105\2544\250\277\317\247\257{j\330\214\277t\177\325k\227V\222\277\203M\332TgZ\246\277W\210wAs\000\264\277\353T\217\364\253\361\207?\205\2762\363\246\'\203\277p\317\303\346f\030\241\277x#\020?~<\253\277L\304\320K6\274\211?Z\333\231\265\002m\300?\023>o\320\331/\261\277\376\246\021D\342\312t\277\347\277\345\232\2439\\\2770\352\025\026\313n\302?7\256\254=\014.\310\277R\3013\323\031\267\245\277U\205C.;n\260?\335\212\271\273\002\241\302?*=\346\034\301\334\305\2771w\310\316\351D\240?\327\223\365\020\007)|\277L\262\026\214\301\264\247?\201\214\327\331\036o|\277\023\253t\321\227\372\264\277\262\361\030<\247\255\246\277:\323]\332\001\310\216?2\246\\\270\303\007|\277r\340\361\340H\270\267?\346\247\3725\310\371\216\277\217\327\034\210\215\247\247?\274+&i\347B\255?F\220\010\306\247h\271?\214u\227\233\276\266\227\277\213\001J\332u\302\305\277\230\353\362\341\275\344\266?\311\352z\221=K\265\277_\345\335k\322\003\272\277\305\203\273\227\322\373\210?K\207i|-Y\231\277\357\356L\233wL\226\277\244*\n\233@\254\221?2\204<\354\000\375M?Z\326\'\336\205\207P\277Ke@\373!O\260?C\241q\322\024\"\266\277\350wyC\313\363\234?\"\257]}\342\233\253\277\302\037\362\020?z\302\277\352\260\370dSYt?\306\337+!\307\211\303\277\013bj*\020\240\250\277\340\271\306\334\231\272\261?\252n\234\002\204\215\302\2777\332>/\177\276\214\277fLdZ=\367\255\277L\334\000%\340\312\241?\243\300\025\311\336\342\302\277\tM\215\233\n\267\260?\031\246\335\3278\034\216\277\344\235\206\313\240u\320?\334lyX\245\026\300\277W_\337\241Wv\260?\t\241\005\236\234F\264?#^M\"\316\035\322\277\3224@\241W\377\257?L1\205H\313\242\267?\237\371\271\354\333}\260?\177\245\334T\2643\236\277\236+o\017\022\342\271?]\022\247!\273\263\305\277U\2558\305\240\323\247?\002mG\235\036\205\253\2771\340\347\324\343h\310?\311\337\362\274\365\006\323\277\376\262Iy\305P\262?V\342\246.\001b\265?\'3`\276\305\367\233?\3526\321{\217gr\277\265>\014G\211\303\257?\227\365\326\025\267C\276?\204=o\364/9\302?\030\013\372\346\301:\222\277\031\237\'\001\255\252\203?e\007\264\204\342\033\273?X\227\221\243\236>\271\277\3162;7j\236\261?\364\335\024\206\307\r\253\277;\277[\226\362\016\234\277\363\322\370\355Us\266?\014:\256\256\023\241\266\277l\244i\235b+\300?\266\221\"T\266\020\264?\032\277\\\263L)\201\277{\230\240\253\345\202\030\277_\211P\031\236_\313?*7\213a\364\300c\277V\344\376\007$R\275\277-\237\022\220\213\276\276\277\240z>M\036\320\261?\305.\373\006M\305k\277\324ed\233B\340\254?\204\036\345\211\217\261\222\277\2654\265\005\n\322\235\277\273\310,V\312\334\276\277?J\304\"ms\240\277e<\027z\025\351\234\277\372\277\242\367\350\325\234?I\026=\t]\213\271?\215\307\344\222\037\371\311?\362`m]\351\251\273?\013\233{k\360\332\303\277\221\354\264\353v\374\300\277lVg-Q\354\216\277\n\253Y&\363\204\245?#\313\353\016@\203\266?\026\254\311\335\322\203\236?v\234E\256\326m\225\277\246\244\020I\207\234\254?\212\212/\367\363L\263\277^\013\217\257\361E\266\277\354+Vp\330\013\211\277 \216\375[/\007\250\277t\336Ek\021v\255\277\232\324\r\203~\353\263\277^\332YSn\205\257\277\302B\261Q\014\003\313\277\031\016\311\017\230~\330?\374\252\334\335\034\350\225?S\235\230\366H\233\263\277D\326\r&{\340\262\277\301\206c\230\203b\305??\331\366\016\030\'\253\277\231N_\333Y\264\241?D\027E\320\300\301\302?v&\337\334\235\324\243?\211\324G\304\353z\263?\374\306\327ol\353\316\277\251\244\370\372\265d\262?\177\010|\321\273\250\266\277|\262\223\313\024\366\265?\335Mx\r\030\354\247?w\237\317\315\220\305\260\277\371\262\023\307{=\274\277C\337\021E\r\032\261?\250Xb\232\332\352\246?\255\352\226*\021U\250?\364\020\032\312x\326\304?\335\261y!1\255u?C\304&\313\020\346\212\277X\242L\214?t\243?\2416\017q8\001\204\277\314\032R\312\0069\261?\022\360\337/\0022\244\277\213\006,.\366\237\264\277\211\274\326\300\"\255\303\277\217\332\226\362\206\304\262?\370\333\215\212\371\317\302\277\207mJ\232\001\024\230?\316\344\315\341+\200\247?P\t\270R:.\260\277kR\263\037\211\031\220?\306bX\303\336+\220\277(\325\000N,o\235\277\323:\025\224\363\233\260?\022\304G\263\3733\321?e\037_\371\315\216\214\277o\237\2375\027\314\211\277\031\237\000\025P\360\324?\321\351\242d\237\346\266\277\356\363\007\273\3272\236?\004(\007\2518\245\213\277\207\2243\263\353\307\303?\240T\020!\377Q\232?M\312\032\313\214\262\272?]PE\036QW\307?\003%\244\307\2739\274?\251ir 5\353\263?\022\003\201\243&D\265\277\233H\223\377-\317\277?U\372\252[Y\244\273?`\261\237~v\253\266\277\276\031g\260\017\272\230\277\355\356\345\334\337\301\265?\250b\223\253\357\262)\277\324\341*\005:\t\251?D\341(j&q\315\277\271\300\303\220A\262\234?.\316+~\317x\255?\265\031\2663\356\357\260\277\263\366y_E\207\242?u\030<J\240\345X?\273O\216Q\252P\270?\277\333\226\017}b\277? $\213\323>\300\302\277g\303u\352\336\031\274\277\373\226\216\255o\356\252\277i:\262\335j\341\275?\251\004n%\255\r\226?\347\363\034\323\000\t\301?\333\027\'B13\262?\005\370J\031\276%\300\277s8K$\233\210\234?\003s\352\264\177\275\256?\031\367\267E#`\260\277^\357s\341\217\251\255\277\362\262\203#\257\354\227\2778@\347\317M\025\265?\263\2748\250\0239\277?\\\276E\032\375\362\257?B\234\235\361:\215\330\277m\372\023\236\316e\264\277S\232G;G\222\275?\202\240\363Z\302\301\225?m\343\203\022j:\277\277Xm\034\013\026\251}\277k0\270(\246\265\263?\275\205!]\261\366\264?\361\210 \324F\261\307?\336Z\242\336\310W\263\277\372\210F\332\214x\005?\207,\313&\226\314\242\277\"m\356d\266X\300\277c\261\033=A\024\237?\243\334b2\223_\207?y\202\032\3038 \262?\216\300\306Qr\245\262?\023\324\213\220D\263\317\277\235\210\272\207\350\215\261?\030\3329\210\355\322\221\277:\347\037\304\345!\261\277\231\264U+\301\353\200\277\257\323\335W\377f\270?Y%\271\327^\212\223\277x\017\343y4\363\224\277\331C\223\'\360~\245?@/<O*\317\274\277p\020\326L^\225\250?\026?\336VX\320\245\277\270\331\343\3724\007\267\277`\007b\260\355\336\241\277Q2?\371\261%\305?\207)\340\265 \341\270\277\352\375\031\2209\226\314?\025\301[\006\362\246\261\277\221_\266\33621\216\277J\341\366s\367\007\316?\273\rfR\366,\260?\374\303\'c\3625\245\277>\314\230T\254\200\303?\322\345\331\227\036\006\306\277nS\243\340\260\226\223\277o\246\372\177\313\315\246\277+\247\3527\207r\300\277\217\311\310\213\204\371\244?m\321\021u\266v\304?{\n\004\016\200\311\227?\023\265\204\016\tD\320\277\221E\370\0056\204\224?[\321X\332QU\267?\212ug\304\267[\267\277\234s\003\371t\"\253?\nr\315\231\252\221\301\277\022\372\014Lxi\241?\312\250\003\036m\007\305\277\325\242\332\023\tg\322?\271\0177UH+\240?\207U\246\277\376y\321\277\211Sl\364\212=\267?z\211\364\227CL\226\277\262[4F\265k\263?`\335\211\341w\375\262\277\220^t)\245\272\250?\3769\014\003\246\036\303\277\270\006\035/=^\222\277\200B#W?f\242\2778\267\3532\2073\262?\262y*\254 \314\303?\233\326\310\317\332\364q\277\347\034\212\213O\027@\277\260\025o\304\266\336\254\277=\265\216\025\214\225\307\277\016\266\027(s\346\276?W)!Is\230\253\277\242?>\355T\207\246\277\211\030\"\005\366u\266\277\027 \243.O\347\265?\230\272\256\023\007q\234\277!.\002\344\004\251\307\277\201\217F\2731\237\230\277\276r\022@\235:\254?\222\262\2447\023\336\300\277\312\206\342\322\007K\261?;\354\272\242AI\276\277\215\250\242\txi\270?\330<\271\340<\373\306?\375t`\245+\301\272?\355\337Ht}\325\257?\206\002U!\350&\275\277\2629\010\316\365O\242\277\376\272\'.C}\240\277\374\300\206\236\225\363\202\277\372((\240\363H\300\277i\352\336LFv\260?%))\312\225\300\302?\231h\277;e\261\227\277\3620\n\310\320\354\216\277g\016`\375i\313\222\277\366L\213\233\231\022\262?\257\rbg\303\021\311?h\210+\303\212\024\261?,+\274\263\310\"\302?\272\214\344\203I\366\311\277.t\276\271\303\023\241?\201\205\366\332\214\306\320\277\001\232e\013+)\226\277rUo\272\263\371\261\277\022\310\321\026i\035\262?Fl%\017\0063\277\277\252\350fc\252\365\242?/\005\316\036\361\214\227\277\312\243p\204\030\243\242?\200,E\373\215%\300?\261\244\217\232o\226\330\277\3362\'h\257\231\226?\323\276\251T\344\345\237\277\316\314\342\335\001\321\256?\251I!\'7\267\263?\351.:\340\317\304~\277\325F\222\232:T\253?-\016X\302\n\236\241\277^#\030\327!}\245\277\240\334\226\227\361Z\304\277\353dT\306=\300\307?\315\305\205\034\342\332\300?\272(\220\365\001/\241\277\35421\342\307\003\303?~K\231\200\313\372\310\277\325\201O\303\270\227\217?iW\177\274J\246\232??\372W\243Qr\272\277\177\276\025\031\233\221\253?\223v$\376(\033\257\277Y/$\370\226\030\205?G\n\303$\267\304\274?\237\240\262\014\224\230\266?\'`\237\245\324\027\243?\2757\225\333\213\364\257?\237\346\021\277\221\017\205\277\266\260\226\365\311\335\245\277zQ!\236J\262\321?\240yL\002\336t\225\277\303@\364\302\334(\253\277\0253p\204|\376w?\305\234\337\213J\310\274?\335:(/\330\361\224?{~e\207\304\255\245?\201\325\371\256#\217\266\277\202\334\302O\rN\240\277=l\3656\345\373\260?Q\210\372\343\3068\270\277\003\202\311\213o\250\263?\020\227\003\004q\332\277\2773\034F\274\302\204\253\277:J\327\226\351\027\316?\275\262\220S}\362\261?\311{6\277\212\242\250\277\233M\200\235\341\000\257?\340BR\377\252\032\275\277\225yoy\253\177\257?u)\272\347g\316\305\277c5\302\224\233\353\245?<\214\002|O\277\235\277\032i\252\355\312e\240?i\036\245*\325\202\240?\372d\233\2466\303\302\277\354\022\254\006V9f\277\310\241\376\242X\021\277\277\326N\341\300\256\335\263?\342=+\r\361;\322?\205\366\210\215\370U\270?\202\254H\270\t\315\246\277z>\344\202\313=\300\277s\365\232\225\316n\310?z!\323\334\352&\227?\014\367\277\005``\261\277\214\201\234\223\262\037\274?i7x\371m\306\215\277|\347\350\374\300+\256?\366\007\202\252\013\263\303?\316w\357\242\253\312\260?Q\006\003Q2\265\273\277/\003j\301\201c\246?\340\007\342y\222\344\247?$\215\233\351\221\277\277?3\\\333\020\302(\276\277\300\301\236\237\2558\264\277j\230\257\3645v\257\277&X\203\217C\313\233?|\231\014V\267\364\300\277f\262\006V\214\301\310?)h\266\306\367.n\277\372)\217\024\276\343\264\277\302n\372\200\215\315\262\277Hl=t\035\315\264?z\367[\033\331\303\302?\364\037\210\005\231\204\266?\317\251\354\203\335\221\326\277\331\024>\010\313\036k?4\344\320\344\304O\271\277h+1\220r\\\252?\237\377\313\0136\270\264\277\004\326(]H\206\255\277^~_\002\312\270\257\277\275\010\352\r\235*\215\277\326\207\317\021I\224\273\277\005\026C\2255y\265?u\005\201\230Mb\300\277/Xh\273b\231\246\277wa\007\353\254\031\270?\034\300\023\260R\235\261?\353\212\342\251\241\371\245\277\234u\200{bN\301\277l?Jj\361m\220?\350\310\016\026\261\271\310\2775\033\323i\200y\263?\223\325\032\361D\236\244\277\305wF\224r9\274?U\010k\262\013\311\307\277\353\006\377\036\361\203H?\333\331g\034H)\303\277\004:\315\255\034\363\237?i&f\265\353\222\274\277\377/*3\016\322\237?\367\374\2639\334\246\312\277\030\363\ntC\013\224?/7c\303\027\321\223?:m\211\313|2\250\277\227\036i7\264\013\206?x\261\244\2609\265\222?\261\340w,\252^\272\277\032[\261\303\254\227\224?\001\275\372\354\313\257\240\277\236\230>\3036\333\246\277yQ\302\020\020\373\243?\347\301\267\236+\323\312\277\tD\023\2168\255\243?Le\262\376\232\032\206\277\010\202j\262\370\014\245\277N\273\244@4B\255?n\346\204t\352\272\205\277*\263\330\246|#\223\277\370\317\215\264\032 \275?\250\271\375L)\302\216?\227n\243{\325\341\263?\361\321\251<\222\235\302\277\022\036-\005\201\303\237?\\\345\020\234\326\220\\\277\013\220\252K0\375\260?i\275\263B\362\350\271?X\323\212\003T\203\246?m\"u\250\345(\326?\007\347T\017\n\005\320\277\220a\0345\300r\263?\316\235\010\214\263_\277\277\014\026\377\002\247\337\300\277\032mG\373\342\000\301\277\027\001\031\366\214\207\243\277\355\302\2251\314g\264?#PX,(6\207\277]\016Rf\036d\237\277Y\007+\303[j\250?i\256>@uB\263\277\250d!\377\032Q\215\277\200\032a*\025V\301? \256\364\254\356\032z?:/\223n\370g\214?\355c \247\037\032\235?\272\267e\341\304\250\233?\301\204\354\321\334\"\257?\200\316D\r\255Yy?l\202=\366C.\302\277\014\t\033p\275\227\251\277;qg/\236,\300\277BQ~\202v\276\206?-P\367\2459\364\272\277\254\024\307\373\203\343r?\210\004\036\\\370\302h\277\\H\332{\251\350\256?\n\264\212\022\342W\224?\246\352\261=8\272\313?U\314k\214w\204\262?]\236\272\r\024\361_\277\326s\227\262\005\005\256?\247\262\354\014\307\214\264?\007\372\t;\305R\263?1I\204\013\243\345\245\277\360\t\3251\032\177\302\277)\231O(N\034\304\277W\024\t4A\332P?\246\"\217\352\354^\275\277I\324\251\300\366\305\321\277\255@\265\re\305\261?\203\004{\311\262C\230\2776\363f\271\225A\301?x\027\317[\345\274\320?\236H\221\005\245\255\264\277\315\370\235\350\340\235\307?Kx\353\2626a\243?\264\373\276\200E\255\302\277\027FuOH\010\270\277\372\307\0331\263X\275?$\220A\020D\214\266\277\\\006\026\265P\350\260?\305\357g\0367\301\264\277\300\245\233}S\233\276?\374\273BoyK\220?\020\r\236\020]9\260\277\271!\232\355\014\371\302?4[\216\260\230\006\271\277\252XP\030\220\321\255\277\020\\}t\226C\233\277p\2347!I\210\323?\303\263\'h\030O\236?\027\243T\224\204aq\277\210\020\224\216\363\232\300?\006\023P*^\r\204\277AG;\373\275m\243\277\272u\301\210MP\232?\006>\035\254\271\343\270\277\243\362\013\2531O\253\277$?\311,O\006\271\277\362\371n\005\377_\301\277\310\306U\311|Z\312\277\214\304%\006\316h\307?\364\245\337\027\216B\256\277\006\307\376\272\303k\226\277p%9d\236\311\302\277\357\330\226\325e7\300\277\263\202\271DK\332\217?|\215\235\302[*p?R&\323\355\264#\277\277N\363v[\020\343\240?%\03593\021\351\242?\261Aa\260z\334\227?!@qY\2440\275\277\"\360\226\tX{\262\277\200\360_*\3263\257?\\\273\014\360\3674\252\277\342\275#\021\023U\245?\030\266\313L\264\321\304?\214\211q\262O\211\273?\262\337\367\004/\333\260?\216\253^\"\024\034\313?|\267\343\232\373\347\227?\376]\255\377\360@\241\277\211L .\240H\264\277\315!\307\022\303V\246?$\277\326\240\235\222\215?Uaa\331Ce\222\277\3569\000\234\237\334\265?\224\234\340U]\363\322\277C_z\202A\320\225\277\204\210P2\312\315\223\277\013TA/\253\372\261\277\265\007)&W\023\271?`\260i\323\244\365\261\277\311\266\221V)@\300?7\360\014vw\263\244?$\326\304E-\215\255?\220\nX\361\373,\242?\205\004`\340e\n\302?\\6\'\266a,\213\277\300\271\364\310\003J\206\277\000\236\021\332\211\210\277\277\247\333\245j\r\271\320\277\372:\307i\203 \224?\254;_\211\312\034\303?\366g\3137\222zz\277u\333\020\216\367\370\252?\302(\32279\270\303\277\177\375op_\026\307\277\341l\010W\'\267\302?\n\250d1f1\301?\251\252\222s\004i\300\277\262S\227\361\377B\305?\201\233^\355\357v\241?*\331\314\352\270\341\304?s\245\264k\333\337\313\277\016\2253E\271\372\300\277v\027\347L\222\206\236?l\353\016\226\335p\260?Y\335\241\210\235\316\265\277\0073\023\374fB\224\277\377\006<l\036\246\303\277(\366\244\031^]\250?\006\343\366y\236Z\271\277\332\215[\202\344\315\226?\354\312\275c\307c\261\277\223\240\264\t\255\263\320\277\210Q\307hd\243\266\277/\372iQ{\234\240?\376\375x\032pN\277?\225\263\027k\177\202\243\277\334\341\277m.\266\266?\005jc\020\244X\251\277\242\314F:\351\373\303\277\355J\037\202\016\346\272?\352\263\307c\327\004\255?\t6\366\320\210\201f?\306mho2T\310\277m\2228\237@\305\264?\003\201\270U`\3651\277\355\203\031B\"\233\260?\033\340$\332\332$r?.\032\336\256\342[\254?y\276D/\353\360\320\277i3\255\3151P\267?q\335\235\274\010\226\241\277i\273\211\016\001[\266?\311\337\372\0224U\264\277\237\336}\034\272K\256\277z\357I\320v\252\225\277\346\316\200\333\237\013\264?\257\261R\221\227\367\247\277U.]\000j\242\207\277\301\212[\002@\331\214?\016\272Y\375Y\025\303?\266\245{G\324\212\263?\252d\342\241+\232\312\277u\032`\016\312/\300?\314a4Eq\016\220?\233\362hm\034\010n?\273\347\315\306\021\354\223?\251\237\313\206C\235\257?\212\373G\002\343\332]\277\372\025\301$\2705\211?\244^0\3463W\261\277\352t\346(J8\310?pU\321\235\016b\235?\252\312fnz\353\235\277\250\022\235}i\277\244\277\001O\355.\004\253\241\277\235\023k\306\221\205\240?\370K\254;\027\361\302\277\262\217b\363\217K\302\277\353F\214\251\302\342\276\277\025\377\322\367KA\306?5V\253\377\321\322\326?\373u\317\357\006\213\325\277\301\016\031\357?>\204?&zCX\321|\245?{6\314P\000\237\262?3\206A\351\253\002\236?\350\2145a\211\265\263\277P\205\246`\2652|\277\245\212\r\224\255^\247?R\245\027\202\023\014\306?\215\252D\313\2656\267\277\326\370j)o&\312\277=\263\270\207\006\033\253?\210\376\312\261m\347\313\277T\305N\222\333\335\300\277\222EH\327\337\372\235\277\333.\256cT\333\234?)\003)\355\241\233\224\277p\3751\201s\364\305\277\005\350m\002M&\227?\203\275\024\275\363\237\245?\357\203\004\361\2349\273?\361\213B\032\222$\300\277\375\354\321|*\245\303\277~Z{_xG\326?\321\332\225nG\345\336?g?\341\034\013\001\265?\213{\013?\014<\220\277$\353\254\247]M\253\277\274\263Y\363\032o\303\277\025\204L\034\366\371\265?\232\270\221tc\200a\277\377\362@\320\227\345\257?\360c\0329\316A\230?5\tWM\367\374\307\277\362\300\2315\233t\271\277\251\240\267\024\261\342\274?\013[\354\355\345\374\256\277x\222\001\201R\252\243\277m\333\313\257\276\323\341?\335Hv\210\035\274\241\277-{\246[/(\227?\323\361\256u\302\226\276\277\317?\306\236\t\322\277?n~G\017\303\371\273?\240\254\013Rk\341\267\277\237\030\235u\232\364\300?]\340\013\014o\222\251?Z\347\203\351\302!\226\277\254\216\005P\232\252\306?\021\026\306\024\001\035\265\277P\262\205\232\037ms\277\373\207\002\306\335_\320?\t\200X\201\353\224\327\277\0347\212\221\321\'\250?\236\ni\231\274\237\310?\345;\342\317\303\315\234?\237(\237\215\004\036\300?V\374\371\265\n\321\235\277\3660n\360\004\314\220\277p\337\316\307\240\356\246?\265\013\337\274B\363\243\277t\304\246\333i\352\262?L\003\317\240\316\326\263?\016 \n\032pj\300?\'\254\265\326\024|\217\277\303(\253\270@8\224\277\326\331\217\301s\216\264?/+EqP\363\205?S\\7>\331\241\227?\366+{UW\354\260\277%\304__\270\372\251\277\024\001\241\306\363\246\263\277\271\326s\254|h\223?\321\253(`G\342\254?\013\216*\003\3038\272?\206\352\261d\316\364\273\277:\360\371\007\236\202\273?3J\031Y\"<\260\277\2633\255\202-h{\277\277h\242u\r\305\272?e\271\302\314\251\253\315?\357r\0271\213\177\262\277\263cb\030\275\361\274?\274\001g\334c\252\310\277\323\246\332)\374Q\276\277\333\'\236\337O\317j\277U\352\'\205Ie\241\277>>\247(V\326\303\277T\366\203N\247g\260?2O/-5\000\200?AUuD\027\270\270?Z_:\344\3725\250\277C\321\n.\341\031\246?~s\252\035\303\330\301?\273%e\177|\320\306?\230\261r\224\006L\270?\323\221\255v&\376\272?2h\234\037\245\306\256\277\036\026Z\205\272r\230\277\227uy\270\332\366\303\277G\274w\222\363\332\252?\347n\350f\244\307\247?~^\310\242\351\014\256?lGlB\374\244|?7\244\341\221w\235\253\277\242\020\277L\263\034\300?vb\334\225mf\310?\213\262IME\230\307\27701\367\301\\\320\307\277j\021\330d\005\217\264?G\321\204\222\347\020\310\277G\rz\373\341\017\303\277L\213!\333O1\271?\2663\217\206\3732\265\277\320\007_>\353`p\277\236\345\355\337s\350\260?\031]q\200\364\316\263?N\274{f\314\313\257?\264\217\032\020\364;\325\277\004\250\314\355\000|\262?\374.\367\236\332\345n?\020[\353!\245\341\207?\210\224\227\014x\362\207?\371\376\231\307s\037\215?B\232\341*\tf\274?\242\251\244\r\235\020\270?\344\232\261\333\375o\251\277!W\243U~X\245\277\352\267Lf\202\226\265\277\225\347Y5\311\243\303\277\034\3032>\363\354\240?\355\333qS\365V\241\277Bt=\232\022\355\303?\261\316d\334\321.\243?\003]#\360uK\270\277\300\210\n\262\276C\275\277\003\227:\221\322\220\306?\210\260D\324\332\212\227?zV\262\372\257\013\260\277\221\033(\306\013+\300\277L\"mV\3755\224\277\031\335\215\r>\261\253\277\014\345\335,H\311\306?^^1\0366\253\265?\310\334d\271Q\337\216\277>TiG\314t\257\277\223\361\226\350\2371\240?s\014\217g\255\320\244\277\241\200E\335\3740\240?\333Oi\247V\000\267\277dh\224m\255l\203?N\300\247\364Cp\242?\352x\325\037\363|\247\277\330\330\311b}$\276\277\232\214\364\341\271\362\255\277W\232\370\315\266\323\304?\261YJ\217\022\353\272?\014;\345b\262g|\277\226\350O\252}\245\256?\010\371\255\310\023\'\274\277\360c\340\005\006L\267?\231\326\321\301\373-\244\277!\030B(&\001\262?E\323\345\350/?\240?p\022\\\231\307\336\265\277\253\027\036\215\376\355\221\277\2623Se&\265\243?;N@\312\336D\321\277\236\341+uL\344\226\277`\363\214\262>\357v?\342[\374r\2537\265?@\023\231\205\001\311\256\277\3500\365\334H\270\263?3\263\220b\004\275\222?\234\323\301{N\033\216?I\366\202\336(\226\302\277\311\370\023\264d\225\211\277qCf\350\210\353\305?\"\373\306\376\343}\312?n\273\003\321^\241\203?\331#3\004\253\263\253?\212E\342\030\214\023\261\277J\321\332I\330\t\246\277\246x\256:\007\266}\277>\351\201>\205R\247?4\220\3002\302U\322?\371\307H+k\353\255?\\\263\023\006t:\242?\020\271i\002\375\326\223?\217R\326U\023g\255\277<\276\035\215\3773\250\277\3119H\220\007 \253?\321kS\036\017F\303?A\213\035\271\270/\260\277\324&\3753\201\224\275\277E\215\315K~r\300?qv1\001\343+\324\277=\3413\376-\017\244\277\2600\371s\000\331\300?\275|\\H\352(\321?&G\001[\242`{\277\216j\2170:\362\214?\376\212;6\205\371\274?\212{\210 sk\244\277(3X\320@\010\240?\335Gpp\314\027\300\277\305>1\002=j\227?\201A\301\344\276\242\250\277\310z\346h\301\366\306?\256\210}\220\223\274\277\2772\025\210/\214\355\270?]\250S\325\'i\224\277z\273\376R\233\244\274?\317|\323\273\025\004t\277\025[S\340\316\325\202?\222\177\034\022\312\020\245?\343\267\261l\205\252\311\277\356\214z\000B\013\244?\240\213\205\206\'T\217?\215\006\312\333\321\022\271\277\333\237h\006\250\240\223?%\377>24\236\261?\305\206B\367R\204\262?\224\335\305H\223\363\303?d\322\366\311\331\267\274?D|0\020g:\230?x\241\372Y\374\265\266?\245\247\004/\245/e\277\361\331\215\3001\370\220\277\352s\226~x\241\267\277_\320\327hu\027\260\277\230\364\355\376g\322\266?\233\016\363\221\350\007\241?\264\240\222^\214M\307\277\254\367?\212\276\256\241\277\332*S{i4\237?\272\331\3143A\201\265\277\346\260C\231\365\307\300?f\262\035\210_\351\226?\306Ex\034\311\217\260?\016\272h\250G\327\243\277v i\210\276\223\276\277\367F\3025\246!~?\266kb~\002\014\305?\232\242\243\202Q7\240?[\323_tx\357\256?$^\201\000a:\241\277X\253\255\316?i\236\277}\0139\201\323\213\223\277\2271\220\252\260u\202\277\306\246\351\"\242\202\300\277T\026\230.\373\321\327?\316\243\247\327#\226\300\277\241U\330\003\311\323\240\277n\201z[\312a\241?\274\344\363\327\030\257\241?l\210\205\327\325\341\214\277\'\245\215\313\260\341\220\277p\300\224\216^u\324\277\275[\311\330\305\341\226\277\243\257\2079\236\014N\277&\211\256j\272_\272?\356\3453Z\2147\277?\361\205\354\375g\245\231?w\334?\230\305\215\210\277\244r\n<\2712\263?@\332\216?l\\\266\277\251\360\t\267\224P{\277\034D(0\252\303\241\277\327C\221>\361\214\232?\261\210\355x2\362\262\277\267M\270\330v\030\274?sv\251\267d\337\272\277\353p\344e\375\323\255?\350\024/\243\0225\245?5%A\212aa\323?\010J\253{\202\"\263\277\354v\217V\373y\257?\203\316&\034\252\323\304\277\277\204*\030\265\014\317\277vjg\025_\372\270?oQ\t\315\0131\211?\350\003M\206\251\277\272?p\377=\207\005\307\257\277n\247\250\352\244P\256?\016\305\261\342\263H\276?-uw\224\325Bn?\004\270\217Lf\025\177\277\001\224\267\007C\000\262?e\302\237\376I1\316\277BOd#DH\325?X\375\'R\213\265\211?\302\026~\273\323\334\303?%\370\200\233\3320\310\277X\004\236\203\220\341\250?c\255v\255\025n\301\277\005\273V=+\030\255\277\333);\006\016d\314?\273\3172\216K\327\250?P\3572\030\256D\214\277\246\246\373\373\206\213\252?\324b\031\034M\305\261?\253\326!\016\210@\221?\214@\264\020`)\260\277\273\215\300%+\342\334\277B\\u\0235\227\301?\207#\200\307\327\030\263\277\313\256\246Zf\247\220?}\"\252\357\216\220\264?\233\n\013T\272\027\243?&\2348\344J\311\262?\306\357\335\263][\307\277\367\364\246\032\037\223\247\277,|\007\302:1\261\277\314\350|\207\022\355\256?\023\030=r\324\203\216?\177)\351]\205\335\251\277\226p=+\312y\267?\204v\366\266\374\233\315?\224\307\370lV\021\225\277\350eD\365\316(\312\277-\201\344\367\312`\201?\217\241\364\262\023W\213?s.pS\223)\275\277^\006\367pg\263\251?]\376\"?\234\366\300\277_\"*bZ\230\211\277#F\333\"\257\362\243\277W\"P\300!\317\260\277\0050\221\030\025\354\240?dBP91\024\242\277:Q\214\275\010_\310\277\362\352\246@Y\004\327?agu&9*\277?\363\215\246r\336\272\253\277\304\236\303JpP\240?\023\353O\230\246\333\266?\246\'0E\326\033\200?\250I7Mr\210\206\2777\250M\222.B\263\277)I\213\364ks\301\277w\243H4\240Q\302?%,c\225\354\356\247?\025T\362\246\214\204\274\277\013+\267\246\247>\270\277\246\275\006\316\326\342\307\277\200\225\335\275\330\021\323?\306X\257`J)\251?\366dG\370\235\245\252?\026qTJ\035p\254\277\002\r\232l\214\036\201\277D\177\014t \374\244\277\207\002\327\177r=\265\277hq\033\205\000\352\263\277O\235;\013\371\357Z\277\222V\330M\214\336d?\016\257\216p\323\263\272\277G\247\3568\251F\243\277\375\233\232gX\324\205\277\245n\'\342\335\265\321?\203z8\354\016\032\337?v\016N\237%_\232?l\352GI\320\207\247\277oz\371\307]\001\240\277\300K\343\177P\377\240?\010\215\241\276x\354m?\342s\337\350D%\264\277\314!\277\";\221{?a\025&\202\234#\224\277\304\374\251\337\002\211\273?\325{[\262?w\266\277\3469w\231\261\375_\277\234Y\376-\211}\206\277nc-SjE\304\277\247\355~^\315\252\244\277\0233\354,\030\013\253?\370\326K\327\026\220\261?y\2703\205Z\207p\277\330\036\301\030\213\207\266?\177@\304\203e(\267?\014P\231\026\004\310\227\277\370\007\213\0358\357\310?\372\330\033\224\003\245\261\277\347Qo\303\351B\264\277\027\023F\364K\323\272?Y\374\355\350\204&\251?\210AGOp\276\226?\273\372 \241BJ\312\277\251\322\016\334Uo\271?|\030\261x\313\034\266?XF)\010\310\203\255\277-*\003\340\370\275\262\277\310un)x?\245\277\007\3700\3765J\205\277\247\257\255\204\326D\303?>\242%\244\235z\301?\274\210S\252\262;\250\277N$\361LX\360\261?\224o\r\234ar\250?\231\021\310V\237*\253?\217\023\252\306\2263\260\277\212\t\372~\352\n\304\277\032\306\216\313}\025\262?\242\177K\271\343\213\230\277f\257\247f\035\340\212\277\210\243=\273\001\024\232\277\344\253\3652\363\342\222\277\331\364m+\n\371\260\277\367\317\222\003\006\306\264\277\211!\210\271\314h\303?e\220)\371\224\n\177\277\254z4\020\226\324\303\277\371\371\274[\370\371\316?\376..\276\305\333\270\277\177\366\021\022\221\354\265?\224 j\2452\005\260\277e\307\245\0200i\274\277\257\310$\003\365\252\240?\2339\236P\230\010\273\277\334\260]\030!\237\317\277\234K\237\3009{\263?p\341\273\332\017/\237\277\366\344q\301YA\307\277\324\035\310\234\3660\302\277\2176\037\366fk\251\277\343\352&\2472\036\275?5QT\365FR\271\277\367=\207\203\232\314\245\277\200\363;G\035\313\211\277\304x\263\214QC\263\277\361\002\006\254V\"\276\277\374\362\343^>\220\253\277.\327\r\r\003\021\245?8\212\r\236\006\363\303\277\362\357\021gk`\300?\377\001\344\t\206R\300?F\213\207I\301\000\253\277\270BG\370\260\233\237\277{\020\373\002fc\303\277\014\343\251\2326G\300\277\241\203W\3525\370\275\277\216s\313\321\226Mr\277\243B\365Y\223}\265?L\337\312\375#\271\266\277(\306\017\t\273\030\222?\321\037V\331A\202\221\277\003f\330A\270\221\250\277\224\310\006U\021\373\261\277u\026/\020\017\205\256\277\033\226\323l~\331d??\307o\225\027\376\264\277o\313WqmL\267?C&R\264\206\036\200?\317\375\261\230\306\234\303?\314\354\2174\336\363\231?W\274\233\377\036\264\265\277w$\372Q\323\310\301\277\332$\232W\266\037\306?\321\256\356\226\357\331\266\277^\365\206\306\220l\223\277\025\312\\@\030\267\261\277\304b\313\312%y\223?\311\254.>g7\246\277\201O\3526\300\301\250\277\001\006\345\310\220P\251\277!\236\220z\257\332\266?Y\026\021\212\000\271\237?E\372\377/O\256\276?\207\346\346\255\366\222\265\277B\222\274\317\036\222\273\2770`\331\313\210\341\245\277\230\326\240aNw\257?\014\366\354j%0\312?p7\177\276\351\363\233\277\215\255\010Th\277\317?\017%a\320\255\375\301?\372\022bMH%\247?\221\007\300\375\316K\302\277\326\254,$Y-\276?\344\301T\336l\314\245?V@\021\005\035\222\227?\210%|D\371W\317?\246j4\247\022\273\301?S\020!F\025\213\270?\035\032\331\233\336\256\274\277\205\276\377\027\336\315\314?\027\227\265]\0374\320\277\216}lyY6\256\277\225+\240d\213\222\272?\366\247\203w\205(\267\277\224\262\206\206\275r\236?\373\355\007\017\254\253\217?q\255\327\231\316\342\260\277\263?!\n\022g\220?\363\3452\365\377\235\274?\340\344\272\317+q\313\277\370\264\244O\023\333\262\277\270^\221&P\300\247\277{\002\355\326\212\003\271?\322p\260\337\236\374\266?\362H!8`a\276\277!\345\022^>e\251\277q\010\261\272\0107\300?\200Ls\003i-\255?\265\211\303\013\342\265\220\277q\334.&\254\277\265\2775@\231\372\307*\251\277\035\241\264Ws_\211?\346\327.\233\n\357\260?u?,A\341\032\271?\356\236\307\r\003|\247?\3032K\352\002D\247\277\253f1\\cx\261\277\256\010\266\340\346]\263?1\361%\222H\t\264?\237\231\373;]\376\252\277\026c \206\340\340\245?\373\227\313B\r\303\262\277$n\335v\265\020\204\277\202\262\330\215\277\"\254?\211\337 !\305\203\242?\377 ?\252\330\237\310?4s\240\313Y\214\246?]\"\367\360\323\305\222\277D\030mS\356\"\275?\305w\200%x\260\250\277\216m;\034\340F\254\277\343|i\025\036;\237?\303\225u\316\320\275\300\277\036\333\342M?\323\217\277n\260\031\346:j\301\277_y\276\3107_x?;\020\313\314\221\036\271\277\324\343H4N\244\271?jn\024\270\267\245\231\277Dh \215\036z\305\277\252hM\321\0026\260\277-~A\226\013\313\212\277k\246kB\353(\306?\352\217\034\307U\372\226?\237\360\235>2\326\226?\231\306\tk\344\014\304\277\316\367\333\373#%\275\277L8\346\202J\327~?\231KK\272\232I\301\277\275\314\317\036\276\312\301?\225\217\014\020\256\030\226\2771\224\006\206B\350\305?\363:\314\241\272\222\242?\221L\355T\014^\303?\034\3646\277Wl\203?4\320\211^\3069\271?E\214R\303f\343\261?\007\2065\335\247\321\215?\330\017@\360\3040\242\2778\034!\221w\025\226\277\021\327\335\322R>\323?\217\267k^>\231\264\277!\204&\221\312\203\266\277\234jq\250h\316J\2777\276~\237\"_\312\277\361c\'}j\336\237?\310`\306\n\3135\241\277{\244\315\350\241\271\216?\026=\030\304\324\001C?\370!\201\"\r3\275?.Z\277\307\033\203\272\277\206\217\277u&\320\225\277!\247\357\375&s\260?\245\250\314\2573\002\310?\272\025\346\302\360\260\200\277\353U\327\036\016O\265?\256E\305\302\010~\305\277\312\332\313\n\222\013\261?\341g>\245yD\306?x!\365\020\363\373\261?\352\t\013e\322}\256\277\243\316P>\206W\256\277tJ\222\202\027,j\277?\360\266\262_\212\274\277\3400\2564\300\365\275\277\023\254P\372L\016\242\277\311\261\345\351 \273\260? k`\003UY\244?\321\257\354\311\245\350\241\277\n\315\312\3314\373\263?]\254\221\273\370V\214\277z\315\n\226>,\255??Y\232\327\211.\212\277\244\243|D\235\231\210\277\017\201Q\214Z\332\260\277QO\252\346q\213\262\277;#\317\205\336\017\254?\347P\215!\264\246\273?\274\325\221\232M#\304\277cP\010\270\333\234\225?\000R]{:\213\300?\367\222y\234f\342\273\277\333\3517\315\222\256p\277\220\204\217\217ea\242?\301J`j\340\031\226\277\271\257\230\221\321\217\257\277}\203\264o\363\026\220?\273\215\374\206O`\264\277\316lG\367\313\236\261\277\254\032\212/\340\305v\277\007\223\330\376H\277\267\277c\274\\H/k\264\277\374Am\367\233x\274\277\336)\241\3055NB?M\346H5\025S\274?\345\321\357 (\010\257?\367}\277\027\330\353\273\277\325\232\346\024\271\343\257\277f\030V\343Z\003\237?UWX\022k\014\307?\275\330L\350>\303\257\277DZ\031m^\361\244\277\3551\331\306v\244\217\277\234\005Zi\320\366\220\277$\331\240\372\242\023|\277F^\324\210\246-\260\277-\321\325T\374\020\266?\264q\317\370oU\300?K\016\tW*n\276\277\364\312\347\322\314R\244\277\341\211\037j\315\230\234\277\274\223wj#\334\267?\261C:_K\t\314\277\257\356\360(\242\345\267?\207\004\240\032t\272\273?\220\037\341G\276S\265?\0173w\247\363\303\216?9\237\242\025\372\362\304?\177\tO,\307\374\250\277\242\013\264\24560l\277\321\261t\005\364$\247?\256\031k%\312\323\267\277\266N~\272\034\372\223\277xh\215\360\375\220\305\277\274T\267f\237>\306?k\014\364\335\241]\262\277\212b\013O\251\223\251?\206AL\265%\247\305?\271\0252\247\370\311\313\277\006\2471g\260\370\266\277\242\2468~\345\177\265\277\311x\223o\330\271\257?E\016U\376\026\312@?arU\330B\346\216\277\333\003a\203i\371\201?\205\346\215\332\017\343\265\277\0327\224(\037\252\313\277u\305.\232kF\307?\264\027n\332\211\231\331?r-s(\376\334\266\277\300\201Jv\354\034\274?z\345\236L\365\325\231?`\226@\246\312\025\231\277\265+\302\212\355\262\233?\260\371\013\020\037\316\312\277|\310(I\341_\276?\315^Z\2437\033\244\277\304\351}&`\010\302?Q\004|8\216V\267\2770\324\334\203\351\254\261\277\312\222\002\325\346\245\265?n\340i3\007{\226?\245\263\335\314\003(\250?\320pNr\303\377\211\277\377\240\342\030\341\000\251\277\234\205\\\226\340\204\265?B\360\207\364\010\345\220?\374M+\222C\020\265?vN\275h\263.\213\277\325\271\371\n\267t\232?\tl\216Ir\254\240?%\306x\232\217\320\275?\277\237\245\212&Y\274?\215\307\250\342\020Ts?\310\323x\033b2\300\277Dpv\315\313\253\222?\314:>\23755\266\277\037\231`\331\275\021\242\277\205r\302\370:\327\272?bZ\323\257zB\236?c\364@\231T<\265\277&A\261\272w\023\313\277\377T\245\254\000\257\213\277\344XO\360\362@\265\277*\033\013Y;\242\236\277\013\261\262u\032v\276\277\376\332\331|\027\366\264?\2257o\244\365\366\225\277\244\2640 ,\204\277?q\346\264\036\317?\302\277,\3314(l^\326\277ut\243#\374\364\263\277\006:o\022\216\006\300\277\316 v\232\t\316\311?X\013\301&\363!\267?\n+\366x\"X\237?\0316W\271\213\260\270?\235b\301y\323\217\273?(\002\316\265\352\252\204\277\215\272\236\206{\216\216?\000c\253\026\020A\322\277w\"\204\270\024K\275\277\261&\250\274\375\252\211\277\366\214\000\226\234\\\277?\025\036\236\354=[\317?\206\007\342{\333k\275\277\353|\304\340\214\244\306\277U\231\244\266[\330\322\277\206-\363w\221*\266?\336Y\266\322K\177\306\277_\207\234\253\033-\261?\302\322Y/\016\355\311?L\262\364Md\204\237\277\300\347\225\243\305\201\302?\007\261\255\027_\341\271?\213\327\0319\"\023\265?aT\3548\004\034\265\277v\327\005\346\371\352\306?\315\005]*\261_\212\277\210L\000\274\346\243\234?\245PCZ\205,\262?\037\t\2527\2313\325\277\223\024\333{\211\257\266?1\244\327\010\2401\302?A\212\365\371\035\221\212?D\265\302Rw\030\255?\255QT\030\213Z\260\277/\355{\260m\223\266\277\373\177\2162\325\315\304?\001\024\217a\3405\255?\245]\236|\263\333\246\277\220\374\004\205\247\035\233\277H\370\347\364\334I\320\2777\242Y\2165\260\273\277\210\276\026\216\254\263\251\277\334\n\211p\206Gu?]o\"\234\035G\210?\230C\265)\274\013\302\277\247\332\250\324\225.\302?Z\251\213\312\3328\235?\306\311i}P\235\250?\027%\000m\254J\223\277M\211\240\377F[s?\342\221\026\327\304\350\310\277\365\021\224\241\361\360\300?;V\270\345mM\243?d\311\372\206\355\226\300?;\342\353`\272J\223\277S\006\304\363\374\275\255\277t\326RTSY\313\277\243\231\211\351H\220\255?^=\255\216gU\230?\007_\202\034\311X\255\277JYl\330\266 \241?m\376\367\362\233\034\274?7\205\250,\250\226\220\277\000+\004l\357\251\236\277C\253\242O\n\030\277\277v\232w\212B\017\270?Q\331\321\237\207\222\320\277R\034\177b\213b\302\277\333\246\020\370\002\261\243?\251\020\344\235|\320\301\277\302\006\021\020\3721\242\277\231\330J\347\200J\261?\330\317a\243O\321\265\277>\003\"Y\300;\264\277p\017\320\020&\214\311\277Og\377E\377\335\234\277\313\177\033\222\340J\235?\211\277\t\005\231\372\313\2771`\n\336\207\272\262?\376i\2574\006\200\271?\252\242\241}\005\225\312\277\3602\370dg\327\253\277\276\367\n\364\376y\257?\302x\371WV7[?\345\224\331\3374\315\254?^|U\006\223\343\226\277LP\006\240A\'\246\277\202\334J\370kU\266\277\311\326c:\343\250\304\277\247I\247%\3077o?\277*\301,\303>\253\277\001}\375LIG\261\277\217\020\244\260Vn\274\277a\263\244\252-\265\254?:YY\017\177\372\264\277\366P\327\363\252\337\246\277\215!N4\343\333\205?\241\235\025\303d\r~?\360\252?[\327t\241?\271\212S\361\001\326\270?7LS*\357%\245\277\247\343e\243\2634\246\277<\002\326\0107\213\316\277\3727aqQ\236\242\277\037\030\327/bZ\213?T\265+=\3264\236\277OB\032r0\201\262\277\222;Ms\267\250\302?\201\324Y\216\313\330\264?\324\nZ\371\001\345\274?lz\253\202\345\342\251\277n\241\256\005\225\361\302\277)\221q\236\231\376\261\277\213\237\010%\010\303\272?\027\271/m\2042\261?\t4\261I\362a\260\277\366\217\244\371*\342\313?\243\342:W\227\007\256?\004\331\367\3729\226\244?P\200N\222w\342\320?CL\363Fuk\265?\366\273lc\274#\247\277\024\371\316\334\265a\216\277B=U\020j\007\244\277\346\001;\007\245.\262\2775\352\324\2230\021\222\277\374|\324\254P\354\315\277o\333\365\202/d\267?\206\221\255\360\327\361\251?\347\275\343?\3249\252\277wN\376\233\345\314\254\277h\255\263\202\213\236\301\277\313\223G\363\241\322v\277~G\263\315\010\242\275?\232E`{.\325\260\277;\341\356F\240\204\227?\037\276c!\'\321\200\277\237\204\013^\304\312\300?\341\241`\215C\250\264\277Q(\277\372\t\227\300\277v\266\374\216\351\223\205\277\223\212D\236\3517P?v\"\205O\307\301\273?\340\212\272\231\362\317\256\277\246\351]q\317\322\263?\270\261\2100.\220\260\277M\347\276\242\217\275\224?\027\263\273\233r#\320?r\275\265*\210\302\304\277n\357\277\340\201\260\240\277q\233\331V\017\026\252\277u\371\257V\360\361\316?5O\263g\226\333\256?x\315\021\2122\374\223\277\260)\0337\3309\313\277\202\303\300\270d\203a\277BSU?\237\221\300?\035\313E\016\233\235\244\277q\010\344!\274\243\261?\372\344\301;]\007\223\277l;+\360\001\353\241\277b\345\204\300\232k\220\277\023:\323\311p\033\270\277\351\001\324Z\204\260\251\277$\247\352\261>Y\307?aLL\214\325\354\242\277\341^C\276\370\371\244\277\341\373\350\301a\227\245?Mj\213\266\274\310\256?\207j\204\030\312D\212\277\025d\205\320t~\240?\345\347\265p\377$\266\277\250\356\027\363\342\265\301\277\370\013\347\365g\n\267\277\200\231J\0275l\246?:\372\310\332\361\274\275\277\267\363by\226\007\233?\311\245\322\254z\340\272?\261\r\204/\315c\303?\263\324z\364\241_\264\277Y-eZN/X?\313\377\\\034\355}\257\277\320\376\340\320\224\255\302\277;\223s0/(\271?\244b\025 $\344\260?\315\222\350\335V)\234?\331\\\312\002\365\261\301?\332\302\016\252K\251\227?\355\226/\224\355\027\221?W?\005\276bM\274\277O\313_\245\024\016\266?\r\3302\026\264\344\314\277\2441\366\n\006\211`\277\347]\377\244e\320\317?\246l\223\317\355\223\263?\322\247\241\224\025\037\242?\345\264\177\271`\363\214?\253\"\252\242\263\023\271?Q\031\361\204!o\232\277T\021\341\342h\206\275\277%t|\341D\370\265?K\340\355\3460\316\203\277\217\211I\366h\206\271\277\366\313\372,\2222\303?\350\266\010\2324i\267?e\251\225\014n\214\311\277kj\020%4\177\327?l\334\014\236\177\262\242\277\227l\367\261\006\207\260\277\223#\330\262-A\301?\205K$\223\005}\226?\007\"\016\014\371%\303?f\255.\253\375\272\263\277\341\372\266\301|i\206?\334\224w}\353\324\301\277t\322\226SL\355\226\277+\207\013EN_\226?Q\026\261\r\271\373\322?\240\2239\220+\365\250?t\350C\350\300\236\252?\000)-\272\275\367\242\277\246\305\361\200O\002\306\277]\343\331Y\274\210\242?\275\306\332JO`\300\277\3041Z\363x\357\253\277\277\254\337\344\020D\267\277C\357\323\256\201\334\227\277i\210\211&+\363\267\277\246U=\217\321\267\237?B^\350\216\\\217\257?\230d\347Ps!\202?b\217\361\253\013p\227?q~\204\345s\371\203\277sw\353\201\366\256\221?\363\254i\367\366R\270\277W\210\251\277\035G\217?\227\n\235\\\207]q?\343 1o4\336\302?\350(\371B\027r\274\277\246C\t\327F\305\206\277j\032\035\226\3163\247\277\310h\361\217e\224\300?\316&\305\270\305\203|?;\253\253\231\312\241\222?<Dw\250]\227\260?\t\017\027\037\313K\271?\310h\006:\302i\247?\021\376\242\223)2\261\277\237\213\243\177\273\302\307?\317\\S\341\332\312\315\277pt\025\3415:\235?8\366\262+\252\232\215?4ec\327\014K\247?\340\377\247\364%\246\257?7\304\301\225Q\364\246?VSU]U\364\310?I9\341\262\253\240\226?\024\007sd[\203\261?Z\231$\031\266\030\262\277S\3118\242\331\377\266\277\325N{\024\001\335\267?LO\332\002g\214\242\277\251\037\'W\337\217\261?L\024\305X\252\220\\\277\316\"\342%\272W\227?\r\301H\215\346L~\277\016\370k\000\033\021\274?b\327\265\\\344\334\257\2778\254\317\375&\220\261\277\266{\336H\232\010\310\277\243\300\267$\020N\305?R\257Yw\355;\243\277\235>\352B#IP\277\023\2467\344T \272\277\257|\010{Ql\274?\371\335\330\376\236\372\224?\000\375\375\032\025r\251?\276-}\232\356\373\306\277/@C\323\336\036{\2770\325\366\2422!\266?e]\254\010Lh\254\277\033\305\331\275e\n\204?\363N\271\300\370\365\232\277\252o7\223\352\242\306?\317\224{w\251\373\243?N0$\302\232\205\271\277\323\315H\036\325\224v?\010m\024T\315\023\234\277\206I\275\003\357\214\274?u{|y\013P\311\277\364Q\303\370c\220\260\277^\261\022\203\r\274\322?\345\257\272\006\310\241\261?c\207_\205,\360\260?\346\314\220\343\242\245\235?\263\n\2245Rc\251\277ag\325-8_\253?&?^\374\213\306\255\277H?}\376t,\265\277\022\200q\242\"\340\275\2776y\340\244\032\367\232\277\331HcE\251\315\247\277\274e\315\264\313\016X?\246\327\001\362\333\304\235\277\377\365!\301\363\301\234?@u\371\\\'\004\324?\230\240\005\032\277I\205\277)\263\252qJ\016\267\277\245\014\232)\013\327\267?\332i\367\313\255\024\267\277S\372\036\017\032)\254?\026\304\r\200\366n\250?\240\310$\336A\341\263\277\201\204\0359-\270\265?\016?\324E\353=\204\277!\270\006\300v7\321\277^P\034\244\020k\264?\203\225\2178eq\247?\366\275\0367\307p\307?wo%[\230\312\247?\221\267bg\005P\257?\331\276>\031C\346\263?C\354\353E\2721\302\277\333\266\013\320\371T\267\277\227\236\230\3700\251\256?\302m\"2d\315\221?\252\331L)\302\322\310\277\235\337\362\375\251M\272?s\315\344\360cV\227\277\313\223\362\236J&r\277\277/\334\200\205\315\231\277\367\244&\254\224\376\220\277z\272.\360\r\003\272?\013\243N\247\303\272\271?ll + \261\235\277\244\330\026z\256\022\215?\032D\235\356(\261\300\277Z\t\031\007\025\022\245?\177\313\024(c\266\207\277\307\021\202C\001.\263?\361:\310\305l9\230\277m\200s\350\260\255\240?\322\236\225\232\325\363^\277\2743i$\217\213\306\277\201`\345\032fZ\305?C\322\230\343\330E\251?\257\034\266\263>\244\304?\226)O\002\274\320\304\277>\"X\262 v\240?Q\216\367N\0254O\277\353\3723v\316\210\300?\216}v\327\177\022\275?\337>\344>\336\354\234\277\037\353\261 \234\250\266\277,\260\216\2109\241\250\277x\212\362O\254\363l\277\0336\261\342\037\323\240?\203\3745\243\361(r\277\t\200\321\221\327\212\255\277of\026\350oZ\265\277\202\356\013?\343c\305?7\220\260\316\353\327\267?\257\313\025-\304\020\267?\255t(+\007\305\260?\275h\243[U\310\272\277S\365\030\352?Y\302?\263v\262\301\225)\250?\301\346\210\001\300\262\310\277\262\rE\362\264\377\325\277\034\3532\231\315\243\242?{\033\027\366\255\360\240\277\t^\366(=\215\264\277o\251\246\374\256\206\320\277F/\001\303\307\272\322?*\243W\343\242\350\247?`\020W\365\376\230\304?\021\375\266\354(\220\267\277\322\274\347\254u\356\261\277\374\306U\217{)\320\277\262\372\260q\201=\313\277\264/~\267\212{\272\277\256%\312F\210\336\225?\013\370t\3728\005\260?&[\237O\227\275\240\277}\006\314\234\331\375\234?\306\365\006\250\007*\265\277X6g\221\021=\223?\277\r\342\344\334\307\245?\0006\332\251\341\246\314?[\326r~\277~e?\371.\247H1\263\235\277c}Q\177Bj\215\277\tq\352\361B\355|?\216\036\334\265\3142\200\277\315J\370\001\257\370\246\277\277f\272\030\306\232\274?eb\30428\004\266\277\003\264\204\245\365W\300\277\033m\326\373\t\264\263?\244\251\n\264\351\002\320?\315\000\313\364\366[\275?\017P\006\231-\022\306\277z5\025Ck\215\256?s\2160\002\303\237\272\277\242<\'\217Xx\261\277\025\207\273\372\027\324\303?=\272\226\\\256\322\270\277-\263\311\262T~\253\277\254\\0\356\201\r\250\277\302\336\223\240\002X\321?Y4\314\352\305\211\306?a\231\310\350\307jG\277\2575\200\"\324\005\231\277x\245O\033\016.\303\277\333\2445\"\t\351\305?\370\202\331\204<\274\274\277\262_F\261?\033\270\277\222\273\274\241q\030\241\277\230C,z\315\322\227\277a>>\213\234\\\306?\364\'\314.\272?\240?\247\rD\375\356\010\224\277\213<\217\023`T\266?\220a\247\367\352+\300?\230\343\373\177y\033\304?\264\253\205\207\347\220\254\277\204<\331\255\271Q\252?.H\222\251n\304\206?\311\237q\225\204\207`\277\323\004N\357\035\026\244\277\023O\246\364G\226\254\277\332 \373M\204\333\262\277\350u\024\2500\361u\277\345\316<\247o\r\264\277\267\255\237\n2E\261\277\272\020\220\227S$\271\277\350h\300\362\260Y\263?\234[\265Z\242\206\320\277\323\346NH(\024\276?;\265\3409\263\330\245\277v\311\021\367\216u\200?-\307!\237\311E\265?\261\332\22437\230\241\277VLD\235\215\227\264\277x\305\360EJ\272\260\277\257\303\264\361\357\253\315?\n*\377\233P4\266\2774\022\251\'tz\232?\302\025\022B\210V\312?\325I|C\266&\307?\224\372B\227\203\364\205\277r\245\260\352\271\330\244\277\020\305\030+D\254\253\277\206\226i\377X\r\263\277o\227\010v\213\006\226?\024!b\217\260\020\241\277>\371\032\345\361a\203?\350b\021\t\360t\252\277\200i\246\272i^\257?\353\245\271\350o\210\315?[C\232\004\211\243\205\277\223\343\360%\262\006\233\277O\247\032q1-\240?\246\341\345\020C\020\266\277X\217\230\2777ba\277\244\201\272A\014.\275?\366\275\341b\370=\261?W\260\272\267\002\353\235?\023\205>\310\006\374\246?\336\033x\031\332\366\257?\353/\251[?\033\272\277q\224\034\003\314\347\276\277\210\366\211\026\316C\256\2774\234wV\315I\304?\217~\2430\027\034\243\277\355\276\266K\021(\301?\205\216>&g\233\252\277\021\270\323%\002*\225\277\341F\212\031\226\226\256?<N\371\"\326\342\266?\236\300\201\257I\266\302\277\300IRVx\312\212\2771\373-\2261\022\242?d\342\005\377\372#\221\277\371\030l\276\330\253\263\277\325\3265:bYw?4l8Yx\024\241?o^\256\031I\355\305?\232.q\356\212\203\260?\245\335\346{\017x\240\277\277\207\376\221\341w\237?\315\234r\035\303\201\256\277,\257T\332\231\354\236?}\036\313\252_\245\277?\324\214\323\301\327\331\214?\004\255\256\340\323#\251?\354\250\203ptM\246?\350\234\332L\364R\301\277\304l(iZ)\267\277\265\277\332\000%\354\264\277\221\016\0279V\245\300\277\013#j\333\354\217B?\320\332G\356\037[\265?a\177;Q\313x\246?D\035\373\362(\322\250?\017\223E\311,\301\262?W\267DpX\014{?\366\332\361\300\213j\254?o\021:Q\365\344\241\277\201\203\037\261\n\307\201\277\231\"\204\'\013\317\212\277\234\234\247\307\016\024\225?)V\004C\220\206d?\364\262\375f\356\273\227\277\022j\025\334=\244\307\277J.\314o\376\221\276\277\254O0e\202\270\263?\024\007w\020M!\224\277\342{\317\000\025\276\246?p-\321~X \200?G\257C\246t?\223?\310\240\265\274\276\356\302?\364\201\312pb\025\240\277\273\263\372\t_,\241\277\317\254k\363\tH\305?\325\311\376\001\033\323\302?;\310B\324s}\301??G<_|\322\245\277\0267\346\017c\370\260?\300\216\346\350\272?\313\277wP\014\260\356\274\260\277m,<\026q\255\253\277\305{\355 \300\025\265\277\325U\275\026\215\374\271\2772\321\226\020\245\021\270\277c\276Px6\375\265\277\315MM\'}\325\240\277\373<3\345\324\356\251\277\300\216\342\025\262n\247\277\033q\346,\311\357\227?\214n\204\277Zz\207?\231@\221>\277\322\245?7\377Y\212\263\374\267?\265s(T\331\274\266\277\343\320\3011u\374\302\277\013y\"\216\025\374[\277\322\352\270v\327Z\213\277l\320\277\202S\276\260?\023\363\211y[\251r?\311Z,\353\253\022\217?\006x\347i\321\317\302\277\376\220\037h\333\224\272\277\370\344\263\2527t\231?\354m0vB\266\300\277\327v*\035%z\247\277\212\332\311p\205x~\277\302\227\021w\201\205\247\2771\006\020\350\025\255\267?l\002\220\237e\375\243?g\272\267g\334\233\272?*c\373\307/A\267\277\340\316\270\272\013v\266?\255\333\013\317Ufo?-k\353\370\373\373\243\277\020\024T2\"\342\302\277\223\007\370z\024\265\245\277o\321\221\271\2705\267\277/\001\330FE\316\251\277\0269\005\202y\205\306?v\353\225\354[\255\265?wC\356!\366K\305?\323\225j\022u\365\241\277\325\231_d\364J\266\277P\005m\"\240\024\272?\257P\367t\310\001\261?\371a\326\351\353y\314\277\270Ih\271\277G\231\277\027{\201\342\353\017\273\277\'\336on\230^\267\277\272/>:<\203\227\277\001\336UW\303\310\200?\274?\346\2643%\300?\022\236\010\373*g\262\277r\360\202\n\202\343\212\277:z\374D\274\322\307?\213\256r\264\323\272\273?/|\014\207\244U\221?\004\263Hw\366\252\301?o\322-\377d\246\304\277W7\264\312\374N\251\277\177\272w\331\300`\260\277R\354\021<\263+\261?\257\203\354\361\220Q\242?\013\234E=\322\376\204?\2464\327\224\342\340\260\277\215\334Z\253;6\314\277@\244\231C\021?\246?\336.\004h\244\340\207\277\350\020Z\2468\311\247\277\225\177EI\020\307\320\277\353L\263\347\213\214\226?\307va\300\305t\256?\007\322\277\017\327\260\265?\026\263\324Evd\243?L9k\276\374Rx\277\305\021\330\035\303w\274\277\327\270\225K\253\n\262\277\022\260\330(\371E\235?=\032:\303;\355\273\277n\312h\005\'l\251\277@B\217\027tX\232?\226\341\333b{\337\256?\373\324\215\343\234\003\240\277\216\250w\236\325\250\276\277l\001&n2\267\261?o`\373\251\371\264\227\277\254\320x\014ee\260?\201\306\203\333\362\006\215\277\314`\362}\226\270\273\277U\220\353s\202\023\222?\302\335\324ET=\312?]z\354\361o\021\240?\022\332p]H\003\270\277\222\360\211\246Z>\277\277G.;>P\275\274?\000\017\231!\272x\312\277\326\014a\362\257l\277?s#yK:d\242?\215\177\370\2171\233\275?\316\002\236\006b9\300?\314\230\276\225\242\240\306?U\371GyS)\300?\031a\330;\244&\261\277lg\275\367\353p\267?\343\023\016kE\025\310?\007{\252\261?C\264?^\227\256\326\023\032\310\277\347\300\342\251\244!\261\277\310\\\256_\256\260\230?\001;\310\207 m\205\277\037d\022d\345\212\252\277\223\315\202&a\333\326\277\251~pM\322\366\252?3vT\236v\252\266?!\335\316\233\315-\267\277\334eF\035\013H\223?\226|\017\013(\215\232?<\257\214\224\256\025\302\277\2233\260\030\217\t\273\277\021ff\223LY\215?\027\367n\270O\241\277\277P\315\2357\226!\325?`/\000AK\303\246\277\2040\224\2716Gw\277\245\256\314\001\236\224\241?\246\354=\207\033\006\261?s{\322;z\035\243\277\006\221\225C\033\377\267\277\034\313\367?\267\312\320\277\213Py\027\221\200\213?\307\204\006\235\221Q\252\277\251\352\342\335\306\206\261\277\353\003\033N\372;\306\277\304\355\022c\266C\221?N+\013-S:\261?e\3553\205\323\025\234\277-\273V\302P\024\231?L\202\274HB\211\264?\350\316\033\243\204\375\252\277\364\225\247\206\201>\267?\350#d\342\340B\247?\373\025\036f_el\277\354Nz\367\252\235\262\277\t\235{.\267\261\221\277\232\231\025i\033\022\231\277\0250\225\320\276\375\267?G\234\357\325\232\r\262?\366\005t\005+\004/?@\223\375t[\025\265?;}\222{\240\353\320\277\"\352\343\341a{\267\2778F\317\364\250\223\272?\025|\350\207\247\223\223?\373\3553\354\270\324\222\277\217\211_\254^\007\277\277K\365\032}\217y\266?y\351\242%\311\006\263?u\003\356n\250\363\270\277\177sux\245i\245?B\321\246\035.\243\254?\\\346\335\tH2\276\2774\023\034ba\305\217\277\272Lj\350\235\214:\277*\034\276\331\350\345\302?\230\02466hX\240\277D\274\202tu\222\302?\201\251\262ft\302\252?\271I\222\274\362\262\262\277\235\025~.)I\272\2771\001g\374\342_\272\277E\2219\235\367\346\275\277\246\313z\261\345\217\321\277\370\357\367B\262\313\242?7a\266l\203\034\276\277\231\315\327&J\001\223\277?\002%|\270Y\253?\336\240\273*W6\222?}\255y\267\367.\302\276\347`\217K\025\365\273?Zf\017\017\036vj\277Pm\267\270\003V\264\277X\035P0Y\307\246?\r\315\034\006Dv\213?\214NB=R\214\265?\301\200\300\001\305\351\273\277\247\317u\'\362\307\266?\230b\206\300\301pT\277\013\301\307\373k\r\257\277\'\010\020>\255\263\211?\032z\212\t\220p\301\277i\351\267\372\306\357\266\277\240\r\210MZ9\301?Q\037\226D \032\200\277\333\233\2139)w\300\277\'\266\246x\0030\263?\022uw\240\345\271\244?v\256\201\373\226\204\242\277\317\223T\346\254\021\272\277\\\354\'0\230\035\251\277\250\241S\006\245\r\273?\363\3113g\275\203\220?i\254\373\025Q\203\234?\267\207\030\r\3377\260?;\311\r\323\261^\200\277\204i\354\362\2056\253\277\352\375\357^\227\034\245\277V\237G\n\306\372\270?\325o\263O\212\026\314\2776\213\034\0224\207\253\277|+\263\')\302\321?\315\243\270\004\013\264Q?\0209 \2042P\255?~\374/\017\307\223\272?\030H\035\262\033\344\267?\035vg;8\243W?\261\3664\331\\\034\276?\331\247e\253\3038\276\277F\331\376\314\246@\265?us7-\347@\261\277\225%\001\330\345\200\265\277\201\307\374}\177\010\223?$\t<0\336\205\252\277m\366\314\364R\347\261?H\t\'.\246\347\322?=\232/\224\202\246\265?7c^\r\374\t\213\277\316@e\014F(\223\277\320\321b\246\3345\317\277\335\325\220\325V\030\274?\014\357?\274\003\335\231\277\300+\232 \023\367\275\277\336f{\010\000>)?\356\242&\303\252\226\255?\322\016dP\017\004\270?\247\336\363\231\267\316\220?\0361\326\272\365\023\237\277\017\235\241\267\273\263\232\277\022\270\237(\253\227\277\277_\270\330gYOy?\207\344MY\373`\261?\303\263\nn\n\317\276?\343(;p\372U\314?@P{\370\200+\262?\0168\231\340J\210\264\277\006\002)k<\231\330\277\316\303\220\242h\221\257\2779&v\230\250\216\227?\000(\3326g\255\216\277\360\020\031J\0347\246\277\376\245\373\023\002\240\251\277\225L\253\030b\301\216?4(\371uo\245\306?\303\234\030\230\252\232\247\277\374\347N\221\007\305\251?\340\177\242\335X\356\247?\344nY\336\311<\300?\322.t\325\225\356\271?kt~\355To\214\277\252\3015mC\002\307\277\031%\341\240\215\274\251?~~\277\307=\237\272\277\023L\023\347\023}\312?\232\005\377\214\305\322\265\277\n\224\320\004\023\224\252\277\364\340\250\005\365@\267?\320\251\374\336\234\233v?\031\n\025YCK\211?a\317\001)\004]\300\277\236\327\255\227L\030\320?\026\"\025\204\020k\223\277\254\241\\\300\202U\256\277sj\204\327$_\263?\241\034\243\205o\235\221\277\365q\230\r\376\341\252\277[\265\024y\325\233\260\277b\251\306\361MH\307?1\n`\366\\?\300\277\204\361\227\367\324\271\256\277\242{\230Y\215(\274?\224P(\205\021\256\310?\214\374\016\324s\200\263?na\022xG\241\272\277\231\207\221\271\345V\241\277\244\256!{\347\374\262?)T\372\346\343\305\240?\276$\237\024\267\340\256\277\220>I\365s\225\240?\212}\254\256\214O\261?7@\237c\351\345\250\2777\255iz\252[\314\277\360\261\221\313\245~\204?\276\355w\335\272@\301?8\236\333\342:2\265\277\265w\030\320\340\337\325\277\205\312\366\301x\233\273?\177o\333O\262v\273?\201\305-\337\360\307\310?$sl\353\312h\250?\317\357\374Y2\256\243?D\336\327\344\3604\302\277\272\224\256\030..\233\277\2548vE\310\020\227?\267?\233\360\321Y\214\277 \333\371(\030,\300\277\240\r$\"\034@\242?\027\007_*\226\037\267?\252_zL\306{\243\277f\312\367\002\210\204\241?\020\2219\3753\n\201?\321\267\027$M\262\235?\227\222cxB,\275\277\321#\2626\207\007\241\277\226\337\303\372\210\337\270?\366\307\325/\022\246\260\277\022\365K\334\025\262\220?\210\230\245\360\366\370\251\277\\\"\227\020\026\360\243\277\203%\312\353\310\240\240?\200\342\362\373B\343\177?P\n\231\277\242\201\232?+(\361\271\217\002\265\277\300\264\342\232n \303\277\234\2772\0330\221\246\277r\217`.W\250\266?K\t\2168\352\256\303\277:`Q\311\257\340\261?Dv\322\233\346\014\257?\327\025u\340E\032\301?\352\351!\326\206b\306?\014\3429xH\032\257\277\307/\265\271~\314\261?\222\017x\261\220\365\303\277u\030\006\036Y]\272\277+\320\361I\275\373\277?t\362G\232~\324\227\277,}\024\202>|\273\277\014\340P\272q\257\264\277kC\343?\273\346\211\277\263I\324[\321\264\276?\031\366\323\177\341\214\242\277\242[\312ex\274\226?\212\030\0005`\355\244?\300\220\322\246e\\\304\277E\177\242\305\"\032v\277\232f\335\270Oo\300?\314\277\352\214\"\263\311\277>\313\004\311B!\302\277}\002\376\215@\000\272?\203I\256\306\346\260\253\277\362C\247\372\201p\301?\333=.w\255\000\214\277.\367\':+\375\256\277\3633\316;\320Z\235\277\205\360b\362p/\241?\264\366e2\244,\222?#zq\217\274\033\264\277_\364\371(\241*\237\277\021\271eGly\312\277\t\340\020\\\251\030\312\277\t\242\014\271C\330\237\277E\315\247E@E\315\277{\324\370wfW\262\277\305c\364\'t\236\315\277W\031^\277_F\253\277t\n\022\215\245&\311\277\022\334h\304\247\247\257?\207m\206B:\276\316\277y\327\347\005rT\272\277:\230\023\tq\370\261\277S\370\n\250\262\237p\277\373\207\002\301g\023\311\277yP\246\r\374\307g?k\031\313\036AH\261\277\226W}mV\t\301\277\310\277,R\205\345\262\2777+a\\\326t\274?3@\240\rZ\370\266?\313XJ\203|\235\310\277HR\001 \250\252\245\277O%\213\020b\207\261\277\305t\020\216\340\205\241?\010#\007G& \245?\251RaI/\225f\277\326 \346\324\236k\240?\305l\263q\217\236\247\277:\2006\205K\272\257?.}Y\336y\351~\277\305\020#\261k\036\201\277\235\217\334\260\362q\272?\263\225\217k9\350\274\277\353\010\232i[\200\315?D\254\353\314f(\253\277d-\342\036\334\274\263\277;\246\244_\177\014\256?\263D\202\221k9\210\277\304\206j6\226\264\305?RH\263lgI\276?I\026^\241dw\211?\231U%\220\351\256\275?\334\025\016ls\314\271?\366\205\263\362o\205\222\2779\241\177\'\356\356\300?\026\244\360.\252\251\271?v\036\336\355Q\367\262\277\005L\330\177k\265\267?^\220!\013\366\210\321\277\244\020}r\004R\243\277e\350\304\337\021@\272?\025\324\003{f\033\300?\022\303\335\204\210\244\274?\345\362\357\010\243\333\233?\027\355\301\260\213\363\274?/\315\007\342\t\276\300?\226\023=\274\221\301\246\277/\001B\023\365%w?\222\344\345\026\356\244\301?\235\254x\2223 \231?r\2511\004\035X\311\277\244\245, \275\226\273\277\366#ZU\030\236\310\277\013\205\023\224C\254\210\277{\340w\223\256\252}\277\'u\206kt\310\304\277:\003\241\341c@\302?C)\332\336O\263\225?D\030\254\0167\246\255?\251\244\005\202g\350\310?\"\313z:|\024u\277\332\325\216\3325\340\215?\313\223;\304S\n\266\277\255A\236\320\336a\263\277\024\256Z\307<b\251?Ik\317/>&\257?0/\006\224\255\"\320\277\321|\373dJ\230\275\277\236\340\311<k\000\262\277\314\307S\270\007\272\273\277\250\003\035)\245<\265\277\264\317\226\300\n/\206\277\321\r9c}j\226\277O\177q\262,\201\225\277\033\226\330\023\'\304\243?b\347CK\365\363\262\277,\000\010<\311\214\276?\304\026\352,N\203\203\277N\342i\332J\004\242\277rp\241\"\201\356\301\2779\363G\223?\355\272?D5\252Tf\240d?\331\304\0314C\340\241\277\347\367$Y;\001\232\277\335\251\272O\223,\276\277<\253\316\254\211.\253?\220k\261J\317\333\230\277fD\224e\025\242\300?\361\367k\267F7\261?\223\226l\003a\363\253\277di\246F\370]\255?\177\233\035\302\210\344\230?\215\314\210\261\315~\255?CY\235\244\341@\302\277\216\373\312#\242\254\251\277\212N\310\027\234^\273\277\270\213\216\313\206\327\255?\347\270\031t\306\257\267\277s\311O\227\034k\262\277x\306]\026^`\267\277\246\373\374\2248\345\230\277\274Z\200\010\210j\311\277n8\260\327an\257\277.\3643\345\004\322\234\277T[\t\211\360\367\321?\025\360\342\030\312%\300\277\247L+\006QY\304?`?\030\301i\300\273\277\233\233\276 H+\305\277\257T\267\305X\337\274?\223F\347L\001\005\300\277N\206O&Z\373\275\277a\02146\333\302\246?\3103>\267\262\243\226?L\232\263\331w@\243\277f0\353\365Q\023\211\277\242X\332R\037/\202?\361\313m\212F\206\252\277x]}\257J\336\272?\271\177\016*:\021\221?\355\000\341Wy\027\235\277\343\3442G\215\357\257?\201\351\222\353T\276\307\277\347\223q\t]\272\220?\372\024\216q\276~\272\277l\036!\3604y\314\277\321\330\343+\223\372\264?\374l\370\267]\310\225?\3342 s\327\215\265\277-\356#M\326\334\240\277a\306$\315\t&\213?t\303\376C[\250\300?\241\241\207\364\340\r\321?C\312\265\301\310M\254?f\266t\"^\033\306\277\205Sf_Z\224\213\277\216H\252\321!\344\261?=g\020\307\263\317\240\277\025CK\277\376\013\273?\021\036\307\202\350|\306?\351\207\233\216,\207\245?\250\315\351r!\273\247?YvE\224\342q\271\277\2632\261\264\203\354\245\277\265\241\261H\360\363\204\277D\005f\267\021\350\256\277.O\260\245\345\343\267?X\020\276\340P\014\243\277\353*\330?\325\273\247\277\2201\342\361\273Q\313\277:h;\376\"+\234\277\005\365e\023\246Y\263?\302\336\312\005OV\207\277A\034\3505b\256\234?t\211\200>\363\371b\277\214\263\254\221\322\347\261\277\322Z\205\005k\214\245?\337\031\327\357\250O\210?\342\246\026\3478T~\277\237\232\372\364g\254\225?\304;\177c+J\312?1e\311\267\340d\266?\230\372v\212^a\261?\224\006DT\n\310\275\277\213\353\307e\020L\333\277Z\340\240bR|\304\277\367\3376\005\372\353\200\277\002\025D\327\305\274{\277\022W\026\367\362[\226?\000\334\360\334\315_\237\277A=\373m8\325\261?\027\312Hz8|\276?\032\2520\221\363\323\261\277\230e\367\345J\354\231\277C\006r\234\316K\304?@\333\t\304F\035\226\277g\257;\355\000\216\275\277|\350\230\277\0034\274?\013\023~N\025\302\314\277\006h\'ro\307\267?\252\266Y\364bq\301?\010\233\211\331\351%p?\257\311\207\037\214&\311?YI\363a\r\221\223\2773p\367\202\322\005\274?\202BD\267\204m\266\277\261\005\353\004y\227\272?h\272z\223\276\354\245\277\177b\037\260\n\035\222?\026\323\342r\341\234\246\2770\241\243\3662\264\260?v\253\345\006\240PF?p\037\312\336\232J\270\277f |\302u\301\305?)[\204\336\377\205\203\277\016\340lJE\307\256\277$\311BP\201G\227?w#\230\351\234\314\256\277Z\323@\226\324\276\315\277\010\322\207Br\216\266\277~\342\314\233\020\322\244?S\034\024\231-\203\274\277\021\352\202\325\023M\303\277\350\203gc\230c\266\277\232\261\263}\3229\256?\212\005G\2628\036\265?:l)f\324E\226\27793d\223#\302\241?\370\0102*\375i\252?\256\323w\037\340\242\260?\266\023}\232\263\221\263?\207\204\274\211\205z\\?\222I\315\301\0300\223\277l)\324\230e\225\276?\261fC,\215\212\267?<\'\340\300\370\201\226\277\200p\322+D\207\331?\323D]i\223\t\222\277Y\225\2740\022\013\265\277u\221\017\030n[\272\277\001\267\336\334!\232\303\277\326\313\340\276\351\023\304\277^\302\037\233\036h\217?/\347\352\020\376\025\253?\300=\177\272|C\301\277PH\355w5\314\227\277\315H\241*\245\203\253?\016\302\327\363 0\311?\362=\\z\367t\251\277\336zk\326\335\377\210\277,\270\002\3055\366\304?F\023&\254\200\002\274?Zi%RI\236\315\277\332\337H\234\350[\235\277\374t\250+\343\001\312?\242\307A\034!\036\263?\253\2430\036X$\237?\256>\314\036\014\265\177?@\324cJl\363\300?\342\242\n$\355K\224?\242\266+*\210\034\260?\362\341\025\345C6\251?\022\370PA\301\036\203\277\304\340\204\252\"/\265?c7\277\017\027\330\314\277Y5f%\301\007\223?q\226\007\343\225n\252\277\014\223\026\320c)\265?L\351\331\002n\243\200\277\255\274\234/\001\010\254\277\021]\326\3318\371\257?\351\232\265\253\356\306\326?\251\334\345\224G\363\271?L\254;I\355\203\273?\026~nq>\323\253\277\360|\227v\225\232\246?\262\202}\034\006l\271?\030[y\253!\304\177\277B\253IH\351\276\277\277\023\016z\304\342\272\270?6\326\261d\216V\263?\220)\214@\246\r\274?\204\333\'\241\276\303\341\277\317\211\214\216\304\312\236?j\233\227Eo\250\311?\322\222\013\343\323d\303?\277v\020\336K\242\212?\241n\315\373\264\001\214\277\277h\373;\363\350\227?\265|b\022RTu\277A&-\332x\377\242\277\254\233\230Z\370\274\214?^\231\367]v\261\271?b\"\255\223\215\317\241?N\024G\306]\005\273?\2507\007gFY\265\277k\035f\020\276`\320\277r\034\004\017\"\022\244\277\371\002\341F`\200\302\277u\353\265uS\236\267?\235\2432`%R\316\277\227M\247=uA\236\2777\211\252\307\336*\241?fv\207\001\002\031\300\277\323\270\353u\370M\250?\356\362\304UYf\236\277\310\005\376\027\271\010\250?@\031\320\300x\003\265\277\'}u\202@\306\246?,\226\325\ti-\252\277\370\251\313\353\2017\312?\245\323\033\371-\237\261\277\253\024\350\370\037m\230\277\010?\310&d\311\304\277\005\266f!~\000\263\277\177\256\266\265\337\177\275\277\031o\246t\3541\255?\274\376\201\247\003\204\264?\221\027\214\200e\344\301\277\203\351\374*|}\266\277\024/cq\315\310\327?\243\344\254\365\203x\266?\216i\352\205\242\274\306\277UN\323Rp\361\264?\\\263\007\035\274\236\221\277\214>\326o\253*\266\277\261\232H:\"`\266\277\207\243\261\325m\277\245\277ci\223\314\202\245\271?\r\t\336N\223\211\237?\267NDW\274\247\272\277\374\215c(bv\300?_\315\r\357\251\002\221?V\344g\340\005\215\270\277x!\224i:\233\277?&\303Q\204!\320{\277\261\\2\305^\026\300?|w\325M\355\322\260\277\335\262\016Y\314\373\310\277\332\223f^H\024R\277\314\254\330\021\032\214o?\276.\002\027\031\373\265?\206R3\246\331]\236\277\223\307\033\265\036\247\252\277\031\347:h\215\"\270?\354#\3710\227\250\212\277v\224\335\352\211\376\212\277\3659\277\363<\177\264\277\347\311\274*\346;\236\277W\225?)YU\244?hv\202\226Lu\253\277#\277\227\321\230\363\261?\270-\212$wh\312?\242\026|~B\363\251?^\205\265\254bM\301\277y\276\216\207\257M\272\277Y\205\'(\\a\300\277\250\241[\200\242\201\267\277NY\211\030\343J\307?\317&\265\"\201\250\267\277\266\225\244\253}U\257\277\344\223\323\215\236\274\220?\034\361\336\341\342\355\247?\243\177L\302\302\030\256\277\223\n\335\nlS\235\277\273R\202\300\014\010\251?^\243T\3532=\266\277W\"ci\237\313\300?V\341b\215t\255\260??\253\2367N.\273?D\214jv<\022\236\277.T\326\\,\\P\277\\\323X\215\245<\251\277\034\254!a\245\346\326?\227-\340\317\001\301\202?\363\360b\267\274\255\205?\351\323\032RX<\301?b\031\2701\264\022\264\277u\346\274\352~?\251\277\0071\007y\"\022\300\277\322\0026\375#\340\303?\253uEP\333&\255?\216&\327\306\355\340\303\277<[\345\r\204\025\305\277mu\023\3238\007\243\277\242\347\2135!Y\306\277\027\237i\231\337\376\251\277dG\027\334\275\226\241?\370\225o\255G \202?\2172\245sA\017x?\214\364\336\312\020\241\302?L\370\016h5\033\241\277\306:\305\326;\207\300?\235\2028\005c\303\257\277)\374\3565\203\344\304\277\343\221\210\341\330\252\210?\376\246Yy\370\351\206?qO\271l\216X\226\277%<\231f\006\000\270?x\354\001\210\336\035\203\277\340\007\233\210]\213\266\277\210\035wW\023A\266\277\266-\330Cn-\250?[\271\320\225\374\371\243?I\"\231%\010\022\272\277\350\365\200\026B\006\234?!\245B\247:\307\206?1\025\335\256V\272\311\277\346\250\376\336<\244\307?\336fu\317\002i\271?c;\002\267\037b\231\2779\244\302\355]\001|?vf\023ey{\272\277\371\243`\027`\273\246?\334Pv\342\236\033\205\277\317\212\354\n\356%\270?\265;\363f\274\021\261?vh\350 \201\277\206\277d\372m\237,g\247?v~*^B\026\205\277/\357\275\025Q5\274\277\032O\322\217E\222\240\277\272*\325\320n\311\235?G9\321\324\353\301\230\277}\253w\237\347L\260?!2l\253\324O\301?\005\035\351:\245\377\275?\275\3344\373\326\225\251\277`\337\245\356\025\323\260?Z\241\227G\315I\331\277%\266\311\306\241\036z\277\352\246\321|{\324\213\277\364\007\311\355\2313\244?C\341e\376\025\324\212?=l\220\251\034b\240\277\262Q+n\335\t\300?\342!\244\347\001B\316?3_\307\353} \256?nn#dR2\261\277\334\215\n\333\225ty?6s\275\257\323|\203\277b\224\361\246.\374\244\277Zh\205\213}\234\211?)\201\265\025\376\214\264?\341\366\274\337\357\235j\277>\026\361Z\034\242\214\277\035\013\002\0374\352\264\277\036\023\036w\004^A?m\312_\205\033{\260?i\343\300J:\274z?\346~w\356\274\031\270\277\362\230\347\0360\211\253?\210\271;/\344!\241\277\tL\250\3157;\313\2772\266\360\262\334\336\262?1\341_8\211\n\230\277\271;\020\276\346Q\267?13\\\243\377-i\277\315\002g+\343\357\273?\032\033\256-\350\277x\277m7W\237C\226\251?R\373s\257\033\251\254\277&InH\265\331\267?\217\320\203\t\377\302\241\277/\356P\352\276\326\234?\377nj\330c\013\256\277r\374\032\360\3531\266?\004W\274\245K\210x?\0377\337\220\311 \265?Y c\010F\201\211?\231\302>c]G\311?##\361;\256:\224\277\357\315\355L\366\334\274\277L\305\322X\336j\262?f\322\331\375U!\257?\242\\E\264=\021y\2772;\332\202\324\246g?\245\003\017\037\342\342\245\277\372\234\341\242\263\337\302\277\304\307\302\367\217\020\261\277g\360\'\336:\355\226?\377o\332Ab1\233\277\233\224\210\325<\336\224??\303\240\231{&\222\277\362\246\3063\373\350~\277\0255\267\377B<\307?\216\026>*\307+\205\277\254\037\036\340\372-\271\277\316\266\372\023\317\312\222\277\377\027\233\351z\007\204\277u\332E\237t\233\247\277\"P2P)\005\240\277\024\372>~\252\205\264\277\375\361\032\225\237\316\222\277WH\311V\371\026\231?Ourh\355\234\275?\326\351\036L\036\227\270\277v5*<\207%\201\277xE\326[\274\253y\277\002Q!\264r\361\251\277t\221\362\320\312\253n?\202\246\240ae\205\227\277\375\030!$\326\276\234\277\330\240\254\237\200\020n\277\327&\027\2115\177\240\277\354\230\316\376\321\014\264?\017A\036u\235\t\303?\351\347\366b)\021\246?1\\\350S\315\007\263\277\204\355L\236\275\014\256?\026\373\200\311\3733\304\277A|\212\233\266_\265\277\217\331\030\013U\234\252?\340S\t\267P\324\301?\206k\273\372d\213\300?\377\350f\334\016\030\271?%b\021\227\004\203\245\2775?\"\nx\t\240?\024\353\244\013\'!\230?\020\3228\205\257\024\225\277D\363\354\324\345\221\324?\311\2306\364s\023t?\306\326|\252\006\247\300\277&%4\200h@\253\277&\036\002\272\032L\274\277Ux\217\216\244\375\265?\233\361\203\355\032\n\255?\177\225\327\n\3576\205?\024\216x.\247Y\263?;\234\220\236E\214\264\2771\270\340\245_\352\303?\367\275\253\206x\035\274?J\357\027\t,\003\244?\231\306\2568\234)\304\2776P7q\226u\273?\267J\266)\261\335\240\277\214\020^\303\275f\312\277\203L\237a\231A\224\277e-s;\276\212\213\277.a\264\026\357D\262\277\302\243\265\307\270\213\301\277\352w\306\027l\234\317?\322M\n\022\3324\277?\241\006%H\241R\241\277ZT_Xa\301\311?d\017\177,|\302\235?\353\310\307&\317X\307\277Rvm\033w\237\260\277\353\300_\230\023\300\341\277\230j;wVC\262?\315\216\352\226\250\036\240\277:\302]\332\372\250\272?\346\251\375\226\261\231\310?\t\201[6\375~\252?\211\303?\272^\013\227\277\347K\022_\230\020\304?G\023/\336\037\306\210?\214\006\3656e\030\261?\226\220\017\210Bk\301?\334\033\372\220Z\233\223?\365-d*\373\036\217?\322D\210Ms\234\211\277o\026@\362\'\\\270\2779\311E\341\230\265\204?\377\260\241\351[a\263?w\374\253\301\025\256\250?|\300\346vO\266\260\277w\251Q\307y\352{?,n\307\215\300>\242?\200\317\236\343jM\227?tjQ\222\217b\251?\250]q\364v\321\263?%\234h\217\357\234\202\277\225\002]rL\275\267?\2713D%\310)\265\277u\2029\002;B\246?i\325\216\340D\371\312\277(\340\255C\325`X?\267h\246\376\033\332\267?C\262HV#\210\267?aSzh:\200\272?\322\233W\025\332\'\211?FX\233\324\004\031\252?\013.b\244#\\\232?\357\235u2\373\266\261\277E\206\225\270\312\025f\277\371\360\321\214S\213}\277\331\200\036\362\371\345\303?\343\225Y-E\260\311\277\324\3728@#\t\222\277\2249\241\2234+\332?\0041\204Y\272!\233?\314T\347\341\275\357\302\277w\326\327/\023q\244\277!\311m\322d\021\242\277\3145Ws\354/\265?\032\341\026l.@\304\277\335\262\221\317\326\301\321?\373\263Y\223\341\005\204\277\363lM\222=\252\261?\247QT\306\007L\255\277\377\250\265\354\320d\213?\211\215c\375\256&\263\277~\001&f\n\211\301?\247<\346R?\350\314?\355\205S\275\220V\243?\333O3D\245\207\265\277\234\316\350\320n\302\331\277F\t\234\274\351\005\254?\244\371+\225_\327\233\277lv\361\372\211\240U?\220X\311.Ga\273\277Nj\304Px\021\220?Q\356c\324\270\347\265\277\205+\'\2042\257\300\2774\371.\351\276^\260\277z\367\234G\346\366\252?\217\326<\272\007B\254\277>o=Mf_\247?>\370\306\246\"\365\210\277\223=\"\204\242_\300??F\312\236\202N\214\277ml\003\350\202;K\277I\313\231\314\354\277\221\277\3415:\323x\231\312\277\020\341\313\020^I\241\277\tq#y\034\223\242?\t\327L\234\275\217\273\277\030\304\243\036\3572\223\277q\307\304\233\236Z\255?X-\253\nm\r\313?\014\0210j\030\371\272\277\303\017\346m\326\005\265?K\206\252M\270\245\242?\227\275)\326\203\333\237\277\327UAL\270(\264?\215\211\034\225\364n\313\277-\r\344O ?\246\277\n\024\004\340\355\276\311?\270\267\326\300[\327\272\277\301\342M\273\325/\232?\343A\237\201\3749\226?\374\225\031:\027\253\241\277\306G\312\377)\235l\277\001\306\027\340\013\177\242?\355\027\324\2760\036\250\277G\377\356\244\336\364o\277\036\213\231V\341n\246\277nrz\301<\004\273\277\355\233\342kyZ\272\277\204\312\034e{?\242?y\312\311h\177P\230\277^\322\343\255S\374\262\277\365\235\227\316\364\344\311\2779\244\246\242\355\020\215\277m;\271\256a$\277?\224L\265\333j\352\303\277\262\366%\030\326d\275?@CQ={\302\224?\006\r\257\306Z\364\274?\347\373\227K:\312\313?u\335\203\221\327U\252\277\313\356\203oBD\254?z#\236\201\305\270\276?3=8\217\357\305\240?]\352\1770\2768\212?\014\350tp\010\373\200?\000!k\313\240\242\254??h\215~\221d\272\277y\005\031\323\300\363\262\277\006\325\003\230J\325\262?}V/Ad\207\262?\233|i\311\213\244\270?_H)\254\255\037\302\277\366\313\254z\236)\267\277\207;E\\\036\213\266?A\350\034\224\022k\224\277T\253\2249\334\264\260?\352\236\301V\242\341\311\277\326$\373\204a\007\203\277|\237\036o\322\207\317? P\223C\374\333\300?v\357?\240\225.w\277\232\nw\350\222U\270?\326>s!\212\016\321\277o\272/-\t\355\223?w\303\336\205\325o\305?\254\212!\370\252`\312?\035\333\007\356\001*\322\277\027\272\373\023\334\021\254\277c!\204Zt5\262?6F\205\231\207\310|?\373\270\'\240\207$z\277>9\275\2000\031\225?r`]\273\336{m?L\352oJ`\314\234\277_\366mak\261\253?N:2\351\322v\303\277\257]\306C\232\027\323\277\017h_\020\310\334x\2779P\036\216\354\234\265?6G\034\r\020U\300\277\315\367$\216.\223\302?\366\361\004\216+\261\241?\216$\021\356\2212\262?\251U]U~\200\257\277.\222a\302\365\001\240?g\332\035\232\357\031\207?\020\262\270\220 -\247\277\235\205*\212\250a\264?\005(-\311\366\257\222?\324\213@\313\003\334\265?\347\235p J*\262\277Y\025\304:7\274\214\277\302\324\334\233E\033\234?\215\007\273\370G\213\265?\337\373\301\312\013\017\254\277/\261\027\222w,\261?q\372\300\214b\200\264\2778\305G\307\276!v?\264\367\261\356-\027\266\277\263y\204/\263\021\253\277N \334\264\356H\262?\003<Q2\3565\227?\237\241;w\342[\256\277\340\313\366\003\356\233\237\277X\336g\010Vw\310?\257\375\207\370\264\014\243?\324\237\274\315\323s\241\277\216\275\301%\311\264\215?<\336\363\021P^\273?\323\013\371\355\0062\221\277\212=\323-3\204\307\277\001\250\256\304GZ\275\277\010KY\332\245\341\236\277N\"\016\3479\362n?|\223\216J\250\215\212\277\227\035\243Y`]\250\277\303\2313R\307\272\270\277\242q\265\273\302@\303?\2660\320\205\304\023\267\277\373\267%\007d\020\207?\224\373\304\244:B\266\277\365\'\203f\213\230\311\277\345\006E\376\201\361\305?\225m\004\372\037\376\225?Z\301]8J\362\265?\'\004\341\305\2711\241?B\0258\23561\302?\2647\207\t\347#\263?\355\r\271\320$\216\231?\375\220\242\274\tr\275?\265\255\212\301\314\220\261?m\010I#\246\223\303?\370\274\207g}\332}\277\371?\3148\2116\302?\025\3078Na\215\222?\225\346\303\010\256W\305\277\263\313\010\034\310,\251\277n\362\014h\027(\211\277\207;k\003\353\002\276?_d\242{\373\t\256?J\377\376\207\237\332\231?.\305\204\365-@\244\277\254\317\303\227\003\333\233\277\021v\372\252\022?\263?\\|\241\361\245\221\263\277\267\352o\375\265x\214?\365|k\266n4\321\277\034:\244\014\366\327\255?\317\353/\307\222\367\273?\225\306d\347\304b\273?)\215\0067:\254\257?$\235\220\037\023\024\246\277tB@=~\236\303?\020F\250\236\226\237\302\277-\362\362\010\374\257\221?\345\371\207\033\372\257[\277\371\264\232\356\246J\265\277c\374\373\332o[\251?\2750\312\324\313V\262?\300\236B\352<\227\252\277o\263\2743\274k\247\277V:S\345\211(\236?\244\r\255\243\332\315\252\277w \346\205\261\263\213\277\211\\\006\233?\205\272?\007x\360z\224\221\252?\027\241D(\374q\263?[\365\'\036]\202\251?z\003\034\030\363\232\306\277\373\271\007\345\350C\244\277\0033\377l:\220\265?!Z\217\277pz\300\277\371D\001M\033\301h\277\262+g\203\2340\212\277,\323\300\350\303\363\303?\253Q\231\354\226C\274?n\215\264\203\307\005\265\277#\243\266\324\214\203\300?\220-\026-\332V\271\277\371\305*\272c\356\270\277\336\270\001\237\220\256\300?\311\240\323|\220\005\305?\005\273\205eWo\270?\266\227\255\333\317^\207?(\362\005\311\370\240\233\277\355z\373\372\252\375\310?X\320n\010 \276\244?I\265q\014\372\000\251\277c\266\264\230\320{\271\277P\346}i\355\244\260?\306M\301Y\366W\256\277\324*\327\035\373\365\251\277\266\264\252\373\325\033\200?\335\361\313\334H\364\227?\221gx\007\331R\302?\rK\320\242\264\233\204\277Q>\002\025\302\002\232\277g\254qyl\016\243?:\253I\256\350\216\200?|\353\233\003\273\026\300?\241)\204\004\200\221\270?\255\002;?\316 \213\2779\247$?r$\263\277\000\034f\204\312L\264?0\354\307\226y\256\271\277\020\220\207`\333\215\302?\326\227\205\tI\343\316?\240k\034V\334\330\240\277*\264\250\347\224\276\266?\331 \027\277\000\257\254\277\005\215\277\256\005I\260\277p\356\363$\373\277\225\277Fd\310\227\201\031\302?\242V\277v$\243\301?o-\357l\273\007P\277\r\024\367b`\363 ?w\001\312G7\340\300\277\343\353\317N\016\363\277?\242w\373\373\320_\210\277\035\023\231o~\335\270\277\347\372\3106\r\"\240\277\\\366\330\0256T\262\277\257\021\334\010\326\017\304?]\267e\013\\~\261?\342%5\274\233\342\300\277\024l\376\220\020|\244?\n\256\035s\017\325\305?\243\255I\342\260\032\271\277\027\351<|`\312\262?\\\371\024\301q>\230?b\327\246\210}\240\245?o\2455\306)M\210?\261\315\276\224\266\324\251\277\202..\275\254\315\267?_\365z\003!E\242\277\036\024\001\2721\246x\277j$\342\034\"r\231\277\361Y\221\027#\357\311\277\334Ps\240\363-\216\277\320\201\321\031\335\230\210?\r\207\343\241P\227\255\277\004\004\326\302\264\036\322?\004\202\300\246\203:\255\277\224\021U\203\207\335\273\277\335\204J\240\255\032\233\277W\233\007\242D\313\243?\273I\305\210\261S\277\277W\0213>\231\340\277?\367=\343dz\256\315?QGp\320\245\006\254\277\301\211/\013\254u\276?\037#\244\224\014\217\276\277W-\352\247:E\270?L\370\t\330I.\264?\t2\217\271I\265\312\277I\304\207\240\364\221\252\277\002@p\306\212\320\243?K\317\362(\275\370\263?n+\016\360\267E\325\277\222\031\335\023?9\256?\t\241]\007*\004\233?\032\212k\242c\250\261?\010;Q(%\334\303?\026u\235\177\203\224\247\277c\223\224\237\0267a?\341\336\361\376\261\204\253?g\347\276{\r\241\271?\215\326\266\220\306\032\272\277\230\244\010\373\236\250\262?\343\322\004\330\036y\224\277\365\307\233~\263\337\260?\375\265\"@ta\225?\233\022\312\005\271\370\256\277\rG\225\2109\266\211?\312y\006\351w k\277\225\t E\204\024\303?B\343\222M\312b\266\277\n\332\247e\264\230\253?\314\262\365\206R|\270?\351\200\271\026=\025\273\277\261Z\346\313\272\237\255?\004\302\035\333\362\343\250?\np\215N\277\271\301\277B\327\205\030\372\270\242\277miR\320\362\r\233?\372\327u\"T\215\264\277\023UX/P!\312\277Ct\366\330\312\323\221\277\327,\230\267.\277\237?&\221\212\347.\366\243?\337\'\2077\037\361\311?\237\264\002D\003\303\222\277<\323\005z\037\376\306?+\000\000_\346\\\301?/\227;\253\221\351\246\277\023\372\305Ms\240\214\277\250\371\'z\243\242\301?\013\244FZV+\302?\261\346\"\014\004\256\276\277[\323\204$\344\177\245\277\213\035JIig\236\277\320L(J:\211\202\277\3557M\256\214\340\244?\273\370D\255[\201\250? \001`\037\205\211\234\277\337\373\315aTG\254\277\023\364^(at|?3\264\331\026\342\233s\277-z4\372\t\242\304\277d\215\335\262xLw?\245\213A0/\225\205\277\212\\L\034j\361\262\277\223!\224#j\341\260?rD^\361-\002\221?P%\022\331t|\301?\'\243\023\033\017\341\271\277og?\203\245\307\246?\272\223y\322\277?\265?q\267\303\321\004\275\276\277d\006\030\324\373\367\261?i\302\200\246\250\303\271\277\311x\034l\241\347\266?}4\226\332\377\256\231\2773X\263}\321\200\245\277\265\233\303%8Y\264\277\017\026\204\351\2246\262\277\037\327}\r*\376r\277\224!\375\350\243\021\301\277\177I\361\207\271\314\313?\016\266I\304\366\327\253\277\346\205[e\336\250\226\277\003\236\222\367\214]\202?\242\213N\221\362\222\306?\256\244e\344 \035\247?\320\006gS\353\230\304?\217\317\242\014ID\260?\275\222\214.\021u\263\277\324\225\177\314~n\250?v\353\356\241RE\254\277q\252\244\346o\273\327?\207}^s\235W\223\277\250\304R\353\343\362\237?\213\354\n\257\235\251\316??\256\355\316\316P\234?l\323z\026wO\244\277p>\262#bm\264\277\327\344\230\372G}\320\277\177q\206\017\303\362\270\277\235\366\010\357\2310\272?S\215.d\036\327\243?\001S\274\330`\377\312?:\202\022\217`l\252\277\022\262\341\024\203g\244\277\343\021\211\246\350\251\336?l\230\232\004\342\217\221\277.\321\301-\003\r\205\2770F\261\236\246z\325\277\210\243\365cW\365\267?*\306I\246\2359\215?m\033\245\330\366\363\277?\031v\335z\271\323\313\277\312{\241\033\232\010\245?,\224\317N \270\265?o\277a\263Lu\231\277\r\004\333\257\210+\273\277;\263tHp\024\273?([\211u?\362\243?)\362\341\335\317\273\223?+\005\032=\345\377\221\277\nc\243\305\316\326\244?\033\000\303\371\220r\231\277!\250\203*\023\307\240\277\245\246\307_\342\204y\277,Q\225+\321\263\251?Y\371|\353Mq\320?\355\021\035\256\216\0306?=\n\202\267U\000\230?\325Iy>4\224\267\277|\357\320s\253r\220?\017d\322\320\033<\257\277\311h\277}\260t\253\277\256G:o\"[\257?\320 q\316pu\245\277\340\240\272h\325\000\242\277\342\325\230\363\200\035\325?\230\236\301\035)\260\235\277I\200\306NB3k?]\230\210Aqt\276\277\220|\367\334lU\241?.y\222\2729\272\266\277\003\354Zft\334\207?,\301\217W\024\211\270\277!\323H\rSH\246?\026\024\305R\342\233]?\352\374\342\274S\263\202?\203\265\343Q\001\267\276\277\205\341nG\323c\270\277\222\365\237Y[%\265\277\007\243[M\\\003\260\277p_&t\377\211\302\277(.\322\302\363\365\300?gr\r\336\355\246\255\277\255\3748\330\010\337\306?\007\310vHD\273\304?\010\244?\t\345\t\203?#\205\3018\250\177\261?\212\310n\t\037C\302\277<\201\365k\t\376;\277\024\037\336\303\023/\304\277\277Y\307\2046\r\304?!x1\230\221N\202?\356|\324\352T(\266\277\3644\32050B\273?]\"\257G~\343\274\277\351\377\323\364!\r\220\277g\333\032\270;o\261?-\301\3210p~\266?\322\374\022v\331E\251\277\270\020\370SP\266\266\277)\311\005\341}r\263?L\006}\205\035\260\277\277\304\356v\213\347\227\255\277v\302`\356r\"\260?v\2209\177\017e\271\277\232%\004_\244\256\264\277\245\337cS\031\006\215?\266\267U\215\207\024\273?\300\022\010\312\322w\301?\025\330<\255*\337\277\277\321\3547\232\262\232\275?\341\033\221\344=.\260\277\255\207\304\3410\261\244\277\317\310\233\251\245D\261\277O\037\352\021\337\221\242?\237\226\206}\352&\263?\366\237A\300#\342\273?\376\250\347,N\306\211\277\252Y\320\375lV\251?T5\t/\375\r\260\277\225\'c\354\210\322\262\277\354\2417\261}\315\245\277\001\250JKq\275\241\277a\227+\005\014\023\277\277\204\r\303U&8\262?y5\334J\316\314\303?\235\235c\214\206\304\217?\025\337Q\206\235y\275?R\274\253\2604\037\277?b\027\026\325\352\242\311\277j#\211\014\252\363\306?>\343\244\234\277?\\?\03421\203/\312\270\277\251^;v\257\361\277\277\352\002\325\370\240\350\247?S`%z\034\236\270?\371J\243\375\002\236\262\277\207\233\033nh\275\274\277)\351\262#\235\254\261?b\311\254`\000\374\256\277c\335\244\033\254\343\234?\211\374\223\325\303\n\246\277\342=\3738\253G\241\277wV \265\023\337\263?\027\215(\236>\313\244?;\021\316\022bP\302\277-\253\374\206>\371\260?\034\321^\226Rd\254\277\230\313e\013iS\275?\231D\025\\\337\204\322?\214\255v\022\177\031\202\277Sp=\321\261\231\227?\352b\337\353\216\n\250\277H{|\000\n\271\240?\036\356\233P\002\320\246\277\205Z\371\362\"\n\241\277\026\271U9\360\357\270?e\270\267L\210\323\302\277g\320J\231o\220\246\277\237\\MG?\365\260\277[\256>\013\355\257\247?\364\016n\361W$\271?J\303\336\3424\343\245\277\021\373\302#vS\302\277zM\262\271\371\323\225\277\376F8\204\332\\\261?\312\036\311\345;\221\262\277\377\275!]\337\205\273?\350\215\303\354Q\221\266?\334\351\240;a\317\241\277\037\274[\333\031\177\270?\023\367F\321\221\365\261\277\036s\245\346\362\377\241\277\200\347\337\3725\031\251\277[6\376\217\241\306\301\277X|6\330\366o\213\277\024K\275\263\001\226\300\2771\000\306\334\024\214\242?r\231~a\314I\265?\007<)>\214(\275\277\016&\217\355\205\223\243?C\374~H\224\260\236?\320$\027\370\354\027\240\277\211\237\311\322Y\366\214?\372;\332\037\373O\263?\277\324\315l\205R\205?I?\260\317C\025\224\277\304\342\245m4\256S?$\276\201\'\347\373\307\2774\002E\313\237\233\222?\'\320\317\022~b\307\2779O\313cd\334\324?h\010\326\3507\315\260\277zo1z\256\001\214?\300fy\007Q\265\265?\363v\037\205\240\\\324\277\331\250\260\230\344\337\220?\316\000^\301\310\017\234?2A\256\376P\261\260\277\363e\2678Vc\251?\201\274\241\020\206\316\304\277Z\013\227\302\225\226\266\277\350=\000+\207\025\321?/\270>\003\210\251\254\277\3121\247\252\364\346c\277\251\371\023^^\341\300\277\213\345c\006\010i\235?\032\322\353\240\230\004\306\277{\213\274\323j\275\300\277Oa\037\244:\306\250?\253\205Y\335\027\273\301?\320G\241\273\033\253\270?\030K\333W\333\344\235\277\037v\244r\266\036\253\277\340L\315\030\241\247\267?\3265k\270\371\021\230\277\364\016\016\037\230\221\303?\323u\267\250\272h\300?\307\235\375\372\037\236\263?\325\346A\271\240\212\315\277o\020\271\342r\035\265?/\216\276\0303b\262\277V; R\213\351\315?\3723\352\347\257\035\320\277\357((\306\213\036\257?\337\303@l\366\340\307?d\260y\tz\265>?n\275r\\\216y\236\277\'\332\273\245tm\242?N\342\032\305F\215\267\277\277\014\342\327\361e\273?U2\337\017=\320\256\277\201\332jT\243`\315\277j\243\225\201\372I\315\277\246a\264r\026\001\211\277\351\361\366^r\364\306?;\336\003\334p\241\247\277%\244\214\246Q\337\314\277\317\275\261\311^\373m?\356\246\360O4P\226\277h\006V\260^\357\247\277\373\200\307\001\317\306\253\277)2\367\221.C\264\277\335ci\340\255\036z\277\016&\202\026@M\300\277%G\3716\016\275\251\277\250\237\247\\\223\250\267??\365D\357\335\200\304?L\254\337s\177\315\300\277\327\006\217!\200\312\264\277\341\024\210\253\007=\221\277\276B\245M\'e\306?\246\036\302\357\016\211\266?^H\263p\240?\267?\344#\302q\207\224\270?R8>6\221\215\301\277QP\261\021O\261\263\277\006<\354y(*\252\277\377W\361\353?\355\325\277f\022\315Y\213,\266?\033;\036\326\026\310\224?\361\326\t+\311\343\325?\257\334\2076N\206\256?GX\242v\351\336\247?\375\000\206g\301|\241?\221\315\240\254 \355\302\277\350_~\364\361|\244?\325\307\340\022O$\260?\352\254+\240\206\365\236?+\333\355\261\370\332\240\2772\331u\244sN\276\277\376\301o\364\316\250\274\277\t\332\272\237\201\020\250\277\204^\302n\305\007\231\277\214\352\341\005\014h\261?&\261M\304\252T\301?\005( \324\361\226\276\277@\224\253\251~\037\317?b0@W\330Y\316\277b8\022\006<\261\227?\214E4\n).\231\277\205D_m\352\273\271\2770\253k\333\243\r\250?Xh\372A\202a\243?j$\204z\271\010\244\277i+\030\340\302\314\277?\301\263V\024mT\303\277y\354\376\205\344\276\236?U\242\277-fO\247?\367V0\253\301\255\244?Xr\353}5\026\256?C\360lh\264q\261?H\003\267\034GF\321?F\260p\'\2529\320\277j\246M\304A\022\262?\254g[I$2\302\277\317\331\210\322\257\025\306?\026X\356\300Q\273\317\277\340P\217\272\3126\252?\205\235\213i\342W\262\277\345\230rw\322=\263?\320i\301W\240\343`\277V\366S\334{\024\255?1qQW\262\345\260\277\2229\232v\260\202\272?\366\375\020\217a\372\227?\"\252\366\326R\025\256\277\213\355\366\\\020t\305\277\232\355\244so\365\250\277vM\346W\030R\254\277\336\007\016 \177\355\277?\277T~(r\016\220?\233\206\320\315j\222\272?\244\020\267^\314\365\310?m\313dU\3749\321\277\261\232\2154d4\224\2776)\200\006\230~\270\277\336\263\247lV\332n?K\356\313M\005j\246?\365\\?Y\262N\306?\251h}\3675\032\266?\233\251?\307\013\231\311\277\205\233\003\010a\361z?\313\232\374\261\220\220\262?\"\343f\231\250z\270?\236S4\267\305\316\251?\023\205\360ci\340\254\277%\255*\002\247\377\246\277\323\177\253W\020c\307?\n\206qw\031\rt?\0242\341\257\302\253\264\277(a\024\353\356\372\304?\034\250\305\2307\017\247\277c\367\374z\001`\243\277\276\304(%Q\377\240?&\310jd\300\364\307\277bQi\355Z+\235?(\273Mt\235\376\273\277\336\225s\302\304M\245?\263\234\323\230M\265\303?\227\255\262\227\005qu\277n(\364\032\343[\232\277\200\026Z\346\221\235\237?2\211\342J)l\266?/{\341\300\300\361\264\277\246}/\200sO\304\277\010!b\253\320L\272\277zjI\271\321X\312?\345\202\237\350\026\247\275?\025$\251\235\366\277\253\277M\344\250\004\330\206\257?\271>\023F\237M\300\277\006\305(m\024\320\272\277$\374\256\007\264r\272\277\372\317\311\246/C\210?\017L\276\013\027\245\260\277\216\333\276\257\021\264\302\277S\237\007&it\207?\200\2626ML\270\241\277x(\000\216(\261\260?\353,\231A\377\343\272\277\357\240l\371t\272\261?1\203\340\340\353d\272?\273\002!]!\375\274?\200\375\222\346t\211\251\277$\215\364\0007\276\201\277\206h\365\001J\002\277?\241\232\024\254m\277\270\277\240\3414\312\371\335\262\277\212\035>\025\207\000\267\277GZf\254i/\322\277\360\366=\035\231\032\272\277\'\013\0253-!\237?R\t\360!.\341\226\277\217\312\024b3\343\253?\252\355\265\343\352\023\266?\276\004*\347G<\263\277_\336\326\231y\212\266?E\221O\n\002A\232\277\210|<t\247I\264\277\366\nvH*\037\235\277l$\363\203S\331\256\277b\306\365\207\210Z\216\277P\220R#\022z\310\277\027\"\031\353\301\272\201?\321\343f\317q\303\226?\033\301}q\314\216\302?^\325Yl\237F\314?\357\211\2730F\004\273?\324\262L\322YH\311\277@\226\005v\311\002\300?\275\2037;<\006\312\277p\010L\nF-\251\277^f\\\212\211\275\266?\226\204\005\007\202\241\257?AGC\216xC\304?\203f!}\205h\250\277w\303ls\266\331\261?\353ov8\275b\253\277\3730\266gE\001\251?\376!\320s\264\256\245?M\327\'R\033N\312\277\316\007\321\342\305\244v?\240\014\243A#\346\256?D|\375*\231\223\255\277\030\230\314\343\263\005\261?\317\376X\n\246\nv?\330\001\320CC\032\246?\343[\005\350\221\315\211?\343a\375\240\261\221\250\277+\375m\253\220m\253\277Z\033{$\001\253\227\277\270\331e\332\373/\272?p/;\325\026\005\256\277\230\240\371\221\277\375\264?\001\375\"\\\202\017\306\277\220\337\243F\317\343\263?\206\251+El\262\240?\341\370[\276\360\225\241\277\"\272\3226\330\006\246\277I\306x\025\375\020b\277\207W\353i\342\t\277?C\231+\355\341\357\221?\337\242\247\310\200\360\262\277\030\024\226\255\024\313\303\277hP\2569\030\247\251?4+}\230N/\250\277{g\030\367\t\007\233?\030-\313\214\330\"\222\277^\027\377\nN\355\300\277\267\367\377\352\242C\250\277\024+\214\344\277\332h?\277\204\332\316\365[\300?f\314p\000\213v\214\277\034\204NBe\316\257?D9K_\214%\263?\024A\177\351v\226\274\277\021\270?\372\315\033\266\277\033\014\275\231\223-\263\277J&\270c\017\266\231?\246\303\207\214\243\303\277?O\213-\256\276D\261\277\023\323\224\021X0\261\277\2266\335\276_\332\311\277\340\305T\270\222\276\227\277\363\311\002\2314\277\325?\304\363\007\376v\267\311\277\016n\331\000E\206\321\277-\353\306\304%i\273\277%lY{\211\240\263\277L\002\212\3344\256\222?\347Q\006\n\024\212\200\277.\004\312\317d\025\223\277\010\'\214\352\365)\264\277\362\205\261C\250\212\245?\267\237\254\257\355\357\277?\324f\177\267f\344\266?\245!\013\020$\376\234\277)ti\231\023\226\260\277\247\250a\023\020\203\267?o\016m\021(\014\267?!a\302,\265\227\267\277\017\206VY\335v\260?\317\'\344_\212@\251?Z\014n\240\225T\266\277\024\372\305\313\365+\254\277Fp\275/oY\231\277xE\362\351\323\265\313\277\335\027uq\216\020\255\277\260\211(K\027\367\251\277^\356\034\331w\212\224?:\025\231\346Po\261\277w\330\026\253>\311\251\277\226\357\332c\007\005\273?\312\300\220V\2469\244\277\023H\331\273{\274\322?r\014<!#\245\205?\357>F\021\035V\305\277\223\0176\3150Ti?s\2557\217}\313\243?\335u\374\236m\312\252\277\335X\375\362\035F\250\277\341\037\020\020\014J\276?S#\260\335\0033\264\2778E\221\244@w\275\277\377\246\000\245\367F\266\277U\322\241PJ\254\264?\340\211\274;\217\016\236?;\346\367\267\025F\275?\340\221z\213\215\370\251\277\362\n\206nd\000\273\277\007^\226\r\\\327\234\277\177\3033\004Z\252\276\277\210\3330ev\033\266\277\235\242\2621\331#\246?5\353o3.S\321\277FH?\002\357o\303?\007\262\\9\225f\242?\326\274\345\300\221\023\306\277\"C\336\312\317\237\320\2772\250\337\235g\272\222\277\356\'\245\001\333j\320?\026Z\276X\214\202\320?\317\212\254\341\274Z\267\277\323\322\324O|\341\235?\374&@\330,\024\215?\276\256\323C\3345\245?@T H+\305\263\277\267\334vVd\021\177\277\334\r?\254\232u\255?\354\341P\221\324-\325\277\013\351\273\263\354\006\227?TF\335h~L\252\277\037\2374\215k8\251\277_p\350\0062IF?v\344T\210-\241\276?\212\340\007\020\334\233\310?x\321\267I\344\231\233\277z%\225z`\024\246\277\230y\215W\324\231\242\277\275\215c=a\025\271?\317\321\024\326\366\264\264?\010\363q*%\'\267?n\351\021\332\036q\274?5\007\232\213\363@\246\277\006\032\2662\227\334v?\364\345|\271!\277\273?!\tH\332\310>\260\277?sjD\236M\260?\345\\:\315\367\375\237\277-\302\006\223\360\334\241\277NV\226\2608\\\303\277\236x\372\013\225\017\261?\377\372\033\300\233\203\266?O*{4\tg\275?9\217\361\206ZY\315\277\363\322\216\\\334\300\257\277fNU\352wN\234?\324\014\303\031\025\354\306?\262\226zf\257\001\237\277\222os\274)\326\261\277\r\232 \234\221 \265\277&\230\242\334\343\375>?\241R\014qwz\251?S\233\335+\271\340\265?a\261@c\241\323\303\277&\276\250\272\004K\246\277!S\234\3404h\272\277\256|)+C\212\267\277\002W\373\266P\200\224?\222\362\030\352\255\251\267?\341\334\262\217\006\205\301?J\207,r\303\241\253?\020\326\366\362Q\315\237\277\270/*\030-\331\230\277\263E\336W\240G\264\277\320i\021\361j\320\256\277s\244\232\247\003\217\220?}\213Y[ g\261\2770\233~\301\013\346\311\277\264\203\006^\362\351\265?:\244\320$\364\\\245\277\203\037G:\334\265\243\277\364p\004.$}\236\277H\3363\016\244]\257\277cP\365\352?Q\303\277\003>/\177b\035\267?j\r\024\233\t\337\244?Y\245m\215\016\230\242?\226\2043\254\301\320\272?%\352\301;\272\313\255\277\004u\311\373tU\302\2775K\355bS\340\302?\374K\376\377\202\200\243\277\375,\242\233\000\262\233\277g\205\352\374S\313\300?,\231\216\301\262\207\272\277\205\257\037v\013)\304?\t\230\331\321\345\201\267?\021\000\232\377\370\277m?\230\227\322\225\202\324\307\277\371\366\002\215\345\276\235?\233\025\334\177 \260\226?\260S\177\370\216\010\277?\002\320\205\212\217\205\205?0Xeoa!\255?\206\261/\201\213\267\302\277\224\341B\247\371\314\255\277&\364\353\271\213\345s\277\300NH0\335\027\252?\340f\003\013\014\025\027?\001\223\001\276\203E\263?\346\231m,\303\300\263?\002\017j\322\353\262\305?C\017&\3307*\304\277\365\375\t\357\211\375W?W\351g\013\267K\264?T)\036\335\242\351\264\277\304\270\215\0201\352\247\277IK.V\006H\267\277\226\322[k7\302d?;\345\025\266#\320\274?\001a\227j\203\310\244\277 b\272>}\375\214\277,\312T\0070C\237?i\220\016\361H\377\272?\362o\2509\263\223\201?\3574~\306\373o\256\277\203\251\240f,a\265\277U~\031\245\014L\222?(\276t\274\216\304b?m\237d\236\021F\272?+P\004l\275\330\272\277>\t\206\376{*\237\277\020\347\3026]D\240\277k\305\265\"\301n\313?\t\013\0218\006\326\261\277\340\331\263\374\'~\230?\023\252\243\300-\312\301?5\035{\256\000u\263\277\325\r\000ejgj?\254\344\360Z\016\244\264\277O\312>\256\305\203\242?\346\240\342\221\376\270\271\277\254\346\243\225\035E\220?\363\251Q\177\247/\262\277x\324\003z\242&\266?\352\330\247\365\352\253\236?\257`\210\205\337\302\317\277\004vvV\266\310\314?\374f\356i\317\3701\277\377\231\267\223We\261\277\311\365\273\357\373\227\224\277\031\0067\010\223\333\304\277I\333\204{\201\312\207\277\306\346\353#\252M\222\277\354a\270\"\013\234O?\016\300\376\220\177\340\270?\357\374I\035\322\250\263?2{K\276\224\223\232\277-{\262\206\353\246\250?@\276\256\030\273%\313\277fr\211\226\273\300\275?p\210D\342\001~\277?X\315\034\340\210n\262\277L\324u\346?\346\215?6A~\002\253r\260?O\367\227c\361\322\275?UA\220\256t\n\264?\340!fP\321\032\271\277\274\304\205zy\025\247?\336\334\035\367\010F\222\277\325\367AXw/\247\277\206f\377\334>\224\272\277w\n\304\005\214\302\222?\037\344\330\276\263\036\263?H\023\235\3339\257\313\277UK\277\266\004!\274?\023\245\303\327\301\010\244\277:\213EQ[\302\213\277r\321\0345\340\335\274?\027\235\316\235=G\250\277\275\270\234\027\200#\277\277\216?\273\367`O\264\277\346):\215\355T\260\277\242k;\037\271`\261\277\r[G\221\364\253\266\277\246\327 \316\273gw?\342\245\022\345g.\300?\004&\332\341\253\273\251?\216\017Jna\370\277?]\000@}\366i\242\277\307\214h\375zq\251\277t\365\035\333Z\315\233\277.D\251\224\375\017\275?B\016jv\304u\244\277S\311\rq\360M\301?\337\257v\262\212~\250\277zF\301\364xg\306\277\355\313j\325\n\326\200?\002chK\024\227\215?\311\225 yX\203\316?.0\221\313\252\317\265\277$\347\035\004!\206\276\277\210\177\325JW\236\301?<\024\317\247\364\024\262?\325\243H\341P]\250?\265\360IV:\242W?\326M\305\204\315\275\246?\242\367t\017\225\326\246?\354+\004\026p\202\252\277\332\222T\333\230\355D\277\337*\356%w\t\303?\\\336%\360b0\242\277i\333\032\230\n#\226?\014\352>\372y\032\263\2772\010\312\256\375\207\251?\010o\366\212\022\214\231\277\253\233\265\230v\335\271?r\247\223\300\346\"\305?\261\215\'[\231\253\224?P\032\275\342&\302\267\277\307W\2445/\013\255\277@\364\272X\266\032\260\277\376:\3328\223v\206\277V\366\364\334\232\025\264\277\320y\232\315\352\367\300\277\221vm0\251\377\243?\362\354\006\005\333m\266\277\327\245Z;\024\214\237?\222\360+\277\332\r\226\277_\227hQ\302\333\245?|\2329\323\212\270\300?_\233\216\245\020\262\226\277bx\022\277\365\263\255?n\014g\ti\354\304\277\2508\023\247\270cW?\332\221\335-\017\031\247?f\220\226\370\177\243p?W|\021\236\031k\260\277\346\0267\023X\213\332\277\20019\325\325\024\233\277\346\254\327\232\243m\270\277\006\305\331\223\302f\300?\025(\272\006\3127\307\277kV\212\325\350\251\303?S\001\226eA<\253?\312\010~\327\026N\232\277\035\362P\003\302\006\261?S\204\000\342O\221\253\277`q(\375K\362\243\277\256\021P\013F\212\252?\r4l\207\314\341\266\2776\226\253*\0065\243\277\255\262I\304\344\223\276?U\346\033\t|\371\267\277hHq\341\235w\255?\201\362\243,+\236\323\277\256\204\035`\000\034c\277H\331\315X\211\245\242?\317\023\013\331^n\262?L\025\023\343\207B\262?Q\276\260\002\3630\226?\013\337\223\245K\366\244?;\364\"\364\220\261\213?\244O\262\017\231\261\257?6\033k+\307\312\255?\326\326\231\365\335\320\277?[.\347\316\371\323\332?\267Y\030\205\356\266\274?CI\353h~)\245\277\260Jn>\343[T\277P\233\243\376V\264\222?$\351B\362[e\264\277CW\227&$\320\306\277-\327\245\005*\366\325\277\263\346\025\314\276\215\267?\215U\274\316M\364\246?\224\n\247\301G\324\261? \027\242y\330m\247\277\205\345-\2476>\260\277\356\033\\]\244\362\265?V\022\262\232\300\263\243?\253\207\323\263\205\270\271?\033\372\237\027\272]{??\005\010! M\315\277Kpx.S\334\216\277\206\325\324{\353M\271?\336\275~\002#x\226\277\251[0U\237\234\265\277\024\315^\363\310\026\264\277/\205M\246:L\245?\023G\r\322Nk\205\2776n\033}\256D\277?\376\021\005\331\217\304\256\277t\021v\026\021{\277\277\253\366d\367\243\266\217?lkJ\266\310\325\257\277\224\301\343\345\207\321\271\277\343\260F\245qw\267?\240.\004\255\350L\224\277\242K\356\355\201\267\255\277{\215\014\351\337\257\322?\257\217\014\020\211\364m?\320\322{\312k\330}?\265\337y2\214\031t\277\3552\240\021\231\005\301\277\024 \261\260\237m\227?\250\364\256\362}\000\237?\336%\340\357\313Y\274?|\025\'E\3266\277\277\026\027\010\024\324&\235?\216u\201\330\263K\261\277\r\265\240\304\302\374\241?\272\273R\310N\315\244\277\035\002G\016N\233\303?\256\363\241\215\320$\233?\235\244F.\323$\322\277\244\002\233\203Jo\246?\373\364\2653B7\275\277o\203G\247\201L\251\277\2672\274O<\035\277\277U@\031(T\024\247\277bP@@\236\217\310\277~\311\022.\273\302\307?\272\035\334k:k\233?\241\201\201\325\213B\276\277KA\351\240N?\311?\232(\n\234\314\312r?\2535\032\374\016\006\221?r\261\254e\365\222\260?\213\220\013\032\022~\266?j\374U\217\372\271\203\277w\323\327\243_\345\220?\\H\363\357\313>\250\277\252\030dN}\355\224\277\226DN\270\314\256\212?b\222\214O\312\336\267??\201*T\364\355\242\277P3\331Cr)\267\277\316\226\216\374H\371\301\277\2105\230\203Bs\274\277\362*\217\307\320\367\226\277\361\312\233\344jQ\207?\177\355ES\242@\220?\027\206\351\377\302\227\272\277\225\230\305\265]0\244?K\210\"\262 Q\276\277c\213C{\274a\271?%N\313L\241\265\257?\311\373\360\235=\217\245?\233%v\006`\255\310\277\336j\010..W\201??Kd\350qs\207\277\242\200*S\261\032\257?U\366\235\005\031)\240\277;\366\010\274\330\017\265?M3Pm\021\313\275??\354\226\033\253T\243?\272\332\3638\265\032\316\277D\224\021z}c\246\277\271\372R\332%\026\261\277\234\302\026\213\\\232\224?\374\340\336Z\227\320\272?\201C\024\346\341xU\277O<\204\215\005rh?\010\000\231n\030W\203\277\241\342j\004\013\270\235\277\232\264\316\206\304F\220?8\221\035\211~\235\213\277\300\326ad\023\201\220?I*?\022\225h\260\277\336W\036\235[\271\317\277e\034E\205\227\221\201?\361\335C6%Q\225?\347\222\\\374\245L\274?7\374E>\245\205\263\277$?\213\376\3633\257?G\351\031\306\324\215\203\277\374-\240\305I2\322?\276\342)u\307\307\301\277\254\270Ht\256\307\252\277\n,&\253%\307\276?\010\230\243\274\211O\267?8\333\374k\362\246\211?\214\322\244\275C?\217?\261\006\351\327\326<\313?L27\016~\365\312\277f]\336\204U\305\204?\311\222Tu*\300\300\277a\363\250sd\272\260\277\265\235\276\300X\252\263\277\234\"\0232*\304\261\277$o\210o=L\305?\203_\rsoKf\277\321\205X\004\227n\257?\340\315\377\321nN\256?\257\237\252\031*\020\315\277K\356\253m\225 \241?\264E\375TY\216\261?W\304.\273\261na\277\031\260Sr\277\247\301?\365\331k\2279\343\300?\252\013\031\324~\367\272?\366\003\216@\014\362\227\277!\362#\204\241\372\262\277\206\361@\252h\273v? \001\250\024\261\267\270?\337Gx\"m\236\301\277\307\325ov\031\376\254\277,\373\021\344*\026\264?\207\035\332\034\207\260\304?n\316\264=\262\265\224?\323\330\345e\372\235\227\277\030\206\320\232\211\257\311?\311\331\275\372jj\226\277\032\323\316\277\303\332\260?\323\257d\261\002*\273\277|\235\350\203\351\236\300\277B\351C9\021,\236?\325*\000\350m\263\177\277*\030h\315\354\371\301?W\314\236\221\333\374\267\277\371\316>y?\241\246?a\322\353\315\266\234\277?\021k\375\324\354D\306\277\025)\\\346B\341\270?#\337\036\005\007_\270\277\355\364\256\200\241$\245?\026m\266rrS\330?&(\232\037\250t\300?\347\'>D\233\367\271?g\273\334,x\233\267?\266\271K\r\363\276h\277\325\205\375\234\370{\250?\200\377\352\246\211i\252?L\247\323\267\264&\233?\005H\365BK\256\241?\301\030E\302q\330\262?\335\251\346\366\024\207\275\277q\302\210\361\032\'\220\277\236\000\253\021\233mM?\375\t\254\026\373\370\266?\200\336\275\274|\264\262\277\022*\346Ofu\263\277\033\352\250\0137\225\240\277/P\224C\022\376\266\277\264\233\254\344c\307\217?\253o\267=\213\346\216?\224%\037\031:\266\244?[~4g\337\265\230?/(`S\340\352[?\306\306\300~q\323\225\277\006\n\256\234\242\312\275?Z\026E\224\344\373\260?9o\217\373\326Su\277ef\014\300e\363\246?\353\013\301\355\261\013\263?\253\351\222\n:\301\266?\236A\365\316\306\000\270\277\310\304\274y\2303\200?\036\\\341\367|\241\276\277\235\273\036(Uu\260?\036?\323\330@\177\251?\245\326}\010P\344\246?G\271\262\237%F\221\277\316\tP\211\022m\224?\3703\365\240f\240\300?\235\351\211\253\033\370\260?SX\347\214\203\036\303\277\204\302f\257_\376\323?\316\231\374\320\324-\216\277\327\014\206\261\307=\245?\003\206\'\370\224\017\310\277\3735\017u\303\036\302?3\301\300\305\360\353\304?\316s\235\037&/\254?*Bs\030\200\332\217?g\'\026m\211Ax\277\211\222\226Y\364\222\246?\021\276\030.\245\216\254\277\312y\236\013\246\244\255?\327\322\206\024\013c\234\277\236\027\235Q0\334\217\277\3458\014\177\371\300\276?\032\342\232\n\2362\311\277\027\273P\323\206\"\244\277\022A\230\242Nj\203\277\330\"\216\276\201 \234\277\254\336\017\221+\364\260?\007M \236K\261w?\026\300P9\010!\245?\3053p\020\270\351\257\277\357\373t\271\213H\213\277\362H*\351\004\177\211\277\233\252\240\201m\215\321\277\316\0362\036\022\343\271?R5n\016\207\274\260?\010\216\017\224\325V\241?V`\002\337:W\306\277\347<H\270\334\351w\2771\217#\026=\362\250?Z$\000-\263D\230\277\250\265<>\215\366\300?\306t\217+\\\n\265?\375\303$0wu\261?\216y\032\274/;\316\277\327\326\324\014#\231\272?\203z\200\376\236_\266?\273q\271\313S\033\251?\333\363JY\3313\256?\334hi\223\222\272\301\277E\373P\372\211\232\240\2779\251\"O\306\200\240\277\030\253\336H\304a\212\277\330e\t=\221\326\240\277\270\223\2061\250\010\240?\342\2101\351\3527\275?p\224=\027\014`\245?\222\346S\244\366\002\220\277<\335\347\217<c\275\277<\256$@\017p\227\277\360\017\323\262\227[\256\277\343\372\010\215\224:\303?\275pb\025\027z\243?8\032CHX\237\275?U\227P\371\373\027\204\277\307r>\3459\206\255\277sp\352bwz\240\277\325C\246#\270\361\244\277Z9Oik\225\265\277Fa\355+\353\275\241?\232\352\324\026\273x\277\277\301\350\354.V\t\242?\233\374\326Y\205[\265?\310\3170\324\022\335\261\277\021\363\210A\207\026\263\277\320E\231\370\310\341\273\277\026\313A\327\271\t\256?\223\022x28\001\312\277/{1\345\306\260\317?N\306&\365\037\025j\277\004\333\345\0343\370\306?)9\377\177\353{\245\277\300\\\255\337\370\304\305?\357\037\335\242\016\305\241?\210\211?\310g\357\211?1\253\204\362,\377\236?D\375\335\321\374\222\277?eX\277g\341\305\244\277B{\253o\357\345\256\277\315\200+\257\325\265\310\277\037s\260]\216\314\227\277\343\221\264\200EQ\241?\233\365\255\241\254\335\244\277o\006Ct\235P\323\277\307{\211\262Uc\220?#\353\344\314-\376\253\277\334\323R\342\326\260\260\277\312\376\203\\\201\375\302?\325\301u\337\014\334\240?3\210\"\037C\300\272?\303I*c\'X\306?\254\302o\"U\037\235?\314Z\310\362\242\312\265?\226s\360\003\372\254\264?y\374\305\242\330\231\256?\3624\226\307\224P\243\277Z\252@lH\273\315\277\360\325P\272B\261\255\277\227\256N=Tv\273?\312\213\0056F\332\310?\\$\225\374t\t\246?I\346\230`\311\213y?L4)p\020\202\303?0\361\036\t`\361\275\277\023e\227\273o\"\233?\233MLz4a\250?Dttk\265\230i?[\314|\215@\327\264\277\314\223\271\272\254\260\201\277\2371\207\036\277\211\263?\026X\356+\331\243\222\277\221\250\2453k%\300\277\222_)\202\313.\224\277t\3302\221\020G\247\277j\364\305)\233\'\265?\351P\230p\006E\247?8\024\206\230w\362\244?1\247Y|\327w\271\277\226\330f\364U\331\320\277\336\313\270\035\376.\212\277\343M\255g\334\234\244\277\211v\354\263\307\354\311?F\2173\345Nf\303\277\215\314\354\227\n\224\304?\361!\242C0`\320\277\265I\020\005\316\000\323?\251#\270\267)W\305\277-\036\211;?\255\247\277\027\210\330\\8k\256\2778E\271\333\216\327\211\277\366\307y\366tv\230?Z~:\221\006F\240\277e\002\206\013\327b\312?z\302)\225\017B\264?y\206\274\320^\030\212\277-^\246\210\341\325\226\277\251j\326\367=\303\302\277\234\210\231s%\030\261\277\212\'\372\333\216b\305?\272C\260!Q\027\240\277\341\244<\250YW\243?\302\342\330\031\255\202\267?\331Xjq\017X\220\277\311\t7y\346\003\205?\003\356^\004\267\274\242\277\342\324\3505\035\006\267\277\033w\202\323\237\227\221\277\232\037\310\261\326\244\261?\266\264\007\324X>\262\277\0134\334R\266C\264\277\2230\n\362\024%\204\277\220\341\234,u$}?0\377\356\033\363N\312\277k\033\357\212\377v\241?\'>\001#W\215\260\277\350+\340*=\327\256?$\374\003\265\302\207\245?G\300\236\225\010\022\245\277\343\361\241\024o0\205\277\017H:\334\'\t\235\277~8Q\305\262\034\275?\263`\334\005\324\250\221\277<#qg\007T\246?\315!^\355\205\206\244?J}\004\3562O\242\277\006\213\375\374Y\330\211?\3670l$H\004\265\277\354\351\023\274Q\251\265\277\376k\320\315%FP?\332*A\327:=r\277\201\003\317\302<L\304?\215#(\344\013j\265?\321*-Gbg\227\277\315\r]\314L\374\256?\213\335G\3332w\266?\0030\226\016d\270\215\277\263\361B4\356}\255?\0311\273\234tA\262\277M\265\374\366\224\"\270?\235\253u\312Ov\267\277\241\320\325\327ef~\277\004\220\374\324;Z\305\277\2626\3001x\263\305?\230v]\rn\337\246?\206\340\271\274\353\"\306\277qo\351\344s\014\263?\211\261O\224E\214\267?^f:\221\371\302\251\277\275j\354\203\271\347\231\277\264\324N\010\330o\213?\377s\271a\222J\266?\214\310\307?\354\262\317?\206m\364L\236\206\236\277\226\240\243|L;\262\277\246\360+\254\022C\321\277\277A!\342F_\313?\"\327\364\353\017\030\236\277\306Z\324\334\213:\300\277+\257\373\311\200\270\264?\024\267x\344\363\t\275\277\27779@\311\024\243\277Iw\240\304\330\305\273\277\314c\302\035[\224\206\277\212\025A\255a\024\266\277.wd\224\2746\235\277\000\333u\246\010\252\302?\026\307q\007\312\374\202\277\3619\351\223\261\212\253?C\353\215\260\031\225\244\2778y\3551[\337\316?w\277VF\371\t\260\277\027\227\0071W\357\310\277\3534\343\315RX\311\277\tM\271\236.C\306\277\236\353\223\037\266\205\255?^rM\301\317AU\277\202\355\206\244\\2\240\277\236\311}\357\213T\221\277\271A%I\230\\\264\277\001\242\n\216\243f\300?\"\035\t\177^?\217\277\302\027\266f\314\037\251\277\303\333/0\t\032\200?\333\377*hK\222\314?hBt\247M\265\260?w. \233K\004w?\337y!3^W\246\277aTyH\357-\273?M(^\204\244\035\245?B:C\264\240\242\201\277\307\327\261D\003D\263?t\207\275\355A\216\250?=\n\324\023P\260\265\277]\025%\367O\271\313?\034\032P\355\252\205\261?Q\260\017c\360\246\262\277s\230\322\034I\317\306?\355\004V{\2368\301?>\260\333\004\250\310\235?\316\0070\233\367\272\224?3[D\254n\344\273\277q<\232\276/F\227\277\204\255\370\264\264\215\232\2772\027\250=\361q\274?!\007&q\324\334\276?\367\013K\250\300\272\245?\240\313\311`\374\200\220?\005\276\373yV\217\226\277\256\216\233\267\363\'\242\277!\224?\233\032\237\235?\005n;\250\036=\302?>^)\350!n\322\277H\260\341\366LGa\2771\010\204\005H?k?e\005\301\213\036/\301\277\376.\244\201\322\344\256\277|*\257\021\247\r\264\277\314\263y\221t\262\252?;\276\r9\275\275\312\277\366\306c\257\340\313\206\277t\313\017\004\263\361\223\277\343;K\3704\264Q?\261?\320\206\343g\253\277x\001\3325\306\215\273?g\336\0073&\330\260\277d\375Mh\210\032\266\277#\373hf\252\361\254\277*j\033\232\273\316\272\277\030\2115\21412\226\277\324\311\354:\354\212\250?\326\375>\313\013\031\244\277,<\257\362\014\326\265?\351_Wn=\316\242\277nyY\304G\005\220?\341\245\203Kn$\255?7\177\305\002\331\006\273\277kQ\251:\352c\264\277\353\322\213\337\030O\260?$\327F\323\202\305\310\277d.\305e\000\243\220?\220m\"\255\322_\240\277[\032L\031\212J\223\277\321\212\316R0\244\243?\336{\016\237p\232\242\277\327\005iZ\274A\223\2776\324(\366\334s\303\277\353t\250\030U\016\276\277lb\333z\306]\261?RR\352\377\353`\207\277\t\310\251S\277\335\301?\017\362\240n\t0\222\277\377@\030\"\017\203\226\277\252\256\25240.\323?IE\355\201O\023\273\277\373jKF|I\265?YM\2541\034g\226\277\265\037\316\255\233T\217\277>\'Y\253\244\356\233?\201\302\342G\375\273\260?=\0167\322\233\000w?\354(\340<m?\274?\307\366\037\222\242#\231\277g~\276\355\307\264\215?\373!\177W\236}\304?\220\212\352@\013\017\271\277w\245)V_\336\232\277\356l\322/\276X\264?\266Z\031\r\t\232\306?\224|G\026\324\333\257?\265u\307\257}\356\236\277\013\366\037\003*6\220\277\344\002n1\352J\224?\3562\261\350\"\212\260?\256\221\277\255!\273\227?\337\371\273F\363\026\312?g2\332\034n\000\255\2772\361\360\036n\004\245?\341\214\032\307b~\321\2774A\033\303$\262\260\277\371\024\326\223\250I\255?\264\307\353e\236\316\257\2771\r\024\\\277v\302\277\204\001\275\202\026\232\253\277\004\334\214\327\276n\260\277\354\3346\226@\006\273\277\032\352b\202\221\202\260?\346yO\214\036\177\\\277\330X\240\330&ql?\035\217\202\340\245.\253?\346\361,w\004\342P\277\374L`\237\202z\251\277S{\331\333\361\322\256?\333\037a[\027\002\266\277\304lW\361\232H\245?\004\027\210\3146\213\213?\035WtE\234L\244\277F\267\233\357`\221i?\030\032\323,\324\344\250\277\370\320=Z\251F\251\277\323_a-\251\207\270?m\024h\357\312\212\263\277\205\211m:W;\210\277\344D[~\300A$?4R\006a\301\'\245\277\367\261\317%#\351\313?\346\250\367^\313\337\261?\320R\267\354Q\036\256\277\250$B;\371>\227\277\274\371\367vz\224\307\277\375\374\340\230\333\177\310\277\222\305i\005\037\365\265?\r\371\030\224\270/\257?-p\314\n\r\021\266?\270\315\034,\255k\221\277\240R\273+\354w\220?\207\206i\251\207\254E?\txi\353\222D\220?j\271\341\244\0201\246?\375v\3244?E\253?\364\255\372\264\251\320\267?\325\266\315\352\256*\201\277\200\357\203\215z\223\272\277V\312\333\257\364\350t?\247\021Tp\224H\177?uE\262\373.\014\257?\232\373P\007\256\357\275\277\022\340\251\230\365\247\264?\213\006\033\3423/\236\277\303\252o\270~ml?|\364;\237\315\244\274?I^\003\211\213\253\274?\003\rV\353m\200\247?\266\254@\035\322\313\272?\021O\003a\224\247\261?a]\312\272s\377\275?!\323\303]\264\353\273\277[\351U\343\316\251\244\277\236\366u\214b\242\263\277\335\271\230\347\323\337\212?\221C\300\245\231+\265?\376\3702\324\263(\303?J.\303\324g\"}\277\333\034\3638>\346\252?\305e\300\204\356\241\251\277\343T\230IY\372\262\277\252\223=\214\240\016\300?\177GPJ@\032\275?-\263\335\221\347D\272\277\321\300`W\351\235\301?W\374\365\361\363k\303\277e\244j\001?~\246\277\332\275\361\301\310\207\327?\342Z\372\002o\316\251\277\240\354\366}\264\273\244\277\252HM\320\ns\225\277\221\010\202e\343Uy\277q+b<n\316\242?\\\003~\325\000C\224?\007C\345\233\260\375\277\277\266P\375\334\257j\262\277\357\353\377\220h\200\230\277\013R\372T=\215\325\277T\200#\203\320\307\264\277#\334o\257\351\006\277?\374Ed\310\2005\303?\366%I\026M\277\216\277\255\266T\210\350q\266?sS\355}\314H\270\277P\220\"Ad\272\234?\0277\371/\246\227\304\277O\267jw2\330\270?\0144\354h\030\322\271?\324\016[\030>\373p\2771\366\'\3122\220\302\277)\002^\307\001\013\231?\367\n\014,\211m\267\277\177\030\026\023\2460\251\277\243\364\013\037\252\233\240\277\364T\366!Z\236\275\277\302\370\'\034RM\304?7\340\303\033\261+\272\277\033c\226-\340\316\260?\371\345\350\023\243\230\275\277@X\210\3277#\273??\367\261]\316\217\271?\365rM\352fZ\225?\276\250\271\\\032\020\310?G\3561\271c\024\274\277\353|GJ\345\251\251\277\331\275\375\0175P\301\277\272\367\325\344\234p\215\277.\2627\341sF\226?\031\371\203\302\010j\265\277Z\010T\016\031\\\276\277P\200\030\261\320\246\252?r\363r\247\224\013\225\277\244b}\300\337g\310\277[\201%\002\347\017\271?by\371\273\322\314c\277\233\005Y/\036{\311\277\2035\207\344\367W\253?F\034@\362\306\226\304?k\177\372Z\027\236\263\277Qk\030iM|\266?\275\035\207=\230\331\257?Q<\317?\t\270\261\277.\036\203sXOv\277\032\005\357x\316\356\303?\2728\006\033-%\213?\033\rW\266\352\240\247?\377\224\036\030\030\332\252\277(\340m}\r@i\2775\333\314qW\340\217?MR,o:T\177\277 \246\360\254G\257\226\277\372q\005\347\252\232b?\0373\367\224^\345}\277\030\225=\225\022\240\271?Na\306\211\361\024\272?*\007\370qj\200\303\277\242\037\300^\223~\251?\006\311\203\230\232\345\245?\227\320\340\343+\201\300\277N\213\'\265\032\223\234\277p/\"F\237V\251\277\366+\370u\022\032\203?\230E+b>\"\265?#)\322.p\345\300\277\276h\3742\212\321\276?I1\2075\032\325\250\277:\366\336=\323>\225?C8T(e\252\267?\034H\002\310\321V\220?\017\217\340\366z\331\213\277w\037\235\036\320Y\270?R\251\006\207\243B\273?\305\344\301\237H\203\243\277\320\235C\n@]\262\277\374&o6\r\256\256\277;t\322\375\326v\263?\245\241r\244\252#m\277\315\030\273Z\037.\314?\226L\256\274\2544\274\277\367\316Q\003\231m\277\277+r\010ri\315\266?\373\3053\274\254\251\256\277>\346\376\240\251Y\214\277\261\022s\035;\024\210\277\026P\036\001\032\253\224?\315\0310^\346h\200?\261=\227-\010\014\245?\373{`@2z\275\277kx!\001k\020\233\277_\200\013\255\023\351\231\277g\233[@-\027\257\277\022\361--\242\035\251\277\211\211\235\315)\252\301\277 (\317\373\351\205\260?2#`jK^\244?m\274A\363^\312\303?\026\331\310\302\374\007\242\277[\205\212\353\350j\272?\255\276\352\n$\343\310\277s\275\334\000I\304[\277=\227\340b\204;\222?tTM\005\227o\264\277 \347\026Iq\372p?\371\0361:\367\257\274\277\366w\377~\262j\225\277P\335\321\003#\210\232\277\272\235r\315\2661\206\277\221l{\017|\373\257?:a\362\000[|\255\277\035e=\002\322\332\265\277\013\017\251\367\377~\216?\tR\025\262\001\243\262\2773D{\350J\331\320?\252\243\000i\315p\264?\256L\326\301\254v\253?2\032a\203$\253\231?fag\370%\017\265\277`\236~\351\340W\243?\246\361r\244\021=\251?\005\301\215\215\237F\220\277Zj\000\325\332\366\271\277&\373\345Qq_}\277\237\235\031\232\320\031\245?\362x\236\203BH\330\277\211\006\250xXX\265?\222&\332nL\231\246?\240\330\034\316\323%\222?\364w\303\252\366\037\327?\305\n\357\370\302\023\252?\346r\247<Rw\243?l]\273?^d\265\277\254\223\311\300DW\257?[2\371\351\267\273\207\277\301\2479W\203\246\266?\257\321\325\276m!\265\277\005q\345I\353\247\257?z\341bDb\377i\277\245\342&\225jg\264\277\033Ts\037\005\360\240?1s\320\304;\335x\277\256%^\231\276\306\221\277\022\0031f+|\310?.I\'\n[\252\271?\250\016\332\213.F\247\277\177+3\007a\264u?\250$q\230\033x\267\277\300\177\257\240~*\250?\262\266`L\314\320a?\313)5\366l|\300?\323\032\201\037\332\370\243?\000\27768\276\034\227?\345<\022\256\373\273\252?B\237\362\306\224E\242?\030\220QD\216\273\264\277_\263O0\354\315\275?<L_\362\241\242\322\277i\260\242n^\335\222\277\023L\240H\346G\265?\272\320\256\001\312)Y\277\017\010\3642$\242\263?AZ\027\263X\211\264?B\n\001\364\013\226\227\277\3726\206\325\214e\325\277\270L\355\200\203~\224\277\032S\3125\331\335\033\277/\301Y\005&\032z\277\341\234\277\375*\271\222?\315.\335\314\377]\306?\262\365z\354\202=\307\277\342 Q\257\321\207\314?4\013K\366\313\355\301\277\207\034D3\260l\246\277\357\034\355gq\000\273?-\360\323\301W\306\262\277;\262\001\325*f\251?\351\357\270\330\035&\271?\021ek\317\024\"\310?\320-2\036\310\376\210\277\204\243\322\220\3544\256?\t\254\352n\226\022\272?\313+\360\3407q\244\277\230\231 li\267\274\277\311F[hs\342\242?\340\273\271\302w-\255\277~?\034>\003C\224?\260\225\016\214k\034\251\277\237\307\330h\327\251\303\277\363\0324?\006=q\277N\027\267\202c\200\264\277H~\316\035Z\216D?\266\375\032\300\204\021\313?r\005\035\r{D\216?\325\206\213\236\342\366\250?\033\220\177[\235\362\267?\377\204\335\307\202\236\245\277T\237_\022-\304\242\277lP\230\016\300?~\277D\316n\007\220\331\253\277\023\027s\203q_\201?\306/\022n5\257\241?h\311Oi\324\334\262?\304\'\315\016\256\244\240?r\235\3768|3\262\277\\\026s0t\252j\2776\3649t\3745\270\277\343\343\217\260\350|\252?\214\230\207\365\322B\246?\374m\022-[m\271\277\332\306@\332\340\237\260\277s\300\267\3664\306\217?Q\226\177*\030fs\277\266\222&\364Q\301\264\277\350\374\207e\3540\261?\0065\211\324\316\363\301\277\230\225\224\020G\r\303?\366+\007\232\003\333\260\277\2611\317\307B\376\206\277\332k\272\257-G\301?\312\355Jri\273\254\277;\013\275\304R\244\251?H\305\267\001\356\325\200?\2644\253\357l\226\306\277\016\360\301p9\351\301\277)3\230\255\275e\271?\177\002\350\246\231$\245?\320\002\273.q\360\275?7M\332\3771m\250\277o\304\006\207\235\270\254\277\340k\'\001\306\205\272?\002\303#\2775\361\230\277\351\332\026\303\243Y\224\277Y21\334\302\305\310?\204\010\3630\016y\241?\350n\363\026a{\240\277\267\372\240K\345\311\301?g\003\2712h6\274\277{\256\226&|\311\231?\323]7\001d\240\253?~\310DF\312a\204\277\212\032d\321\276\311\221\277\303v$N\001\232\262\277\362\355\270b\220B\306\277l\001X\322\032*\305\277\276cuiep\272\277\244\'@o(y\265?\351]w\366\334\322\313\277\270Zm\205\261\203\261?\250\276\230J\246\020\301?S\3525\347\245EO\277\351F\270 c\"\311\277\377\345\016p\313\316\221\277\327O\014\333\363\235\214?\345\314\nd\217\206\305?RkL\023\221F\272?\355\326\226\351\253@Z\277\010\355\030\3659\251\275\277Z\374!l\016q\253\277\204\351|\351\230E\247?\371\024\324\000\277\301\302?\003\332\231\257\247\273\223?\200Q\304\313sM\261\277\235\311a\250\344\311\252\277a!\274\303\260\306x?\272\331\3021!?\223\2770\263\203B\021\204\243?\275\346S\277fp\262\277\276\016\025\374\234d\312\277P\362\352h\353\345\314?\276\016b\374\257J\264\277\326\271\002&\000B\273?\327\307D3\035\022\315?\367m\177\244\241,\256?\262R\213\024\340s\242\277\345\230=WH\211\261\277T\360\332$\221\024\315?\304+\373\212Um\243?e\223\030\031\367\322\303?\333\231o\241\032m\271?q\312\224\274B\000\246?\006\271P[\342X\321\277\010\232\330\0027\323\205?+a\256\362\222V\246\277[\336\022\252\013yk\277#c\334\260\376>\224\277J\24482<F\313?\232\261q\022\033\225\206\277\235\341\376\332\017N9\277\270\200\243\203\021\t\231?\352\364\364\345\313\'\332\277.\260N!\367\273}\277\022\016H\347\244\243\267?)\021/\371A\270\301\277?\r\003\312\305\312\262\277Sb\035\323\260\323\253?\237\376\323\023\302\276\267\277v\316\223h\013V\317?B\207c\0011/\202\277\224\231[\247P*\241?\221\206\241\264/\337\263?J\374\0011\334\253\261\277Mu\005f\337\325\245\277\216\2671\202\231\214\221?Gi\371\306\362x\313\277S\252\000\'\261\356\263\277\324,\346\231\310\206\252?p\341\345\264\277\245\240\277\340\302\257\326Zo\217\277\275\322\"\224\201\273\267?\231\302\347p\225\225\253\277\330\241o$LB\301\277\304,c\013\233k^?\250\320]J\035d\265?\306@\"s\321\354\234?\n~\023\343\374\333\300?.Gt_zu\223?\326\316\037\331\177d\216\277\333\225\021\376\336l\212?E\307\311\276\373n\256\277\021\337\177\207\274\250Q?\267\362D\300\003\325\260\277\240\270j\005\253\362\240?R\275\266\202\025\234\316?\274\215g\032\375\225\303\277q\025Ry\231\001\322\277\004\245 ]\376\343\247\277\213\006\265\014B[\270\277n!\257e5o\261\277\300J%\016``\271\277\rk\224\345y\356_?_P\223\242\226\310\323?\017\274\023\027\327\233\303\277\030Z\325ux:\227?n\373\035.g\370\225\277\315\243\221=h\306\273\277~\276\347+xh{\277\005e\266yy\312\266?f\253\001L\333b\205\277\313Y\302\000K\243\315?\177N\026\301\374\245\220?[\266\333L1\242\303\277(\031\251\251\355,\302\2779\255\025\007\222\223\310\277f&a\334\353\014W?*@\021+\351\257\216?\373\360{\272\204\201\321\277W\225\\1\272H\267\277A\313,e\337:\224\277\347\257\007A\303\225\275?zs\251\261\013ls?\037\311cS\021\271j?s\313\r$\303\n\277?\\\231\315=\327\336\266\277\214\260\337\n\300\271\225?\016*\352\305\230K\303\277\232\214\340\336jw\275?\235\270\332\325^=\203?\002O\371\376\330\031\264?{\374\275\033?\255\233\277\332%\221\337w\305\321?h\375\203\265\326\331\270\277%\2132\375\250\315\300\277\263\224\346#\240\000\321\277\'\377\245=\215]\246?}\230\2269\366O\275?\223\264&\367O\311\276?H\377\327/\376\275\242\277\'\th\364I{^?j\024\352B\272\303\301?\256\t2\325\306\276\251\277\302\n\311\0350M\203?f\363\332\354\331\240\240?\345\017\347{\2067\222\277V\325\313\347\177\302\270?\375\353\316c\366\001\242?#\223\007\202\234J\266\277\233.\351/\276\375\306\277-\232Hp\261Jp\277\r\333\000\201\317^\262?1\244\345phh\271?\364\271\274\252\254v\271?\002\371\356\030\321\332\244\277\204\n!Z\346\226\257\277\274\331\273\240\246\017\275\277\375\351\303\030K<\302\277\223\267!\263Q\364s\277\363 \254:\201w\256?\314\354\366\3047\235\300\277E\334\006\350PF\223\277\271\263\204\252\002jw\277\207\301\3557J)\231\277HT\312\270\036\033z?\204\332\037\256\376\374\265\277vY*a]\356\266?\244KV\231t\347\316?9`\324\306\227\"\302\277\266\330\003\240b\347o\277\227/\237\376m\006\262?JX\250\334F\261\252?\225g)\203b\361b?\343\001Y\335\030\333\300\277\316k\3505\223\t\233?\010\034\t\301\261\256\227?*Xy\001\342\341\240\277\316\212\342M5y\321\277\241\007N\212\374\025\211\277\233#\235\371\371\322\255\277\265%i\347\232\233\275?\370*^\224D\360\234?\017\361JL\326u\223?8B#\326\341\300\217?\000,\262\325\363\333\235?4\326#R2\316\301?\224Y\343X\236\036\240?\211I\275$\306I\263?\343d,OM\371\301?$$\021\271\311;F\277ti-\351P\263b?\326\3754\344\021\021\203?e\237\020\363\206\032\250\277\2144Cq4\363\262\277\206\254N\320@\005\270\277B/\372\034=\250\300?\324\247\017\216\345\302\242\277\372\037h\265e\267\253?\301\272j\304\323\020\235?M\333\350\\\217\256a?\364\365d\337n\355\262?\307\357\251\366\236y\221?tN\267uG{\265?\323\373QO\363?\271\277SF\351\220\034T\221?\375>S\365%\334\265?.\270.\374\247^\271?Q\014\326\274\260\215\201\277\351\215s\345x\323\321\277\373\245%\311\n\310\241?NY\265\360!r\267\277\004be\347\2612\264\277\225\376\273\206 d\304?\253\243\362\254\253\346\234\277ZH\270\206.D\261?\220k\330X\336\003\266\277\227\025\361\010e\203\302?\231\302\304\314\354\253\236?k\226\235\021\267\341E?mE\320X\035|\222\277u\\\360\t\031\207\263\277\'\2578\032D\"\274\277\303\277f]\217\374\264?u\003\207x\302\264\257?w\313\2476\025\364\252\277\336\353aKC\323\265?\356\210\014\261P\014\264\277\026\330Q>\253\332\327?P\236A`#\223g\277\317\023\343\250w0r?hK\317N\303M\273?\254\317Pc\\D\237?T\364\251g7y\243?\221\241\210\336\260z\254?\035\221K\004\264\335\243\277\303\366\364\334{\261\304\277^\343\251U\322\317D?s\027\004\205\225\225\307\277%J\207\253\242\352\247?\237f\013\031\227L\245?\234D\034\225D\237\263\277\025\343\242\262\275\236\304?\0060\\\243\335\342\225?\252\364\261\317]\017\235\277\002K\\)\300\216\240\277*\202\206{|\232\267?_\014q\365I\352\250\277`\300\034\262$\362\320\277\251\200J\204\210\014\267\277-\244\211\263\010\337\264\277T&O%\213F\300?\301\200\266\"!\302\316?s\266`\220(\030S?\213l\340H\016c\233?\004e\032k\026z\311?6\272\302\326\217!\271?\317i_T3@\231\277Oz-\270P3\220\277)\301\236c\030~\263\277\3575\306\304\302\337\221\277\3039s\020\034\213\240?\3570\024\332\370L\300\277v\023\036\247};\224\277\243_\006\332\345\263\302?\023\017uq\217\351u?M\205\216F\312\255\312\277b\332\217\255#5\245\277\366\372\307 \276\021\222?,\317\313#\022X\275?\254\232\266\017\221t\274\277\310\236\330a\300\013\255\277\035\\\351\353l\212\264?\355\231\322\224sr\226?j;\257\220\330d\225\277_.i\355f`\304\277\332@\342\020\312\331\321?l#\366\020\307K\260\277\221\204\035d\352\355\257\2775\216\270\307\222\345\262\277\354\322+\337tx\264\277\017\"\325\267.LT\277I\347rT\'b\272?\3754\007\244\326\306\243?\0045\337\213\272\311\243?\365\007\262\\&X\221\277\344\335\363\270[_\263?71\371B\214]\306\277\022\216\252\2013E\264\2777aD6.\230\263?\302\035\340\371\222\264\233\277r4\362\330\232g\213\2771\275o\231\315c\242?\301\032\266\033\335\325\265?r\3166$Y\034\303?\230\021\347\310\237t\265\277\247\335,A\275\316\300\277\007!E\022\253\244\212\277\013\340\001\256\340\231\302\277_\374\370_:{\220?\377\001\217\214yA\264\277\326\'|\304\367\332\270?\025\305.\017\227Q\205\277\323/F\374\271+>\277\351#L`\2628\305\277\231\024\276\272\307\003\241?[U\330\235\317\337\242\277\260\\\324\204\007\222\275\277\271~f\334\377\327\322?\356\321\341\222\273\231\262\2774\023K\315\317\302\264\277e\214Va\035y\270\277\235\350\014\204\021\023\300?W\206\353\225\"\361\256\277\243D+\307E\317\260?\362\370\233i\271\341\271\277\271n\204\336\036\263\240\277\230\364\342\274\335\242\265\277\336\355(\224\376\230\300\277\263\'\267N}\024\242\277\320\310\317[\324x\300?\257\035c\202\231\200\307?\255xX8\227\224\306\277\334\304A\215\200M\264?H?V\241\324\0135\277\004\237\375j\335\316\255?\037t\344\035\2345\275?\310\0047\355\210\r\263?2\220\360\312\222\001\273\277\240\347\301\330\343\266\307\277\035m\025\371\366\357p?\316\351y:X\324\256?[PLn\343P\213?\020\370O\350\314\267\230?\265\2513\023\220L\254\277\366go\245\031(\305\277\255\t\360\330\241\\\320?x\266\210\257\013M\231\277\006\200B\302\207$\267?M\032\247\237M\322y?E>\306\215\"/\275?[\365e}\3525_\277$\271\2310!\216[\277\306C\267\004\247\362\246?!U\200\323{\356\253?\006f.\275k5\255?\037\224~E\267{\245?n7\007\202\266\201\272\277\374\254\237vx\271\270?\233L\200s\375a\274?\031\226|D\302\235\320\277_7\353\033\276\341\204?MN\266\230[\267\302?\203\t\251e\213\342\254?\031\330>\205\362\177\264?.S\220~\324\023\312\277$\326\353B>\335\233\277\241\202d2\326\314\301?\314T\370\037\002\013\260\277&a\342\270\312\n\253?\270J\270\317Qx\275\277? e\210+\030\200?\364b1\373y\365\250\2772b\021\021\256\364\244?\334t\177\21702\261?\312\272\361}\ry\243?\371\325NG\330\357\237\277B\214\370\322\3109\245\277\201\246m9\200\305\263\277\021\3541\235w\367\271\277\200\017c;y\237l?\216\320\232p\370\010\322?<f\336\377)D\253?\242\373r\327!\233\245?\356\215D0\301!\325\2779\025\010#\336\024\252?8\027\021\221LO\261\277\225\340F2_\346\301?\315\250\213I-\342\303\277\342\233\342\257B\374\233?tpl\200\0372\202\277\272s\334\367\027\212\311\277\320\364{\030Y\357\303?N2\352aP*\261?\332\264\371W\216\010\225?\360o\261\275\251\366\220?\273?Z\032\005\301\245\277\017qV\034\2606\231\277\247\346\'\030\256L\234?\343\322\376K\277\217\236?\177\362\233A+\373\250\277\366\333^q\336\330\235?\355\030\303\013\354$\325?\215\301Q\221\321\361\256?\244\254\323(\372k\301\277\370\273\rw\r\345\205?R?\325\274X\306\300\2771\253\023\203;\255\261\277\257\032\251\335\207F\272\277l\251\320o^@\267?V\221pc\212|\255?\366\352F\264JU\267\277_Y\035>\213\010\274?\332\227\201\252\246\343o?\377eN\217!\320\240\277\356\344\370\326\226W\205?\215J\237\361\237\244\303\2776\203\245\024J\312\204?\353q\371\214\273V\265\277I\0228\356qRe?N\330u%S\t\266?\362\335\213\014$\362\242\277a\267l\277J\376\266?\036\206\344\225\306Y\244?j}\227\220o\363\232?d\363\214\2109h\261\277\366\346\221\356\241\371\321\277d\342\330D\357Q\252?\273V\304\035A\204\252?O\255\344\303+\032\267\277\322\316\350\334\226V\307\277\001\254\026\'\024\367\232?kH\263\243\305\202\261\277\331r\367%Cn\257\277\377R-\325\0059\301?X\021\037\242\022.\253\277\240\235\351\271\304\357\213?+\020\345\354mK\300\277\337\024\266\000\312\n\277\277\246\214\032\356\003\202`\277\360\371\030\234>Yr?3\342\336|O\325\214?\272&Qg\332\302\264?\233\177S}\254\200\244?\364\350\014\375\035\235\222?\036\002\307\3662\374\263??\207\013<kW\243\2775+\256\202\032\034\267\277\200 \205%s\371\261\277\244\366\266\005\235O\243?xg\203R\372\343w\277|NI\026\020\345\303\277\271Z>2_\240\245\277J\304%\234\353\301\242?\275\355\265\035\324\027\310\277\305\301\330C\332\351\247\277\276\245\244<\265\210\300?\035i\230\264z5\203?\301\322\300j\226\262\257?\336wN\211\212\327\207?\331\232\242\306\030;\220?\r\264,\270\036\243\223\277\030\313\255\277\245\374\220\277=\201z8%\373\245\277\014\270b\210\020`\301?\237\265$\302\267\263\274\277?\331\233\274B\005\266\277\037\003\027\262\010\324|\277\223\352.\327\014\006\316?Z\"#Xq\241\265\277\304\006\205b\224\345\225?\261\215\212}\353\330\253?! \301\016H\027\303\277\035aA\214}K\274\277p>\242\002\335n\302\277\035\356\257\346@)\261\277\365\204\020\260\204\\\273\277\210W;\332\233\270\247?\347f\211\342t+\307?\tD5T+D\300\277\264o\213\023\303Q\265\277\237\330|\025<\"\206?\343\221\347\346\037r\301\277\317\366\035\270l\265\206?jm\267\265o\217\251\2770\243\263k\006{\260\277\027\020\374\251\324~\321?\241\355\'\356Lx\220\277CG\020\360\321s\275\277\016\246\316\007\314\244\277\277\212\264\014y0c\311\277\016\247\201\'\363\273\274?\230D~^\006S\237\277m\205\207JPgu?\321\255\255\200Y\031\272\277\353\373\026\000f\026\277\277-\255/\317\211%\321?\343\300\351\003\331X\242\277\237%\272\312[\352\266?M\226/\304\354\3054?\t\325\211i\366\037\262\277\360\024o\362\260y\243\277\021\333\0104\372N\207?\367\251\335\025]q\265\277\361l\362\324<4\226?\20448\222\330\260\237\277\020\"H[F\210\263?e3\203\263\357\026\273\277\217\301\261owO\254\277W#\244\251\232s\242\277\177\312}\024J]\307\277M\250\201\230 \014\200?oC\032\002\257 \276?Z\344Rb]\350\242\277\272K\017\374Y\367x?ii\224\326\263[\251\277\030\362\237\364\254\t\327\277\2005?T\355\250\262?\221\354\250\2564p\220\277G\001\220U]\366\250\277J\014-CR\351\236\277\313\314:jJ\010\300\277\"\243\032\321\206.\250\277\373\220\301\034\271\376\302?\023\365#I\340\213\307\277~\231%\312\356~\211\277\267\214I\224d\014\276?\326\031\274[\226\330\266\277\350n\245P\255\004\224?\357\2434\227\263Q\227\277\347l\235q^\031\254?\tr8>\260\222\274?\326\320z\203\010(\254?\347\034\304\374\277\016\243?\374-\370k\217`\276?nW}T\2775\307\277H\312r\343\276/\307\277\361\336\356M\253n\243?\211\177\252\350\nkg?s\377\266yhw\251?\345p\307\207\240\251s?\303\200\303tR\235\266?\257\366\322\364/\200\300\277\353\323:am\201\220?G3\222\220\275\236\242\277wkR\323\262\302\234\277\221TG\350\335;\250?\254\236\363P\301\036\245\277\303\341\370d\322\225\305\277\354\374\364\301b\036\306?\375h:\370\031\035\256\277\342\310O_\374\352\262\277\376\026!v\341\014\307?=\027\207<.\261\204?\031y\303\241\345\204\302?m\306\233\361N\023\230\277\"\320b\245[\017\307\277j\271\016t\335\302\247?\320i\214\370\310\270\300?\336Y6\007\302\226\253?>\240$a\340\231\224\277<\313\207b{P\262\277}\356\264\333\221\374\253\277\307\033:\223\363\250\316\277/\377\335%\237o\236\277\027V\360?\324\247\271\277m\257\3548w\036\235?\353\020\000\210\272\007b?\375\374A\214(\230\261\277\201\307&\376W\350\320?@_\321a\374,\323?#2$%?4\227\277&J\331\302\020I\272\277\344\010\312\370\326*\320?\203\327\230\366B\344\242\277,\331\335\313){\251?\332\300vS\221*\227\277~\263\367\3672J\271\277\231\311\265\211\300\004\265\2772\335]\324\213t\235\277\255\272\255oc|\237?\231r\2729\003/\245?\355\210\365 !0\301?\010a\372\\bN\250\277\000\265[\356\272\312\257\277r\253\225\t\336\312\270?\352>\231\\\335M\252\277\010\302\010v8\027\311?\312N|u\025i\240\277\261|U-j\371\226\277Ul\355\245 \371\271\277jl\372%m\362\277?\246\323\202Ct\220\257\277\377A\215L,\246\310\277B\314L(\317\346\304\277\202#\026\0246\361\257\277IZ<NG\316\272?S\"\312Y?\254\272?t:?\245\'\376\266?Q\036@\265\335\374\265?tXJ\331z\034\257\277/#\340\257\267JT?\345\263ulP.\243\277\"\271\3178S\346\266?VJ\n\211\340\333\300\277\370\'S\306\317Q\254?;$\267\270=F\241?\363l\317z\375#\245\277pn\362\367BV\274\277v\357_H\021\037\216?\270\020J\024N\035\217?\323\003\020\332\204\272\263?\373\320v\252l[\305\2772A\277\301C\344\252\277:\206\273Ta\036\257?\267\036RT\003\022\253\277\014!\207\203=\305\206?I\267\336L\241-\221?\322\363pN=\320\226\277\230<\017%\225\274\261\277\341+\024{P$\270?\316\221kR\266\266`?&`\335\t\337\266\267?4\267\001fD\317\222\277r\366\266D\236J\302\277\t\352dO\224\023\262?\217\226W\203\327\273\304\277v9\200\243=za\277\"\376\364[\t\203\226\277\256PQ\007\004\262\314?\365\205\231\327\313\014\307?$\017\210\332.\311\270?]\303\247\'+<\275?\335\324G\224m\n\275?)\251H\300\026\002\242?\004?C\213\277p\217\277\373\027$\376DY\266\277\314\001\244X&\361\256\2775\260[\334\232\313\242?\260\2527\263\035\261\256\277e\3576\231\302g\216\2777\023\014\350{J\236?ti\334\002\2238\242?4\034\301\215\177\207\243\277\020\n\363m/\207\265?P\325E\364\354d\237\277\245\315\356=[B\237\277L\321\301]&\343\266?\276\372\"\004\267\217\267?\262\335\"\006I\201\276\277\250\250\207\315\3565\226?\034\311T8S2\237?T\266c\375\202[\261?T`\017\215\275T\276\277)\205:\337\204\363\213\277\352\207\317\350\025;\207?-l\327\272\372%\311?\335\341\010/\336\005\216\277j\307\253\373\342\223\207\277\247\251R\345\020\263\211\277\245\364\360\313\214\264\233?!Z\331]\216\242\310\277\304\026\353B\216\354\225\277\326\013\323\274^D\257?\232\204\266\314\230\312\247\277<\320\265}x>\263?\340J\223\375\215}\316?\023\220\343\361\337\375\302\277\216\001\315\'\322\034\220?\210\345\"\223\330\202\263\277\376\244\366z\202\321\266\277\352\322\000YT\230\214\277\316<\267\246?Z\262\277\312\017f\024\330q\276\277\236sVHU\377\264?\200!\321\361\016\004\221?\303e,\364a\016\242\277\177\363o\243\024\253\253\277\206e\267\031\357\023\276\277\252 ^\273\004\231\203?\016~`\335`\021G\277\264\302\265F5z\272?e\031\230\343M\233\200\277\022\2457\205\226\014\211\277\222\311\026\307)\334\271\277X\362\330\001\205s\302\277U\373\3237\270\364\255\277\323\245\010R\354\346\241\277\306\277V\310\240h\243?\260\335&\235?\363\252?\242\367)\336D\327\240?\333\022}\224\205\033\260\277\272\236\342\245\235\302\256?]\345\\\362\341I\265?\210\345\t\371\367\000\234\277\026B\221\374\216.\241\277nB+\311\255`\267\277\035\023\014])O\232?\310~\327\002:\304\211\277\355\341\314s\232\007\245?\"\221\302\314\375\246\302\277\276\313\253\340\215\005\203\277\321\334o\270%\264\304?\272P\"f\354\313\303?`\nc\243@&\276\277\'U8#\014\220{\277d\361\321j\363}\270\277\035i\210h\201=\251\277l\004D\275{!\260?,\244\331\305\036v\266\277\344WSKF\334\311?\345\001\236\365\177r\275\277\223m\303\213\016\343\233\277\306\276v\271\023\010\313\2772\354%\315\201\343\225\277\246.\240\352\217\323\245\277\200\222\326\246$K\303\277\227\337\223:\252k\332?\266\002P\273\232\016\220\277G\324\256\304E\303\272\277\242\004\351\235,:\227?\317J\277\335M\306\270?_r\272!\033\334\304\277\222\231A>\023\025\310?\304\344\024\002\211\326\273\277\235\266\252\245w\271\241\277\202\025Xu\321\214\213?!.$\243T\257\313\277\035\223\361\325L\275\262?^\331W\277\030C\242?\035\236\263;\230\252\306\277\267\205G2\036\330\314?\031\343\352\240m\320\215?\225 \242`f0\277\2778*\220\335<o\320?*b\033\026\227\223\272?\004^-Z\\>\321\277\2404\327\242\321\321\257?\000\331\0149\243\261\321?\257\007#\241/g\234\277\36634\276\320Sr\277\233\241\273\334s\357\267?\316M;<\302\203\272\277I;\332K\346\010\237?\245\372\377e\265\314\266?7AT\335\n;\222\277\177T/\275)(\220?\301\257\317_c\342\247?\3603\006\307Z\215\204\277\333\345\177\225.\\\242\277\002\324\177,\"\024\257\277\004.~RV\303\276?\006G,\315\306\002\225?\177\334Mr\276g\240?\316\365Q\335\262\024\234\277\314\270\217\027 \364\256?w\357La\265v\257\277\300\223\376\236{\256\252?#\313\022\204\350\362\237\277\361}4\037]V\237?\362E\320\235H\217v?X\304\302\2535\305\265\277yt\014\337\355\036\232?\016\372wE\365\304\242?\177l\0255\007S\247\277\023?\333\037\220\234\263?|\002\242\243{^\315\277\345\334\337\246y\223\244\277\t\335(\025u\324\274?Vs-\377/\301\310?Dv\325!C\306\273?j5EP\014c\273?HB]\244\\rC?\267\245\211\256\332\241\313\277\372\276d\247\275s\243?\273\211\"[&\373\230?C tt)\334\254?t\020Y\330tw\243\277(\263\236\356\2546\242\277\334E\366\307\nS\240\277IPW\036\375W\330?\315\362\312\251H\336\227?Kj\201\371@M\266\277?\0070B-T\305?\000\232\236\356\273\355\315\277\002JvY\300\321\274\277a^L\361\261\307\272?+\240?~\205\370\267?\302D\317\210Z%\262?\224\320\372N\2475\300\277D\3611\323\273\301\253\277\267V\014\025hK\262\277eu\347\206nC\301?d\\\236K\333\344\303?\347\345R\326\251c\240\277\214\237\023\035>\232\220\277Y\331\224\032\224\330\227\277\203\311\305\036Q\177\230\277\326l\036\206\304!\315\277\333\211\301.\351M\262\277@2E\206\n\024\265?\261\375\300,M\224\273\277\345\353\2510\324/\207\277\200\020\274|fx\255?\231\262\035\274@(\302?\002u\201\360wQ\317\277\017\313\2541\345\225\224?{\242M\254\346\275\235?\2362\240\336\254c\254\2776&\033\240\243{\243\277\362k\017\300\3347\310\277\200P\253\214\006X\261\277\010\305\352A\211\261\311\2770T\243\350\270\207\220?\021R\320\302#y\211?\322\254\335@\312\323\302\277\315@o*\367\373\276?\232\375\\\265L@\266?\0066\314\235\273\363a\277\016\002\rN\"\306\265\277\271G}\231\270\344\253\277\347\354\005\\\307*\245?\024\332\331\235l\246\310?\240k\204\252\327A\241\277_q\303\007\307\214\246?\314\275\226\025\342E\242?\021\331\327\205\304:\223?\022Sv\001b\227\274\277\215I\200\267\267\253\222?\250\272\344\231\333\256\204?cDp4\331\027\240?IM\272\n8\343z\277E\252w\336\022H\245?\222\331\210\302k\023\263?\361\220\255K*\200\266\277p*\3310\347\257\254\277q\001\203\177y\353s?6\323\022XF\255\222?`\211\361\365\344\215\232\277\247\222\301%6\213\272?\2246x\004\210*\232?\004:_\237\376\263q\277`\343ae\242\024\273\277\355\313o\002M\000\213\277\214\254/Y./\254\2777\250\346\266\314\014\224?\234)S^\365\367\311\277\274\325I\212\271sF\277\361\317\2022!\201\305?1\3753\002\\\276\252\277\314\204@\224*a\201\277\254L\030\373Nu\244?\236s[z\234t\263\277\224\212\274J\321\241w?\226\245|\316\300\025\304\277\234\213\325\177e\036\217?\362\236~\014\362\301\314\277\301\300\361\335\304\227\221?\365:\033v\250\207\276?\r\351Q]>\245\250\277\007\037\242\253\326-\320?\355\350\376\372\350\364\252?q\306\373V\377\335\255\277<ny\233]\325\270?_\356df\243\261\264\277\'\265xT\342\242\247\277(\250\372\372\334\335\237\277+\213\247\204\233\255\276\277\263 \002z\304\274\274\2777k0\351\233\307\213\277\001Y\360\317*i\244?k92CV\264\257\277\302\201\014\224\265\004\274\277,\350<\362\252+\244?\036\024I\252\251\017\253?$\350\007\250\032\023\220?5|\244\213\206\007}?$\217\347\235\245\037\307?a\212\212\"\311z\322\277h\343\272R\303\312s?\3474bL\002\320\264\277\026\016\266\335\202\340\231?x\236|\215\022/\321?\365Y\322\356Q\266\264?L\nH\224\351\352\262?\307\227bD\350G\260\277\227r\300\241\263>\225?\241\230\254\2475\365\221?1!\014\323\275\n\301\277\2067\233\325\246\314\251?\263\225\357\360`Z\305?\004\356\n\350\003L\273\277{\215\033\301\372?\261\277%\200\323\360\355:\264\277;\246EU\355W\262\277\240Z\267d\026%\322\277\353\275E\371\362\232\262\277\377\264\351,\\^\262?\0359\214\325*\224\240\277H\343zJ\225\265n\277\307\034\263\3367\224\245\277\231\310eH\245\201z?\3349\371\325\271\367\264\277\314B\020\010\2000\242?o\246\344\014\000\204\243?\254\2604\227\024\005\223\277\200\213[f\037\260\262\277\371\t}\035\216v\206\277\'\343\276L\304\037\235\277\177\243\233\272~\272\261\277\250>\372\025\273\207\271\277}.\214\361\021\"\255\277\265\322\213F\337&\264?=\307\033\014\271\351\275?\372\343\306\026i>\212?\007\352\320\302\325\232\234\277f\274I[#.\301\277\022\022*UL$\276\277\341\247\257k\256\203\253?\277\007\367\333\311\216\224\277\236\"\002f\313\251\302?\330\236\335\247\"(\303?\037L\222\177\235\233\236?\373\235\221\205\371R\256\277)7\263\335\255\227\261\277\323&\201\365\246\001\260\277$\003=\206R\310\242?\006\232P=\303\277\307?o\302\313\356]\037\305?\311X\374\376\026\205\301\277o\006e\25045\242\277(+X|L\361\244?\3439\024\3653\303\302\277\231)j\031\243\241\264\277\272\330~\277\272\204\303\277\034\250\323\340K\364\244?\367\001`\"\237\006\266?@\034J\232\277\360\267\277J7C\013 \350\247\277v\247\321\244\323\034\240?~\221\002\275\221\227\245?\217.&$/\342\302\277\376w\230F_\014\272?F\340\302\251\207\010\265\277i{`\3677\211\270?I\260JD\320\302\260?\211\361\203\0372\007\314\277\305\\L\246\216`\306?\267\207\203sB\331\313?\027:\\\242\227\326g?C`9\021\311\354\245?6\t\350G\177\026\203\277\"^\016\353\276\271\252?G\3605\264V^\253?u\265iJ \235\271\277\030}j\355\3658\307?6\255x\263Q0\201?\205\000G?D\253\264?F\222\216\247\305F\261\277\261Ua\274\331\243\212?-\336\203\013K\203\225?{\032\035\0136\'\266?\313\334\221L\372^\304?\344z\216\365 Vr\277\305x{\302\033r\230\277I\324\337[\255_\303\277u\316\211*\016^\262?x\230\333y\350o\273\277\345\'m\0240\307\263?y\240\245\223\366\205\177?_\351\035`\025?x?v\315#\226\2335\261?\026upS\212\212\223\277tn\'\177\036\016\275\277\222\2340c\016\350\277?\357\037\361\277]\370\251\277\310\371+\253I\321\322\277\007$\222\354?\360\250\277\256a\373\223\263:\240\277U\217\326\206K\253\226?\2141)\223\nhy?\"\211t\362\253\237\377\276\333CT\245\325\223\237?U3\n\323\366\322\323\277\017\276\276\273y\204\234?\210\244\\\245\213\362\255?\251?\336M[E\270?.1n\243{\030\253\277\270\261Lxq>\241\277\276\263\005\320\372\'\267\277Q\007\246\353\212\367\231?\357\312\3764\376\332\261?\270\374\362u}\255\242?\371\370}\350\233\215\307\277\334@`\226J@\270?\237\201\004We\301\240\277n\370\037\374\366/\312\277\363\313\316_ =\260?+\202\371\342\342R\205\277L\362\347\312\226\311\231?\201\203#$(^\300\277qa\224\364\357\270\257?\033\226\360\274ke\255\277\357\316\207d\363\301\201?\201\2354<\344\234\261\2771\024?\310\223S\311?e\320T\262\022\276\266?\375i\003\334\005\305\201\277|:\261q\361\356\300?\334\277\313\247\340\313\223?\245[@\214Q\030\252\277\360\376\342\300\204&\267?\321>\272\003}\203\270\277\007\353\246,m\267\221\277p^REJ)\303?\320\250O2\2768\234?2\204\013\250\255H\255?^\337=\360\037\246\270?\233\311\370\340\3313\327\277\301\274;\036\321\243\270?K\301R;\330\336p?6\353<\230\252\370\206?S\322]\373\321\235\231?\211\312G\n\300\247\250\277\214\032\035\361\000\236\301\277\021!\367\215\377\217\300?\206\357\244\014\214\201\273\277\331\204\270R\315\302\214?\206\244\013\216\010S\242?aAj\375\337\347\224?\362\266\034~7\270\310?\261uTv\022\r\214?\324\250 \261\010m\265\277W\200\243\245;\345\216?\330P\231\226\0212\270\277\267\021\330D\207\223\312\277\"\235p\035j\003\310\277\370X9_\373\221\271\277\006\2351[<+\247?\344VU\t?\364\265\277+1e\036o\262\232?\317\013\327\001\225;\250\277\023%N\355\337Y\264?\013\372\200q\305\235\275\277\206\347\267\201\217\315\300?;\345\366_\236\002\263\277\357\020[\r\270\222\253\277\357\376\223\302\231[~?O\314\254q\252F\302\277\032|\307\250\326\362\302?\263\367\221\211\007 \251?\377\014T}\362\337\247?\373\266\024\360`\303\263\277I\227?e;\276\250\277,3\006w\r\303\250\277\325/)\262A\017\255\277J\215\353\366T%\273?\272\303\235\260\342O\235\277\371\325]\205_\365\207\277v\324\221\215\004i\223\277\2465aA\374\362\240?t\213\022_$\214\221?\373~\202\244J\003\223?\322\230\243\030%\034\306\277rB!I\367\367\273\277WjarU{\266?\220\314\316yb\222r\277L\225^+\241\021\222?\027\033\346\000(\226\227\277\361\336?\265\233\025\255?:R\233c\326\005\226\277\005 )\252\277\005~\277\266-\310\243:\017\224?\265k\210\323Sp\263?\016S\025\266\236\232\311?p\300\265O\027\244\254\277\254\272z\332q\311\251\277\206\363\026\303\365\312\266\277\032\002&,f\016\267\277:\253P\333M\'\240?K]\267p\375\245\311\277\237\236\337\227>F\250\277\201QK9\232\317\206\277\001\025\0200x\207\266\277\275~H\345\327)\250\277\241\306k]\031\322u\277\016\301\327\036\303{\233\277\230\306KAot\260\277\3328\333Bt[\266?Q\274\202\034\360\307\265?_#-\366)>\222\277\330\227,1\341\306\262?\014\"\367\t\014\334\207\277\243\307\355Up\246\236?\263)\377Sj\240\266?\032\370\236`@Dv\277\214\177\235\321\241\211~?1\303\325\344\021]^\277\003G\032\221\303A\305?\326\367A\026\024\326\243\2777GO\214\312\370\215?/2\255\2409\000\220\277\205YDBZ-\271\277\253\3636\270\271P\260\277xe>\nP\320l\277\313\240A\315\240\341\260?(\342\020\254OE\305\277\253\336\327\021\350<\273\277\r\257\375\366\371_\231\2772\223\376\010\017nt?\237\342\352+>\014\273?\024\236u\376\255\017\225?\307R;\005@\214\301\277\367*\230;\n\342u\277\200\343\243Z\364\242\224?\372\376\234\236/C\243?\003~H(ap\265\277\313g\270U\020\303\205?e2\207\347Wh\252?\315\361\2675\202\330\300?\372\315\220+\0234s?\226p;\306\262\t\262?|*\250\263\365\254\274?\377\220\274\327g\263\274\277\'\237\334w\365{\264\277\213\317\357v\314\213\260\277\216\340i\317\0135\214?\255\330R\245\230\346\244?\240\02262b\007\201\2779#C\370b\353\271?\2724\213\366\242H\245?\270/\373\203\032\032\233\277~Xg\'\306_\270\277\\6\244\204\373b\205?\253)\3539\356u\256\277r8\232\305\361\257\242\277G\272\021\0168\263\224\277x|\010\244\340k\210\277\234\274\325\212r\002\253\277\353\007\254\247\030uj?(gC\247\332\203\315\277\007\272n\0364i\227?:k\2236\201\334\273\277\267\363\026+0^\313?\003\350\375\363\3539n\277X\020\200\320\037u\272?\270`\344\303U8\262\277#\374y\243\333\340\223?7>\301\014\023\027\306?\025\265}9}\347\267?\227\337{\314\372\002\302\277\277~\313U\252&\256?\250U>\332\336\010\243?\331\376\376Ck\237\211?\335\037\374\027\333\352\243\277?\030(\335\313;}\277\023\256\003q\312\364\270\277\016\351\326L\234b\254?\361lOP\307\213\303\277\201\244{ \037\207\262?\221Lp\255h\372\265?\274\242\235N_\276\257\277\303~-\"`j\222?S\275\263Y\215\311\300?\377[)o\352\002\251?4\207\351\313\3251\213?\n\311\215\232ip\273?\372y2\375\310\354&\277^CZ\304\352\351\307?\024\322N\022\343\334\265\277\024\337\002\347\364\346\261\277\n\315\222\033y.\264\277\274YZ4\371\302\250?R\177FX\271\270\250\277\317\336\324\304\2010\277?,U\373\211\177\204\264\277\r\335\340;\303\343\235\277Bg\003-)\032\276?iD\301u:-\302\277\315\207\355\3039*\303?^\016#\307\374\375\265?G\036\216\357jA\242\277<\347BV\021\331\251?\361:T\3759M\024\277\273=\266\252\356\302\312\277q\223TE\'\310\324?\231^\230\271J\364\240?r\354\007#\301\027\263?\031gS\025\276\206\317?\021I\226\201\001w\267\277\0278G\3716v\300?\361\313\310\337@\272\236\277\3504\271\2463?\273\277\026\023\242:\272\230\263?\201\326`hW]\222?\311|\t]\215\321\261\277\rwVeQ\375\306?Tb\247\322tq\250\277E=lz\262\253\267\277\351\033(\213\310+\267?vE\226+x\237\222?\r\336Y\320\321\261\235\277+\007\335v!\213\214\277\350\027\013\nm\271\277\277\210\327y\215\371\361\265?r\013*Po\335\202?\030>b\2325\360\235?\r\205y\t\3366\260?m\037V\201\374f\272?\0258\323\010\0019\310?K\365EF\352\220\277?0FJ\016\306\260\231\277\217_v\307}(\236\277QF\225\334\237\226\324\277\361\341is@\230\246?}HO\277\367,\230\277\030\352\327c\212\342\273\277\272!\266.\303\t\260?\322\264\252=\215\004\233?\n\033\223U\364\203\273\277\302\027\332\010\374\223\272\277\257F|\301k\213\270\277&\242dZ\363x\252\277q\023\355x\354o\272\277\363H\261\312#\035\270?E!,,\300\377w?\343&\222\262Ap\311?\235\'n\300\233#\252?\335\360x\375\313\224\306\277@\347\234P\222\237u\277\205\".\246-i\213\277\260\016\265\006\374\205\262?\200?z\037r\320~\277\t\035\026\265\253\356\246\277\216\224\371\272\235k\277?\350\365v\270\025J\311?\254\207\3522\364Lr\277z\030\320{\236\n\222\277Z\005)\022>\327\245\277\204\354\362\214\375r\215?\352\253\374\274z&\252\277\304\037l\245\006\223x?J\227\235\221\340\377H?\265\200\252m\033M\201?A\236\262\371\332\311\301\277\232QE\347\351\341\302?\"\253\003\265\364T\245\277I5S\350\237\264v?\002\n\345F\327\355l?\262\275\211\000\0200\217\277\273InZ\361\334\270?\220R\"\376\361/\263\277\347\200,g\307\322\316?c\001\000\327\265\252\241\277\360\374\361X!\037\206?\250S\352i\261\237\266\277\270\305\3261\376\211\265\277\300\237U\325H\266\267\277+\303\232\200\3129\311\277\001\363\354\272e\372\302?\003\177\202p\326\267\301?\277\256#\252}9\233?&\361;\026\251\334\243?/\177FgCk\220\277\327\210\001n%\340N\277\215\217\001\302\235O\255\2778$\032^\217<\262?2+\202\n\0216\221?4\200\271I<\\\252?8-S\221\241\022\233?\007\373\212]\211f\263\277\034\004\3500\307\202\231\277\326\\>js\315\257\277\205\363\363X\304\315\301\277\325\353\254\373\202\360\253\277\025\010\313l\300\232\270?\277\243\030\226:^\265?\0074\357\247\211\016\301\277 \273\364\252\242?\263\277\204~\\4= \242\277\224#\3103\341G\263?\3117~\221>K\241?\363\323d[D\253\267\277\275\330!\031\2721\200\277d\234\272\267\274\345\271?5:\003\227z\243X?)\241\327*\"\245\247?\246\272\236\023*\207\241\277N\004\325ZQ\016\255\277\234\325\363\3676\332\260\277O\177|\014\030m\257?<\201\261\030\227E\272\277S\360!\007C\374\244?\377\306{\327k\266\223\277\r\255\027\236\316\025\320?\376\230 \347\024_\276\277\207C4\351P#\225\277\001\360U\232\232 \277\277\337-\276\017\257\221\261\277\211\026\245g\361m\266?\255~&\310\356H\257?-\024\230Z\004\004\267\2779*o\010\224J\231?\0179\"zD\323\226\277\261$\212\300\356\004\231?\246\022\257f\010\336\250\277\202\001\300\037\363\262\260\277q\312\014\232\341\'\275?6sKT3\000\251\277d\320B\331\005\013\255\277\027%r.<\374\201?q\365\343C\262=m?]f\204\034\020\360\261\277s\222\335\037\251\376\264\277bz\237\265\222\010\227?\r\3144\026\224\305\300?-\244BDv\206G\277ia\251w\254y\237\277w?\374\n4}\300?\325\226\371p\023>\307\277<\262I4q\217\270\277\226\"\'\031\377X\260?_a\246\341n\357\202?\226\314\243\265\276Q\234\277\231\n\240\364\\\206\310?\n%\034j7\324\305\2774\020\276\020\306\'\313\277\302(\\\304A@\244?A\334\002\351\207j\251?\235\337\315\033\223v\204?\276%\021\355\355s\261\277U7A\026\265.\251\277\303\022R\207\325\271\256?z\036\001M)B\320\277H\266N\223T]\227?\253\324x6\312\200\266?\035;\343.\321\022\303?v\366^\206\356S\261?\326\001\210%z\354\313\277\251X|\330\262o\245?\254\355{\035\200\360\321?\336B!\362C\250\242\277lc\265wO\244\215?\036\243\357\204\037q\221?A\tr\025T\235\204?\345\314v\026\260\204\265\277\'\226J\344+M\301\2779\361\243!\351\350\317\2772\240\032\207l\371\237?f\225\373T+\220\246\277\324\371\n\036\2401\234\277I\201\237\220\207[z\277\300\222\354\252\212.\202\277\322=\300\361Kr\263\277\"dM\310@\307\312?\031Q\350\236\025pb\277\n\244\356U\260V\220?\315m\260\361h\257\311?\002\354\350\375\277\330\244?\352,z\367\000T\266\277\004,+\345\340\251\301?/\014_\010\325\306\304\277\236H,\023\232(\264\277\227L G\271\200\251\277\352\037}\021D\320\250\277\373;!U\351\304\270\277\241\246\367\336\203N\240?\3478#\022\036\342\252?@j4\341MN\255?\005\207\032\324\307\233\264?\336\342\235\271\242W\276\277\355\000\315\364D\231\221\277E\005c\367\2514\261?H\223\215\311\366\262\247?\213\261\246T\010\337\256?)\023>F\271\256\243?ON\025\220\004E\256?\245\307\365h]\362\241?\313}A\307\021 \313?U\017\277\216\274:\250?]\014\277\357\271\275p\277\221l\376\253\343A\257?\276\003\351\240.\020\275\277\020z\265\267px\226?\272O&w92\261?m\230\307@\321\220\251?=\310y\201,5\304?A\244\272\375\245\351\263\277J[\237\311o\366\242\277\260\023\377\212\325\203\235?\226\016\207\336D\363Q?y8\207v\212Y\263?\271\234\211)\020&v?\245;:\271\353t0\277\363N\314\251c\010\273\277f~\311(\254\214\273?`\355\217\263\271\023\262?\323\241\201\211vX\244?xC\240\246\225\301x?\320\315\263@4\036\242?\253\262\240\275\242N\257?\203\325\372>o\320\306?\274\323\277\332\273\017\302\277\262\206\321\326\310U\320?\257\\u\037\261`\246\277q\241\230\366\207\250\260?K\341\300\273\221R\244\277 \035\016\224\207G\220?O\032R+m\302\251?\rF\003\224\241\244\262\277>(X\255\n\005\315\277\2652\216\207\304:\240\277+[\211\200a\207\224?\211\277\337\214@V\301\277\332\357\032\333\205&\240?\360\3038RB\375\261?\002\007\260\321\376W\245?\203\022D\366\032O\332\277\320\246M\264\347\372\253?O)\273\374\246C\247?\320\013\263\372}f\323?\320}\204\321 \311\276\277v\262:*\246\335\264?\205U\304JX\327\302\277\333\251>\334\203\321\275?\227x\037X\027o\277\277M\237+\257\026O\243?\032\355\'\2414\244\242?\207\327\023\\\355\312\247?\001l8J\273;\265\277\014\300)\032\005W\271?\025\275=\340i\363\241?\273\200\315\321\202\274~?C\276)q\274\347\253?;\027\231\247L\261\301?\355>W\355\211\020\257?F\300\'\tw\033\302?\341\004\261\224\252\223\301\277U\003k.\031G\320\277\321F\211\224G\353\235\277\353\375\252\373\315\210\214?\206\321`DTi\226\277\023\335\261N\375\266\300\277%\335\271^\245\004\231\277\305Q\333\232\232\244\266\277`\004%\207~\177\267?%\001\325z\202o\241\277\317},\203\274\244\250\277\362\336s\313z7\276?!\027\274g\323\212\246\277\360\216kg/\313\212\277\361`/\342\305@\266\277Av\0132\232\305\263\277,\301*pu\213\277?\005~\355\234\032\272\232?Y\267J$&\215\300?\237Q\010\026Z\220\261\277\240\335\001\310x\271\253\277\r\370\315\016a\363\272\277HK,\365\275\331\267?\273\000\307\036\314\020j?\203\016\315\376L\265\261\277\331\200\373\305[X\266\277M\237E\313\256*\232\277\376\234\313\244\354\253w?V\024\363b\325\021\303\277\023\rE\321\025\\\300?<\200r\353\316\035\244\277\315\200|\335\267\265\202?\264-Z\n\210]\223\277B\"\3700\205\277\220?\253\352\263\241\231(\245?\344\230\272!\017\031\261?m\200\367\032\362R\240?Y\3663\235\026\253\305?\241\370J\032\234r\252?M\177\253;F\246\275\277\003\265,\323q\222\245?\362\357\356un\260\304\277N;\017\005\240\255\262\277\300_\365x<(\304?\223\203\341\3018\327\214\277\316\275 (97\256?\317\301\202\266\271\014\261\277\356\374\367q\246\374\255?N\376Od\020K\233\277\270B\207\272K\010\230?h\\ms4D\307?\024z\014\253\3526\263\277\240E\265\235p\240\202\277b(\227\377\3252\317?\2301Q\242\221\261\254?\231E7\260\352\006\261\27730M\266\2546\312\277!u\242\005b\252\265\277\305\016&\337\220\237\244?\ntI\31472\246?\323G\212\243\031\213\243?\213\002\367\305\204\\\277\277[\001\204k\256\302\203?+\345\277\357\235\326s?\370w\014\334\276\233\320?\204F\217)\315\007\236\277\020\267\177:\265\353\264\277A\212\203@@\000\231\277\300Au{\030\215\264?{b\340\007\315h\202?\366/\323]b\302\310?\342L\3007\272\363\324\277f\226\233d[}\226?z\225Zo./\301?\361\250\245:\010v\310\277\312\373\014q\302\360\273?\315\277\324F\006\r\230?\245\207\'\227\215^\261?\216\254\366qB\310\254\277\340jGu\353\275\255\2779\232^\212}\371\262\277\341\224%k\371*\277\277R\212\rX:\310\232?V\325\235E\341p\246\277\311\027\234\332\022\247\272?\232\'\351\364\373\334\311?}t\217@\360\032\220?\263\256\2058\213\000\263\277\303\242\006\2632\351\203\277\365\244Bi\367f\277?\325\246.\303\366\356\272?L.\272^x\356\202\277\312\212\330-\005\362\242?\232\357\354\240\014?\201?\364\001*_\025\303\264?\007\215VI\226\273\272\277\t\357\231%\251\331\220?\242\253c\226\222\336\304\277\375\010=\030J\031\211?\365\206c\n\343%\254\277\323\303Q!\254/\245\277BWtr\366\325\275?Fk\272\345\307\272\247?\3173\357\031\013\336\267?-l?&%\033\262?\0328#H\350\267\260?i\024G\265N\276\271?3Z\251\235\307o\304\277\323\271\263\357h]\241\277J\230\237@e]\262\277\017=\006\323\365\273\256?\010\257J\320\262\177\303?`\267\3252v\304\271\277\2355\350s\245r\306\277n\251\260\237\305\306\261\277\211L\341\250\352\351\257\277:\241\366;\0366\317?\0208\224\305\326C\276\277\2659\360\373*\377\244\277\276\360]\005\275\303\215?\314\262\025\017\376\243\272\277?\211\"^\201\231\304\277\002O\351\365]_\243?_\032A!\357R\313?5\ny\035\177E\275\277\326\262H\321\0357\300?v0\236\223\177t\301?\3743n.r\261\322?\0031\236\311u;\246\277z\245 Q2\277\311\277\3208c\331\335\235\275\277Gt^b\014c\277\277\327v\020\177\274q\300\277%\2758\371M+\315\277\202\257|\005\254\006\317?\343T\260=\002\333\234?\256\272\326\3674G\235\277\023\340\351\267\233\234\304?\357\377);\007B\251\277v\257\243\037o\240\260\2772Md[\232p\260?\245\336v\255\306\347\322\277S\246\035\"c\347z?$M)\263\215\357\300?$7\2542\210\032\317\277`\306s\273\027\335\276?ut\221\323@n\220\277\201\263\0029&h\302\277\242\200\032\277U\304\214\277\244pE\r\337T\266\277\214\374b>\331\240\265\277\203\336\234\033We\275\277\262\346-\274 \003\220\277\334Z\306\007|\317\261?ndL\337\224Y\262?=\377\346p\374\312\261?5?\246\322\304\214j\277fxE\267\375\207\306?\242\223\241|T\374\314\277X\221\253\311\364D\260?\374\203\274\022\312\242\241?i\362\263c\2356\246\277\327\320\242)#\373\307?\001o\364\017\226n\255\277\273\321\367a\034\037\245\277\t\273-Cb\244\255?\000)3\0136\322z\277\321\206c\351\332\204\262\277\021\227\356^\230\341\245?\027\322hBK]\241\277\025\332\273o\037\370\243\277\370n\025\243~\225\247?4t*h<\373\267?~\277\373\213b*\243?\326\007;\324 A\261?\266>[*\340\310\251?K\0174\371\213\315\310?\252\007\325\233@i\272\277M\255\253\346\264\225\265\277\243\357\260\252\266\013\303\277\206\206\376\344\346l\264?q7\233\352;\336\310\277\261A\205#\030\207\310?\230\267\325\261\025\t\252?H\214\333\265$\005\227?\324w\225\004\327A\254?|\375.7\326\366\307?x%\227\250\000X\256\277\266\327\214V\003\201\241?F\240n^\214\344\264?\266t\270\322\023\261\264\277\356/\207\326\311\205\264\277\317\205+\211U\367\262?2\376\240~C\370\311?\327\251\234\307a7\250?3\343\363\347b\217\241\277\246\364\326\317e\310\245?\301t\316\3060%\310\277\271\267j\241\251\352\225\277\370\273Z\312\205\357\254?\212\261cm\250\336\271?\205\3052\013\023h\243?\253\357\246\037@\326\240\277V\362)\317vn\207?y\025zD(\211\322\277\256\241y\343\005\376\202?U8\316\331\362\261\254\277\327\2777\241\314S\303\277|UQ\361\351\326\223\277\215\253\262\027H\024\324?U(\236\231\216\366\273?\004\230h\245X\360\326\277\016\242`\273\273\007\223\277kD\231.!\220x?\305+\034\352\272\371\263\277\"\202u\210Q\243\300?\022G\245\240-i\272?pu\271\304wf\244\277\206n\201[_T\242\277\335\014\367V\240\035\275\277\367\262\001\230-s\262?\305\025v8\021\215\301?\330\344\376\251\311s\217\277\251\370\356{y\261\270?\255C)\207\263S\233?\217\230]\334\303\347\244\277\027M\350\2764\265\233\277\223\\\034\002\2175\265?\243X\343C1\002\303\277j\243\362\017\030\007\227?\375\364\364\260\232\221\264?\3653\350\033p\360\251?M\226\244\023\317\357\301\277\374\200\367m\2610\231\277\270\230\272\226\262A\301?\267^@\317j\027\277\277\001;\204J\253\037\212?\300Af\017\006\314`?X\323p\273\327:\245?<\362\374\374\202F\316?\033@-Q\224\303\214\277\025\205k\025\t\277\255?R>g\322M\214\235?\240\372)S\030j\234\277\023\275\315U|\210\200\277\211&\0104r \253?\207\244\"u\252\272\263?4L\342\247\302\302\267\277\034z+\31647\260\277K\220\252\017bn\314\277\037\272\223f\345\314\241\277R\321\201\246\007M\266?`\310\0274`Y\307??\315Nj\211\365\274\277oT\257\222\001\357\234?\204\252\231b1\267\267\277j<T\205\237T\257\277\271\3535J\232j\265?\200b\371\n:\343\240?\343\327V\241\304\217\236?^\330%\313\215\344j?<U\267\321\314\366\240\277\311\010\253\2058c\221?`V\034\333\271\247\215\277a\257\275\216\315\244\242?WFvW\375\353\270\277\335\000\224\371h\337\306?/\230\220\261\014\366\303?\006\232\227,n\367\254\277\000k*\237\237\201\240\277\032\225\237\365\213*\204\277v\241\3440\271\261\275?5\336\326w\021\266x\277/\017\235E\335Pr\277\244\r\nqA\376\273\277\355\344c\213\235\342\261?\237hq\257\223?\305?\303i\275/E\266\261?\364\327\037k\336\000\242\277\366\362\003G]\033\267?\211\321\375\217{_\274\277%\211i\350\221\020\307\277l\243\003s\351\003\264?\327*[\034\245!\240?\371\310\337b\t\303\235?_\323\270jc\311\260?\\1\337u\363\360\277\277\026\250\2125o\030\267?\221\326\204\344\306\212\322\277\3473_\264\240\315\230?\302K\232\225\260V\222?\n$\003\336x\022\303\277\233[\327\272\234\334\267\277x\364z\3506\203\240?\232\024\274g\324\003\275\277QE\244\361\311\351\334?V\372\375\254\261\365\257?\325I\210\370D\035\263\277\3664O\321F\331\250\277x\330\\\2450\237\272\277\356*\207\221\031\222\221\277\251\230*\225\333\320\257?p\274\233\034\252\331\271\277\014\001\330\276\242\341\253\277\345\312\355\247\212\377\255\277\264\337\035`i\376\272?\006p\352?\006p\254\277\346;\025^\026\222\220\277o\251\262\226\014x\247\277X\372\017\270l\235\312?&\013K\\\245\236\263?\340\221+`6\022\217? T\023\243\360\203\307?\217\201\364\227(\375\277\277\270p\267%s\267\277\277\273\362&\231\341\236\260\277\003>\030\332\265\376\274?=\235\343\033\036\364\212?\367\334\031\327\334\335\303\277\226\2573P\217\235K?2>\273\377<\024\220?\204\030\240URv\265\277\307jc\350\013\270\311?\346\026\255\340\267\350\240?\225\335\374\217\206\330\205?\230IP\265!\321\214\277k\340&(\021{\302\277r\350\367%\223\242\307\277\336\021\1773r@\243?\254\341\317\2050\314\200\277<\352%\277\231t\273?\017\207g\205\362\220\221?\254\223\372\260\025\307\252?\017B\354\375\337x\301\277r\032\316\371\213\326H?J;\271\027\313\274\215?\334\300\373\351\243\204\273\277\236\265\203FUt\322?B\205_\321d\255\260? \310\311\006\252L\304\277\007`\323\332GK\301\277iK\332\236\264>\260\277J\234\036\271\374\r\241?\372\330\272^\205\025\260?\265X\027\372\013r\302\277\210E\003\200\375I\277\277\266!qK\246\313\256?\302?/\214\305\234\276?\213\367\001Y*s\241?\350\243\021)Qj\266?\3202XSM\217\245\277\020$m\216\201\211\257\277\242\007\225unWy?\351\3157\007*?\273\277\351\225w\257i*\273\277`&\031%\370g\304?\302\003\334\247\202\277\202?\205\247TF\250-\242\277\026]\022\276\247\340\304\277e\352(\244 y\253?\037\202E\345\023C\233\277zT/3\364\362\247\277lK\212\324\374\355\221?j\263\334\023\272v\261?\347t@\004\302\304\237\277\261\254sJ\\\305\251\277\301\034\306\207\305\031\275?\203\306wg*\226e\277\261\327\225\370J\005\242\277\020\234\026\363\336\332\241\277\324\320\206\207!\216\267\277\377>\204Nh\205\264?ZG\334\273\215\366\252?\"\021\251\002\363\323\212\277\205\316\370\327\210\324\267?\230#JDV@\325\277\252\n\220\"\224=\223\277>\330\310\366J\246\271?D\321|\256\200A\271\277\311\216\247\304E\036\323?]\304\363\333\251L\266\277\255\324\351\307\330\303\266\277\345\355\237\230\277\014\267\277/\247\256\364\3039\265\277Wp\020=\246\357\206\277v\313\246\267!D\260?\253\016\271\004f\361\311?;P\377\006=\223\246?\000\034\367\301\377\244\223?\224\0318\020\312\335\326\277\030\263\032\007\277~\223\277X\337\026\313b\371\252\277x\200l\201,\214\200?R:QH\266O\301?|^\204SS\321\260?6\024V0\027\251\253?\2326\261\322\252\236\264?\232\254\"#\367F\253\277\022\033.\342\325Wd?\177i1\205\233\352\243\277\226\226\362Z\235W\305\277\330l\205\2639\353\246?\244\331(\207N\017\244\277-\215\372\204\207%\305\277\275:\260Y\276X\240\277x@\306\326\237\'\211?nc\307-\234\250\301?\226\343I\3538E\305?\266_@\343H\327\215?K\237\221Vs\271\233\277\302\365\006\211\367b\245\277\030b\214\334\201*\276\277\211\343N\306\350\326\242\277\212\2633\276sL\233?\025\021\377\335\330|\312?\322@\001D&M\232\277S\321jS\tD\301\2772k*T\371F\241\277.:\266\310\314\r\251\2773\177\331\330z\237\262?\212\374\261\314\016\342\274\277\325iTK\363\021\301?\021\212\211\300\201\001d?\3416S\355\031\021\257\277\1770\310\227\276A\260\277\036P\231\344\014k\244?\327\313\375\357\207z\265\277?m\023\370\006\262\217\277\332I`S\337y\273?%\313t\032\254\333\274?\027\224\217\232D\006\272\277\210@\226\357vL\304\277t\264\2514d\036\241\277k\td:5\354\203\277\236\322\227u\214%\206?5`\351;\031\356\320?E\323\232\036A\341\213\277t;A\t\212\006\300\277\355\364w\353\340\022\261?\344\241\276>\364\225\202?\355\017\030%h\264\264?\204\203#m>\246\253\277\211\355{\310\345\376\301\277\351\262\304>\256\246\260?\347\255m\3345\033\267\277\304\037\362/\260\311\313\277\216\371\213\3068\004\202?\233\250\2158\252O\306?\214\364\347\214\'\220\246?\316I\212(\242?\262\277\215\230\372\250\216\301\256\277\036ZTm\342\261\241\277\362V\007\355<\225\302\277\212g!\022\035g\257?\036\270\351\035Z\260r\277\372.\364e^\t\243?\367\200\305gZd\276?\274\324\366\247\312\337\207\277\024\343H\360\311q\273\277\n\025\023S\241\026\320?\243Q\236\013\210\016\236\277~\301KB\350\363\255\277\240\017\214\375\030W\304\277B\265\343\000S-\266\277\231\tt\210\272\013\230\277\014\270Xh\250\"\300?\"\254\371C\345O\256?\266\353n\3013\220\261\277\236 kR\305\324\262\277\332\251b\025\304@\261?\335I\252OU_\314\27748Z\223\255\232\201\277\335\311\232\006K\334\264?\343\230\235Q\312c\271?\245\255f\026\3778\177?Y\212\203\353\244\302\267\277Q\266SO\023\357\276?\362\334\256\240\311\233\324\277`8o\305\233\310Q??@\344\313\226\323\227\277ohp\332\321A\263?\006.q\365\263\236\241\277\206\300XD\276\211\243\277jr)\253\331\003\202\277\236\376\336\365v\034\242\277\252\201\313b\352R\230\277O\363\207\206r}\256\277\262\342\230\312\001\377\303?F>\007\202\347\204\266\277\235\215v\356\376\277\316?/\324\000\177Y\265t?\332\257\203*@-\250\277Y\334\225^\370\225\270\277\247\333]\334\035\375\275\277\022=Z\243K\350\301\277\304\240g\365\215\014\264\277\206\3431^\302\235\225?^P\273]\017\007\260?\330K&\261\270\037\266\277\372c\202\377\267\034\300\277\325\237\257\334\343\375t?\323\026n\036\220\211\273\277\\3\244427\256\277w{\235\241\2178\320?s\004g:\3411\273\277\354\221\035\272\224\027\276?\363\217a\257\231\346\246\277\362:\347\343@\251\231?\342\231\330\244\216\255\235?R\325=\2443\201\222\2771<\235\322\263a\231\277\310\257\335\272\246\371\261\277\205|\375\207b8\302\277\214\\\372*7\034\246\277\354@hS\005\014\242\277R\372W\354c\230a?\312m\234\242\266]}?A\216\224\263L>\266?9\025\220\275\321q\241\277\361?\036\336a\316\302?j\341=\213M\017\246?!\230-\265\376\264r?\201yit55\262\277\301l\253\270?u\237\277\241\024E\306\273\353\221\277\217\335\246P\370\365\253?Z\310\243\002\373%\223\277\221OzG\n\264\276\277\336\r7>\310\317\262?\3144(\241\202\376\231?\265[\360\006*[\246\277\310\347-\345\313\351\267?\306 \024\305\345Fw\277\203\034)I\353\010\320\277E\326\233\204\313\210\241\277OX\334\277~x\274?d\326+\345\221\244\251?\035&0\261&\254\271\277\243\212\210\2059\314\265?X\021\273\277\003$\250\277\027\214\230#\027\t\250?f\314\007Z\224\351\255\277\357\036\221\243\007\262\217\277\300\374\233\346\330\020\237?\247_\217\362\025\354\255?\260\377\007\260\222*\252\277\207\360\245\315\205W\234?[7\321c\003\001\264\277\370c\325\331\223g\246\277\262Z8Y\'i\304?c\224Y\241\367G\264?)1\222\021\231\355\243\277f\212\230hR\274\232?\224c\315Tc\262\304\277(D\031\256E\371\310\277:Rbp6\320\221?L\0348\340\333\226\304?\0262\202\322\324_\245?\327\326WA\222My?P0\243\\\007\n\264\277\301\000F\316P\336\231?\234\301\322\003\034<\323?\261lM(w\367\302\277\347\026|A\323\023\277?a{\244\204\210\201\227\277\312!\256\206\245\242\232?\321\340\031\327V\\\303?\"ld\007>\257\241\277\\\230\222\001`\366\264\277\316/z\365\014>\200?;\350\024)\004j\245?\310\017\222<58\250?\274\325\321\232\356\r\253\277\332_\311\243e\375\264?\344\'M*\236\233\260\277\265]\022\204\276\262\211?\320C.\333\037;\250?\374IHa\001|\246\277\200\014\376T\304n\262\277v\001J\370e\272\301\277\274\334@Q\017\247\203?oS\026_z\272\246?F\317\032\002?=\251\277\r\037\010\244\301R\207\277\250\270\303\234_\351\247\277\203\007G\033yI\325?\025\277g\341T\300\257?\321\233N\026\275\375\250\277\013,\000ZF\025\311\277x[\346\236\372\014\257\277\221\350\340\326\337\271\226\277m\230vcX\275\245\277\260/\343{\341u\263\277X\035\"\317o\341w\277\317<\306\210\035\324\270?\275\0321s\034\376\272?\253O\316;\265\351\331\277H\302\221yl\314\273\277\205\320\331\272\224h\261?\310g\217\212\244k\242\277\354\306t\003\201\362\271?\236B9\013jX\321?\273\237\034@1U\301\277\356&\303\273c\304\246\277>D\200P\267\265G?;<\215\n\247\005\300\277\223\021[#\372\253s?&\357\324\032~\375\306\277\32712\250f\340\231?\'M\315;r\265\242?V\353 V\n\206\257\2776\363$\r\235\001\220?\257\215\326W\254\320~\277\373\236A\344\243\223\301\277\017\325\271\372\233\027\212\277\305\335\037\343n\302\266?M\324\023\265\010\000\313?i7\343\371\371\007\270\277\340\275\310\205\"zm?\350t\344q\261\350\241?\037\311\275\211zU\231?\365$\207C\334}\264\277\356r\222\245\317bz?\234\252_8\216\022\254?\242\003\221$\227\355\275\277w\235\240!I\364\215?dt\333\'\221/\241\277\224\351m\032\241\356\317?Q\253w\004[H\260\277\263v\273\203v\210\240\277\254\341\236e\376{\245\277S\255\254\025\007\352\203\277\025v\005\036.\220\265\277\321\206\277\361\262\313x\277&2\327\335\030\r\225\277\264\371\017^3\314\304?\351N\274;\033\205\267\277m)\210\235\362\327\263?\342EM\014\241N\271\2778\365P\213\345\222\230?QB`\324iD\231?\272Jq\244yz\316?\024GV\271\276*\244?\034b&\232\334\375\301\277\337F\333\207.\016\267\2771\010Ht\216\214\266?\331\024\301\267m\344\265\277 +\237\362\r\307\241?\227\274\202\366CT\245\277\203\307\nF\264\224\242?\323\304~aR\212\300\277\340\036\031\324/\016\272\277\025Z`\276Vr\232\277K\240\020\004\356\\\255?\204<\350\355\330\034\263\277\217F\327\273\264\254\316?/\036j\207\034I\266\277O\265\321Y\231\233\200\277\023)+f\367\334\272\277Y\034\326I\222L\277?f\211.\332.o\225\277@\177+G\027\3002?&\\\270\371r\315\263\277Ddv\243\231\242\205?.I\244\004\273\376\253?\332\301\324it\251\253\277\276\037\034m\345\367\262?\212\214\331\021\221\365\223\277\231\310\3030i\257\263\277x)\360vZ\226\271?\370\205OV\006\213~?\310\356\315\324\003\265\313?\274Mrwe\t\264\277k,\236\261u\331\263\277\242ep.\314+\256?B\362\263\367\006\376\220\277s\252\361\234\0038\322\277}\315\213\347\375\210\241?\366\005\034?{\024\236\277\244\356\225\017S\227\257\277\312\025\256(5\356\242\277^b)\346c\033\241\277s\207h+\234\230\220?_\010&\201\213\314\224?n\345\210~\r\010V?3\340\217U\250\251\224?oC\247Z3\362\313\277\207vw\362\233\212\310?\305o\242\007~\355p\277\263\343$d\254\320\262?~H9\314e\034\251\277\2322BK\264\261\304?\355>.\211\315S\261\277\272V\334\324\364\004\216?C\2209\204\007\n\225?\030\037\306b\205\376\244?\r:@\342\210\037\266\277\221]~\037\305\310\263?\235\033\021f\361L\207\277\272\313\376H\2115\263?\0203\032\325E\352\300\2775\307+ZS\371\250?p}u7\235\021x\277\000LG\231\305\260\304\277{);\007t\204\261?\316\350a@o\371{?{M\251\320\303\342\232?YV\212\333\2526\250\277WGWy9\216\243\277\225\341\354\247W\213\263?\237}\347D\365`\252?:\024\324\305\205F\276?%\007\226\325Xk\245?\313\302\374\335\265W\257\277\3542]+\272\321\315?\320\004\243p\033\337\260?\207\373@\2172tv?\246\310^\364\245)\320?\235\367.\201@\363\253\277\217\364\311\263Cy\256?p\200e\370<\232\301?\307\221\t#\263\374\300\277\026\210ac\235+\221\277j1s\322Fp\234\277kl\231\242\013N\275?\226/:\0301R\246?\240\026T;\n\002y\277\017\245\375\001x\224\267?\371\350Hu\271\266\317\277\223\315\367-\237\262\302\277\237b#\371\246\316\203\277\216Uk@)p\247? U3g(Z\276?\337QM\005\374\tL?FX\004\035\250\232u?\177\003\270\254P\217\244\277s\010\265.k\256\253?\356\201X\347:\310\264\277j\270\037co\217\206?l\315\233\336\202?\323?\345\001w\2665\255\202\277%j\027\277S\334\304\277\016\305\331=\202\302\305?tF\257\266\210\201\256\277\325\247\311\330\363!\261\277$\024\245` \306\237\277\003a\036![\356\300?\254\346\251\241\353\003\260?\201\230%\014\214\226\203\277c\"\315\260-]\302\277\240\364\3640\t\320\313\2773\377g\352\210\304\252\277\374>J\343\014\014\216\277\301F2\303\2777\327?\001\001\307x\363O\303\277\366En\226~\353\257?\336\362\246\260\364\221\265\277\321\031\313\026Ao\271\277V\321\366)Y\340\221\277H[\262L\260&\301?.\243\252\347Em\267\277=\376\031\344\024}\256?\037@\216SM\357\254?|\241 \221\265\302\301\277m\251\307\355\304\346\253?x\250\036\332\351\333\245?L\260fQm\"\206\277s\322\362\206\344\323\320?J\321\212?-\005\211?\007\353\244\312\226W\303\277\370\311Q\n\311\204\264?+T\223r\242\265\263\277\243}\270\256w\252\203\2771\315s>+\236J\277t/?6\331\206\200?\243[\210\357j\351\267\277<\026S\024+e\226?b\326y\344\360S\220\277{\341`\346_\034\252\277\2354\304\340!\002\242?\225\274_d\210,\240\277\017\247\247\240+T\313\277qM2\364\033\272\244?\030\007\273h\024\347\213?\260w\343\252\202\201\256?\306\005\314\021\367N\307?\026\0273l@\202\235?\337A\336\'\\\010\205?d\331\313>\305)\307\277\361\232\031!\344\336\304\277\354@A\031}\263\263\2775\2769A\362z\305\277\217\000`}8:\276\277\261\025\352\252\2575\253?zFL^\311\252\244\2776\010/\276j\341\302?t\353k\351\325L\245\277\330R\263\343\211o\277?\221\223^v\007\362\271?\026\265j\323\255\234\323\277(\217\210\230NO\274\277y\033]\332\016u\235?\305:\360\306\331Q\277\277\302\353\324\245\346\014\361>\327\027*\273Uo\246?9&\264\233t\026\276?\3210\362W\340\303\304?\264\312V5\217\234\232?\230\017\035\301\001\311\224\277\347s\321\322D\260\320\277\n\206\254\315\335\240\263?o\003\203R\177\211\221?Q\265s\0271?\302\277t\020\250\273`\262\307\277\241\342$\362pd\221?e\2504\322.\361\246?\037\361g\312\216\013\251?9\324\004\313U\025\304\277\317\321\246\005\320u\265?\251-\322\256Q\252\247?\030^\022\033Zb\305\277\026\036D\014d\334\242?5\023\347:-\343\205?\347\320\036\211\0330\301\277\245\334r\222,g\256\277\302\022\372\226\212Q\206\277\244\217\032\201\216\223\241?^\227x\352\270 \233?\207m\223\224\215\033\254\277]\345\332P\367/\211\277h\250\023\326\210\346\265?]\334D\201C\005\241?\376\177\202<\245/\261\277\"\377/\216\335q\255\277\267{\007\2108\r\260\277\017\210\023\205\234:\211?\316\214\372\370\310\\\267?C\251\225\277fr\300?7\030\016]L\356\227\277\200%W\265\205\267Q?\306\006\177\362\332Q\177\277\360\374\243\036\032\024\313?)Q\006\230\322\242\212?<\233\0334\313Y\267\277W\342\321\276\305\335\276?A\243\"\350\370\277\300\277\322\200\266\260\034\333\205\277\tF\333\t\003\010\265\277/\260;\3045\337\326?\244\001\314\375HM\264?HF|\255\265\377\251?\306:\312\303\247\370\320\277\023\275\0213\263\201\266\277\007\001%\243I\323\204\277\254\3433\010\314|\322?Ne\360\021\002!\247\277\275.f\251^\230\205\277\255\201\206\336\342#\311?\036\307\255\351\024\332\240\277B\034\203\345\371\232\267?d\376\220t\215\354\240?\3778\036\033M0\207?\311\254\334\210Y\346\312\277\021\326`j<\025\227?\364\205:\230DC\260?\245l\351\322\277\271\221?\217\241>t\371\256\304\277x\264\021NoC\260?\223P\"t6_\201?\367\333\353+V\357\326\277\337\331\325\266g\203\241?\3731\236=\360\027\262\277\253D\002\361\030\366\251\277\203\201\365\366ML\267?\240\357\"\005\274\222\256\277%N\307\334\320\234\300?\0005\240\204\3235\300\277?\016\255\267\362\345\266\277\204\367\016\247\212\017\213\277\177\342^\033\025\344~?\031\321\3169f\377\252\277m+\342\364\211\230\256?c^\370\016C3\223?<\376/R\202Z\276\277\342\326}s}\270\252\277\327\256\221l_\262\300\277>\360\232\366N\377\242?,7\177J\270*\260\277{\340\313\032gf\263\277\t\033\377\271\224\024\274\277\200\244T Q\345\300?Q\032\232\\\203\017\266\277\376\207\035pb\244\233\277e\237a\016\321\364\302?\034\377\307\341\271\376\235\277\037\"\300\032\242\234\270?\277\371\034\350R\263\247?\327F\271o\321\344\316\277\353\271U\213eG\264\277\036\325\224\253\330\215\317\277\364%\346\202\032\370\254\277_H\240F\364\345\262?\360#\026 h\345\270?\227\336\2236\371\306\252?\271Y\351\240%\365\311?\311\336Td\r\202\200?\005N\376B5\231\260?\273\376\242\373\034\221\244\277\016\353\343\220\017\300\245\277\254\333\010\342*\036\256\277hF\264 \324\204\206?\256\323\311\246\323\226\271\277fS#\004\223\253q\277b\257\322\242\247\332\242\277~\326l]\007\326\305\277\024\231^\216\013,\252?\234C\237_J\374\265\277\331m\235\353\'\230\310\277\225\347\\\3331\304\261?\255t\202J\004\311\237?\314\245\211\371\0254\244\277|2\317_\322\232\262?\004J\313kJ\034\225\277\244\374\0109\247\254\263?SoG\320\027\277\204\2771\251\245\246\371\022\262?F\224k\223\330,\307\277\006o:\n\273T\222\277qdi\232oU\230\277?u\026f\024\375\230?\221\356v\222\264\252\225\277\002\024\243\314\010_\314\2772=7[/\211\271?\203\006\r\274\n\243\237\277P\2513\316]\203\312\277p*\265?\204\351\262?y\275\272\261L\356\266?<z\310&x\363\260?\336tG\177[\252\265\277\370\314\301\252q\371\264\277\333k\232oN\317\227?|\332b\342A\310\242\277\320\261U\230G\274\263?\016R\241\303a;\275\277\304-z\253\252\007\250\277dV\353\023\247m\263\277\262\357\374\016\305=\230\277\270[R(\r\"\220?\372\211\365\260\371\225\253\277G\344F>\353\363\274?\245%\2358\303Y\200?\317\221\233Mi\357\225?z\260\020f\024b\251?A\'\034P\337#\307\277I\353\365>\304f\246\277\311\235\353\3268H\224?\003Tf}\335o\303\277\224\350\360\320\020\232\245\277\004o\030\335\247\035\203?\214\001\035}\2635\265\277\236\277C\032[\301\250\277s\254\232\260S\336\302?^\201\220Z\007\002\241\277\306#\323%\304\256\306?&\346\030\372\265\367\261?\013.\342\217\237\264\245\277s`\326\037GO\260?(\224\334\313\002\210\263?\234O\032]\344I\242\277\255\262U\364Dm\251?\366QRc\317\231\300\2772L?\376\232[\276?\313\312\331\240{0\215?\026g*uk\266\265?\314\305D\210{-\320\277\3512\211D{\327\260\277\237\223\235J\334\314\275\277h\n\005\000\325\324\300?\270\206\311\376$\364\222\277sz_x9\266\265?\335o\267\320?X\270?c\231\362\235\025\355\220?\021W}\310\360q\210??\264\242\302z\354\305\277.\245\2067J\244\205?\233\325\234}m<\273\277\274\020\342\201\013\322\241\277A&\353\321>H\303?);\233@\373\367\246\277\321L/\315\305\005\226?\327\247\332\"\331\311y?\013\304\265\311\210\225V?\350PG\207\271-i\277L\3125\260}\356\202?E\372t$\352v\261\277\326\021U`It\271\277B(\264\257\230L\262?n\354e\306R\356\257\277\233bl\251\2655\255?\207\\N\323\366\331\303?&Je\000\303)\235\277\311Lx\275G/\252?uO\0343\007\361\254?\325\365h\205\2171q\277\026\300\"\364\357\021\270\277\3451f\372\314j\322\277\230b\"\204\262\277\245\277\037\205\256\002\231:\226\277\314\253\341g\223F\221\277Z\341F\237\337\234\234?\331\370\023~\325\262\270?\222}\375\367;\334\226\277]\034Y\r\200x\301?\226)\032\311\030\213\245?\271dN\036\352\234\213?\005o\037\311\327\357\266\277\001\223-\367\0044\232?\'\261\017L\354\001\273?Ne\245\2672S\255?2>\274\250\036\373\302\277\006\025\000@\362s~?\352T\332zkQ\226\277=\277\247l\354V\306\277W>\001\236\351w\301?i\025\213\341\377U\201?\213`\005\372\371\243\266?s\266\336a\277\340\271?\252r\257<\020q\274?4\331\205\371\223\344\273?\177\334\2532\310H\307?I\267%\253\021\r\263?\024%\303\025I\321\252?)\346\342\345\304|\305?\320(\264\323Bq\236?\207\375\272\362X)\213?\036\207W\304\006,\272\277\217\251$3\364\304\216?\225!\275_,6h\277/&+Te\265\311\277\027n\331\254\356Y\263?\340(\322\254\025_\252\277*\324\232\005b\333k?S?\327\273!\235\254\277\337\314)?\336R\261?$\336\017G\005B\303?\320N)\300\307\325\254\277^o]\221\271\333b\277\244M\235\211A\301\311?\\\017],%J\265?\'G\036\020\266\224\307\277N\027Q\324\025\233\263\277\216\327\244\277\007\224\241\277\"\251\320\362P\006\247\277\267\2325\320\032h\300?\302\304\037\346\021\307\241\277\216\\\212#\370e\240?\003\372\026\007\020\351\225\2775\241*\322\373=\230?oE\n\037\203\267\240\277f\245\022\240\361d\243\277\347w\360\026\201#3?\210\213\246uBO\320\277\247+\252CK\204\224\277\301\235\366\235\321\010\210?O\377:7\322\245\267\277I\307\336n\031\317\323?\252\337m\014U~\243\277\rP\007\257\024\t\253\277\320\001\374Td\347\300?$\374n\210\361\336\302\277\034m\016\302\306\250\242?\347\211,\342\305\236\251\277\325\024\201\024\024@\220\277\'\030\351\344~\236\234?\n\377\354_\325N\262?\267\364\355\275\245j\302\277\025\0039\235n\022n?\212M\371Jm\022\255?\004\020\223\2434\305\244?G\212[\203\360D\321?\256uH]L=n?\274\211Z\323\010\201\235?\362\242U\032\226\216\310\277\n\355\243\257\216w\274?f_\006%\257\371\262?\025U@\223\221\334\301?\347\372\317z\275\307\251\277\027\"}\236\005\246\270\277\346\320\321\372A\276\246?\220\376h\026TU\320?g\0145\233\341<\246?\020\3662X\317\247W\277\266\254\324d\370\373\300\277\241!~\376\t?\277\277\375H|\263\'\255\222?B\031qC1{\264?\232\315\373\3674\260\235?\024u\210#Y+\201\277k:l\342f\250\275?\305\222\354z{\247\246?\210\313\310T\345\321\326\277\n\177\364\372\227\355\256\277\257\376H\224;1\253\277\350\327b\371\317\303\223?\243\3769\360\274\233\301\277C\037\023\362\271C\274?.ga\373&\366\312?j\343\315<MZ\305?\220\245\350\361/\031\261\277\314sy\2733\020\275?\227j\003\245\307g\245\277\304\373bp\237\236\300\277\367\336\327\224\371i\270\277\201\017\252\312\336\027\306\277 \207J\\\243J\262?\300\353\014\016\200\227\244?\001AvA\206\377\305\277\361\355\321\025\353\231\272?@\345\340O\212\372o\277#9(\317sx\277\277\277\263\313\311\371\246\255?\271\3722\341\365b\302?\336/\377U\354\353\301\277\361y\271\276\333\206\300?\351\274\177\276\247\314\310?QCC\r0\256\303?\237n\364\315\223\330|?\302\247\266h\376N\302\277K\372\355#A\t\220\2772\035\002\216\323\032G?{\n%\346Ko\255\277\342uA6\350`\240?\311\330/U1\007\243?\347Wb\251#s\312?\034\210\243\224}\366\265\277\327\277\034\3377Y\327\277\254\232\374W\230\033\250?\252\243\354\276 \027\266\277\253\254/\304\207\353\271\277M\272^\264\001\203w?,\014TB\262F\302\277\240\365\007=\001\360\301?8\377\377\207Z\235\305\277\212|o\361\246b\221?\021\n\353\305\377\367\274?\366\177\314S]\266\207\277\344\261\251^=I\271?;\226\371\234\217\341\240?\030\322_\354^\347\314\277\370\003\027\346w\243\304\277\202\030\010\260`\347\210?SV\3323\357\t\275\277\333x\363\312\267b\224\277\236=\266\370\332\230\231?\3340\346%`N\223\277\327\202\340\325M\244|\277\327\305zg\370\260\301\277,\341b\002\356\323\262\277K\246\372p=e\235\277x\360\332l\035\300\255\277R\254y:\374\003\251\277/\244\354\370F\315\252?\020\037O\016i\034\223\277\2176\243F\211\222\304?,\317.\000\211u\250?U\227s\305\263\346\256\277\236\350\300+rT\234?\037\320W2D\003\274\277}+t^wD]?\303~\217\004.\350\242?t\0324=\327\203\270?}\"\236\241y\"\230?U\242k\307\356\235\256\277r\221\n\220\002\022\271?Wo\\\236\300!\301\277\252M\362s)\002[?\205\214\242\013\347b\227?\206l\216\251j\030\334?\006\004\233\344\0238\250?}Kc|\207\235\300\277\252b$\303\320\370\267?\320(t\335~f\305\277\341p\372\300\240\034\244\277\357\'\230YW\265|?!\313\256\246y\214\244\277\331\005\001Pr-\277\277\00511^\246\225~\277\376\372\214\260=\264\237?\277*\233\336\260O\210?\\y\270\201>\217\254?\n\2604\350\247\300\223\277\273\242V\365\236\201\260\277\215\331\211\001\272\305\254?\302\362\255\342\276\276p\277\022\275\374\004\377\350D?\243\031\270\263\256\321\275\277\260P\301\010\257O\300?\270\366\232l\275<\312?\366\243<\030~\017\304\277\364PU\3729I\265\277\035.\233\225\023\335\252?X\322\376J\013\344\273\277V\r\026\320\321\344Y\277\232,/\254\216C\241\277N\274v\206\344\307\304\277\231\221\017^\217X\261?\304!r\342\374\207\267\277\004C\371\246\016\230D?\277\303Y\204T]\311?\202\201\261\363\203#\247?\365\333.\021V\350\246?\314\222\231\233\213\001\257?\340Lk0\003\r\302?:\362:T\257\036\207?\"\310\'+\366rs?\230\257\340\260v9\255?{\022\333l\344\252\235?\322\'4\024\204\002\274\277r\200(K\301\314\260?$\010\310rOy\273?S9X\256\263A6?\206\010\025\222\212\rs\277X\317Y\"\"\353\277\277\304\345\340p\033\177\270\277\3716\2138\247\322\240\277\274h\013\315u\035\252?\255\344\227\225\220\016\234\2779\245\315\201\2029\267\277\013\350\321\374\340<\224?\240!\346/p?\274\277\224\231\263\007\341W\241?\t\322\202\314\275:\270\277\273b\206\253\375\244\261?\223\n#m,\221\300?\334\225\\yB\274\253?\217>\\\205\314\225\242?B~\337i#r\230?[\205\014\036G}\264?\316\264\271C\367\303\260?5\275\257n\235\304F\277H\'s\256\311\275\242\277\376\355\204\017\334=\213?@V\277\362z\273\264?\324\031\354\344\277\221\251?\252\341\312\3513\225\242?\023h6\035\320\026\236\277mK\014&\\\031\202?\334)\226K\034\n\270\277\265\027\241\347^\305\260\277</l?\250\204\254?z(\3726\001\374\230\277\017\017\371J\303\217\266?\reM\352]j\254\277\374\310\2054\267x\253?\342\242\327\014%\236\314\277\342{z\366\260\006\243?)\303\326 \030\372\232\277\032\355w`m$\317\277\213f\205\264\\\230\255?1\323Y9\215J\261?{\3219\013\212f\306?e(x-;w\242?&\027\233\222\022\001\250?K>z\365|s\271?8\024\364rI\311\216?\342\331>\374\263K\304\277\277\267\341\000\0344\301\277\372\212\033\202B\324\202\277~\\\3756\t&\305\277\317\242*G\235\033\272\277\026\367\204\331\005\t\263?\305v-\237q\273\257\277\204|Ci\017!\301\277\243\316\020\310P\200\302?\013y\323\300\240\363\320\277Mxm&\t\253\245?\366\323,\243V\264\242\277C\316/`6\\\226?q\217\335\234\201\211\251?\003.r\313\311D\304\277a\3550\261\202S\261\277>lNZ\252\177\245\277.\3524\005\337w\306?^\223\002\010G\377\234\277\017\267\007\214\265\037\272\277\335UTu\0270\302?\013$\013c\230\367\275\277\267\252\224\027W\247\273?2\004\332\303\274#\310\277\301H\370\300\361\221\324\277&\264\257\336\302i\242?\027\206\243\303\224v\244\277f\to\350\333\277\276\277\305\262v>e\255\213\277\014\003\014\001\306_\202\277=\024I\007\365y\241?\003\265\370\242]\347\265\277\206>n\266\243\260\267\277h\305\265\263\222H\270?W[\316\355\0331\320\277\003\2770\320\323\020\277?:\372$\300\356\375\275?\335\357\304p\264\307\301?\233\316\204\237\t\212\303\277\205\n\025\271\254&\202?\241u\261\223\254\220\260?$\315L~\361\315\246\277\205Gn\335\001L\240\277\032\226@\3103x_\277\2460\304\261\306\343\230?\345\214\353\342\t\'\232?\362\201T\267\212\342\242\277i\3622u\237\217\235\277,R\013gH\021\227?\330}\0270o\341\242? \351T0\355\001\247\277\001\234\036>\325\222\223\277\225E>\342\312\375\306?\266\372\344&\3000\241?%b\220\326\325\270\301?f\220\004h\230Y\316?$\021\013\352\332\032\212\277\300\205\213^vgu?\t\271\314(\"k\201?%\031\177\233\010n\222\277W\000\252\354\345\354\271\2775v\262\243\351\224\231?WbP-\271#\307?\331\220\271\341\246$\266\277/\345~\3548\010\222?\376\372\343\204\\\340\246\277\275\367.\210\330\311\303\277Oh\37545\350\255?\256\355\262\021\003\n\250?*\002jn\r)\264?\262F1\003\327\r\305\277\207\354\372\203\302\320\311\277\272\201\277\343\334\247\266?\005oa\177S\311\210\277\341\016I\371M\231\217\277\252\212B;1e\231?\262l\010\260\207[\272?\002\270Zk\267\244\216?\207\301\262d\363<\265\277\263 \301\212\023*\302\277\322\357/\330}\252\244?\022\220\"\353\2643\262\277\017\215\222rB8\237\277Kk\rO\353\020\256\277\241\025\014\226\325\254\302?\360\234\312\305\252/\247?\232\223\306\236\237\212\240\277\rf\270\236\322\221\316?\251\242F\304L\324\202\277\030\242\357\3618\206\243\277\237Tc\262=6\321?a6V\020\004\371\245\277a\336\0343Y\025\241\277S]i\250\201=\306\277\225\023l\202U\017\311\2770]\343\316\006Y\217\2776\014\034\010\\dc\277\216\312\'\266\3574\310\27771\335\242\214r\274?a[[qL\347\232\277\374\326\024\214\177\310l?B\250@L\372\014\237?B\\\340z%\321\210\277A\222\345\261\311c\262\277\003\315\315\366T\204\263?j\345\246\031,\377\216?\022$N\343J\304\246\277G\235|uta\214\277W\302\263\021w\216\324?\242\304\211?f\370\264?+R\003\306\206\247\303\277aGL\255}\266\257\277\'\242\241\3234_\260\277S\253\343\331\371*\244?\272]\272\037\262\305\262\277\316\243&z[\177\254\277\004s\375/\271.\211\277\341|l:\231\237\243?l\341\2717\276\\\205\277\320Nc\263U2\271\277p\226\r\0078\224\253\277\310H\221Si\354\266?v{\033\277\\\337m\277A\251\220\234zJ\257\277\276d\'\276n\236\265\277fe\267v,Z\272\277\033\245\0039\"S\222?\346\3279*]]|\277\035\035{\237\002]\235?\313\305;_\243|\270?\213\307&\356\225\204}\27722\345\255U\000\262\277 \227\027\356\022\212\270?\250\257,\353\324\017\272?\310_\271\225/\255\236\277\205\313\312v\2468\275?\301\226\210\315\373T\307\277S\353Q\227\346*\264?&\002x\244H\234\260\277\213\024&\203k\000\300\277\355\003\337Jm\222\270?\242\201\335\260\327\225\275?T_\275\314\256\235\232\277,@\377y\242\217\307\277r-@0\024\020\236\277\201n#\324\204W\273?G\234G\315\212\251\302\277\254!\317O\303\035\241?\327\234\324{QM\273?\267\2502\202h;\260\277\216\r\203\243\262q\213\277\364x\255}\000I\001?\202\316\261\031N\014\264\277\3760\030\315\006\235\235\277\255\206Y\277s$\221?\262\025\247L\240S\244?\023\340\226\013\343;\315?\006*\014\000\324\302\270?\302\324\321\265A\310\262?\351O\003\366N\032\261?\223\000\311\257\257\343\253?p\034\201\247\227\250\235?\\\272\207E:4\260\277\326\337#\323\357\304\251\277~\210#\223 q\310\277\375v@F\346\345q\277\223\001\001\322\251\031\274?\366\261\241~p\237\302\277[\212\363H\337n\214\277ym\274\265\203\211u?\033\244\365\201\215\003\260\277\341 \tH5\302\301?\244\000^\331H0\241?K\331a2Cs`\277\306\261O\001\2422\301?\224\341,\247\363d\303\277p:\013\224\311 \262\277@\214\004\375\243`\301\277\177k\264\310S\362\201\277L\370\360G\325\177\270\277\030\200R\271cG\274\277\361e\022\275\254\035\272\277\007\236\265\207\337\227\244?\245\241E\326O\006\266?\246\3436c\005\305\234\277D\th\003>\004\243?\r\322\215\322\323he?\232\315\263\250\223t\261?\252\272\363\'\362\357\251\277XceAS\014\241?\347-\335\265uH\312\277\217n\223\310aF\255?\355A\002\341\n\222\220\277\253\037\272\3764\301\251?\345m\343[\361\321\255?\332\371\313\240.\300\276?\013F\034\014u\241\243?B\335=i\006x\275?\255\345\375a,`\275\277j`!\304\005l\317?\252l\246\014\3272\257?\341\350:z\013`\255\277\201\256O\202\000\001\265\277)-[\272\347U\254?\2748\211|\320m\305\277&[\r\256\316\374\225?\352\023\375`\372\302\314?\314oA\010\nZ\261\277\240\3018D\033\000\256?c\337g\330\021\033\274\277a\3616eT\024\271\277\336\224\213\30327\243?oP\356b\264\213\252\277G\204\310\331\244\324\300\277s\216KG\321o\234\277\353_\364[\325s\266?b\307\243P:\366\322?\321_\002\323]\300\263?B\250\2401\350\365j?0\215(dU\215\265\277\367yU\376P\355\310\277\270\371\247O5[\241\277\tz\0374\260t\270?\352-\373et\337\273?\001Z\3254\317\027\236\277=\260\344\373\033GM?\234\235\332\312\236\364\251?\357\246\205\314\243}\264?O\000D<\350\014\257?\021z\256\335\226\034\251?f\301\256\207,%\312\277\264b\334\355\324\317\246?\025\203\023\353\030D\266\277\227\340\006\200\370\363\252\277\n~\275&9i\247\277t\327\205q\313\341\251?Q\216n@\223\266\274\277X\333\306\305F[\220\277\220\221;: \252\305\277-\203\375!|I\231\277\375\225(.\247\314\222\277\230}SY\276T\270\277\020\277\352\264\245\\\266\277\376\316\247\236\243\213\215?\260\034U{O|\252\277\003A8w$\033\250?\002\036\262\267gk\274?\331]N;z\261\262?\356\346$\362Vb\303\277-t@\247\nR\265?\214+\370\334\022\340\210\277\245\332\017\240\033q\262?\211\325.h\224\366\253?\334\203I\341\261s\225\277I\257r\010Kc\251\277\347\253\016+\324\247|\277\0075\360O\340_\260?S\332\205\363U\340\275?#\232\310\370d\t\205?\014\013\333\030>7\243\277\022\006\244\312Ew\260?%\352\343\237Bu\312\277\010w!\323\242\353\273\277o\274\250y\362\256\255?r\367\254\373G\035\250\277\273\303\006\017[\261\266?qQ\233u#\224\264\277\260\030\312\004Dd\226\277\204\221\372\210\332^\235?4lls\212\020\247?\021\366\261\000)R\256?sB\302\301\t\227\244?\271\254\303\322\3160\267?\025\017\344z\364I\227?a\024h\322\240\010A?k\254\222\013}\203\270?\023X\207\203\245a\323\277\030xN\362$\301\241?\206\337\263\362\363\375\273\277\252\347E\337\276\017\265?7\002\003\217\225\211\244?\276\270%\277\342\222\227\277\314\303f\316\024\323\245\277>^<r1\211\206\277\022\270k\007&\371\274\277\206\036_\316\223\025\267?Dk\300\240\036X\273\277\031<+\205\343\322\245\277\326a\002\027f$\246\277\341\217\323\314\262\000u\277$}\261\016wN\326?\251\374e\3216c\223?u6n\037\303,\260\277v\260\346Zx\214\266?y\002\252c\300\027\305?\224O\022q\221d\257\277\351\250y\021,\275\244?\235edg\216+\305\277[\360\035a7\264\276?q\312\323\036\212\212\262?\224R(\314\243k\311?A|6\023\216\004\252?\325\275\237h\312(\300\277\276<\346\244U\200\257\277\212\351\326\027\005@\321\277J\001S@\352\325\271?}\266kM\372\233\252?>\036\230|\373E\301?\207\353\367a\247\356\263?\327Y\320\334\006\312\225\277\326\024/N,\340\234?kL\370\203\030\204\275\277\025\237\376\226\231\233\243?\372\247\261\275\206Y\247?\376\243\332\322\334\237\265\277:\340\024OQ\205\255\277/\267f\357\\d\253\277\204\t\376\266\346p\317?u\226\254\203_\246\312\277\000^0\227o\030\220?\362G/\265\325\312\310\277\010\337\235\005\022\373\247?\370\311\201\300\224\320\262\2778\203\010\216\303\203\254\277\262L\245s}\233c\277\020\224-\213\351g\230\277Qk\311\236=\353\272?}i%\367\270\373\261?\250\315\t\360\017n\300\277\t\374\331n\0014\263\277\002vH\332\335h\257\277T`\277\327\335\277\253?\256\212\364O=\231\320?\215\010\r\211\264f\247\277S\246\265\r\243\004\274?oT\276\003\302T\303?\226\317[\204P?\216\277&F)\367q\367\261\277\235\212\242\2447\305\300?\222>5\000A\261\246\2779\302%u@H\267\277\233\003\026\314B\035=\277\221d\223\036B\027\322?\346m\235\352\305\242\230\277\364\312\333\031\023\001\251?\001\351v\365\321\375\330\277\327\377\n\363\240\030\257\277\251\t\357X\200\332\277?\377\340\334\235\275n\266\277)b\177T\246\375\313?\031\346\375\242\270\327\260\2777e@\250\0374\305?9\014\214E\320\254\244?\211(t\2769I\265?]\000\003\332)\t\253?\354\317\216\266)\367\212\277\034@\245\021\344\301\305\277\014\240\331\245\363\357X?\344@\305\341\"\305\263\277\353\220\240<\375\312\200\277\225\3210\244k~\317?d\337\2651\343\227z\277\331\351\033\201J\232\273?gZ\033\214\261\177\265\277j\226\324#\314K\304?\204\276\205E\315\035\301\277\242\020[m\366\343\300?\261\241\374\221\010g\311\277L8OtY\253\257? \253\373\212\256\023\301?\206Mt.\316\002\312\277c\005CW\210L\262?\253\203\036\204\224\324\235\277\023\243<\357%,\255??\375\367l\351\234\272?\350\206#\035\346\203\201?\357J\244R\322\315N?Hb\255E\357yJ?/\347g\251/\t\304\277n\350\362\004+\373\260\277\200\364\315\206\322\022\270\277-\351@R\221q\310?l\222\201\274\266\313\254?\305G>\265\027>\304\277T\307Z\364\215\221\323\2779\352\203\315\277s\267\277\267\350\177\230\216\004\270?\346\377\326\234Qi\260?U[\247\210[\204\310?[b\375\302\032\223\246?\350\202S`B\334\300\277B\317\241\210,\002\264\277\323\366\220g\225+\305\277\356qr\321\376\275u\277\307\225\245L\365\r\254\277Y\364\375\343\314\213\264\2772\234\224\355\333\017\241\277\262-\035\377\336~\227\277\2631\264\277\342\354}\277\262\276\211\007\214T\247\277\276\344\366Hr5\265?\260\266c.\344\341\311\277\301d\3461\224S\245?X\016^\373aF\220?H`\314\"\017)\257\277\027\2504K$I\242?\r\231\271\r\262,\251\277\\.\221\305\217|\266\277K\022\242\004\272\321\275\277\2615\022\rMD\270\277;\236dWo,\235?rD\331\"b\253\274?\373\332[<\033\372m\277o\221\006\372Y\202\216?\343\335\321\324Zj\254?\024`\235\014d\304s?.\237\355\331\271\211\306?\212\363d\242Y\360\277\277\223\220\0249\212\013\262?\327a=\342\220\003\300?\001\233\225\237\242C\300?\310\235f\2713[\233??xp\361*o\235\277y\326\307\001\257\226\262?pj\361\013$\002\242\277\001\252?=\006t\236\277L\'\004\"\232\243\302?\251\336\343\253\301X\226?N\357\210\206M\311\240?\034\240\325\032*\341\252\277\274\203\034\027\335\n\242?\226*\206\341\342z\301\277\006*\253\371\211\320\264\277TV\247}\373\027\245\277\177\266\020\227L\000\214?\347\262\310z\252\262\226?\026-\333\304\270c\202\277\003\200\031\370\023m\223?\336\300\332\211\r\207\274?\205\037\230\021\321\333\250?\271\267-\256\255{\320\277\216\307\367\371?o\207?\274\350\300\217\332\241\244?%^\304\301\204\002\262?\335\375\337\372#\027\302\277\016x\003\022\267\004\231\277\177tA\303P\324\272\277\252\013\353W\3768\306\277#]zs&y\251?\320\2468\342\327\250\256?\330\222gI)W\272?\217\344\214$\246\304\305\277wg\367_\346\246\260?4a:\215\226\343\264?\030\033\341\177%~\223?\362)\307\324\035\025\207\277\017\257\252A\357g\244?\306\227\201\316KW\273?+~KAf\246\312\277\353a/\010j5v\277\0046,vJ\322\276\277\037\004\022\207\362\357\207?J~\316\236z\322\251?C\241\327\"\375\t\261?\221N\361\277\356\310\266?\231\202\224R&\242\245?\245\320D\261\001\310\253\277\"\203\031\354\n\322\262?\351f`\376\035\037\306?\316F\352\233\347\022\265?y\365,\217\223\023\273\277\320sQ6\353\034\251?\203\311\t\304\301\221\325\277\335[z\353\351f\240\277\212br\n\222\020\260?eD\t\226u\002\312?\205\230\231\272\371\314r?$Q\017\026\370_\261\277`Zjy%\350\301\277>=\337F`\215\233\277\020\302R\317\305b\255\277YQu\027\254\223\262\277\021Ao\362r\037\257?\375\361\233\204\374\252\203?2H\345\223\374\341\253\277\t\3776\312\013\002\261?.\237\252T8j\265?\372\260\331\344\231\251\227?\331\247\242LS\254K\277\340\004\330\035*\217\242\277\\\315\276\333\226(\257?9\024\270\013\335\037\221\277+\354@\313\267b\206?\226\356\177\311l\357\262?R\r\373&wy\221\277\231\272A\373R\231\250?}&\306@T\214\260?\252#\024O\224\350\256?\257\330M~~g\267?&N\333;W\274n?\3173\300\302aa\322\277\356\372,\235\213\237\245\277\276\000m\326\255\355\266\277Hb\037\3318T\203?\250\366Z\217\005\273z\277\202\224\035\243BH\271\277\363X\347\363iw\230?-ig\245\377\232\265?\345\277\321\002n\362\241?\362C\207d\357^\226?\327\365\270\226\354\024\201\277\021\244\006v\037\311\260?\256B\253\3378B\306\277\347\322\256\317\222_\307\277OYG\216M\344\326?\254\372\354J\t\020\271??\177\274k\032{\215?\037\325k\265\237\'\212?\361\336\270\032/\320\226\277\027\375+\237\217\272\204?8\326\242kYs\247?\017\203\207@\321\221\265?\013\024\247\035+V\203\277\030\242\036o\231\300\260?s\233\3071\327b\277?\323u4]\233\240\267?Lf\323\2253h\211\277\023\\\207w\315i\257?^\214c\374\254M\311\277m\352(\333\265@\214?N\217u\275\276\321\235?61\374\341\314C\270\277\004c\224\212\r\017\277?\\\242\307\001\357\304\237\277\031\232\330\373\t\033\272?q\250\250\226\"\017\307\277\225\020\334\305\006t}?\021\t\'yW\022\211?M\372I\324-\235\261\277\001\2304\347Q\337\302\277\344\007/r\332m\264?\003n\244Ij\337\277\277e\203%\273h\264\204\277\236\227\262w\255\246h\277)\374\013\351\201\360\270\277\267\265*\325\337l\273\277W\014\356FRx\272?\026\017Xn\253\016\220?\223\276\004\246\221\364\314\277\253\'!\022\033\266\266\277\322\001\253\262&\212\243\277\245\334\224tX\322\232\277]\202\241,\374\273\254?r\366A\264\243\005\272\277\377\277\030B9V\210\277i\312\0068%\274\256?4\000\037\253l\272\330?\014\217\373P;`\251?\231\204668q\246?+\330s\273\3548\220?\001*u\3609\244\250\277\236\207%\006\317j\245?\322\233t\373=\n\255?\253\033Fc\003*\313?\371\323\345K\"\215\244\277\202\224\223H^\225\236?\337?m\010\323\330\216\277[-\376\026\230\236\263?\252\260\350\344<\244\277\277\211\313\307\303\301N\203?\2325\027\370\243R\304\277\330#\367\\\031\223\256\277%\234\265\205\327\374\226\277\335\357\211\244\352\211\251\277\026lg\304\304\374h?r\310\370i\371\315\275?\336\244\323\024\243\337\267?\203\376\207i\224q\240\277m\246\350B\331\t\232?\310\365\311\322\313\340\252\2773\271\361\356Q\376\260?\337 \367I\213^\253\2778?H\267\213S\243\277T.\024\265\035\230\256?\340\254\371\257\351\334\301\277G\267\374S>\231\256?\n\037TtP!\270?$\247\023lK\221\234?\304x\233(\274\003\264?C\325\017YGBk?\214\257\207\252\203\365\272?#.\227p{\232\274\277\345\242\220S\353\221\206?;\231$\310F\334\272\277\345~\270c\323\213\274\277\346\034\275\221\254\031\220\277\3631\340\034\311\324\236?\014\344i\330\210\007|\277\375[\265\321#h\241?\214\336Ym\301\t\272?\310\'\203f6\374\253?Q\373f\313\3563\261\277\344\301\300\337|\332\273?\342\250[t1s\202\277\026^\325x\223\036\300\277\370\365#\274M\365\315\277\004W\310L06u?n\311d3\244\370\264\2778&\241\221\220\223\317?\276E\tf\"\373\240\277X\2150\324\373\255\247?\356\3233\322\302^\223?k#\243N\327\203\242\277\375\001?\216\320\225\262\277N\332\037\\{\321\272?\252A\311E2\211\244?\246\332\300b\321\244\301\277\001\302\337\357tH\263?\006\177{k\014S\264?O\037\261\027\001\233\274?\316\020n\261?2\243?\245R\211\007\r\300}?\260u?&\335\212\255\277IF\311\005\2740\275?\206\331z6\236T\247\277\216:\240\271i\246\312?\031\244\307J{\347\306\277^82\\\310\301\262?\200{I4<\311\263\277m\207\006\323Z\362\266?W\322:t\270\370\270\277\277\000\230\307z\323\245?\347\005\317\337\351\030\271\277\r\373\346\211+y\265\277\216\3667\217\351:\266\277\300\353\004-\007\200\257\277$^\210\375\266\331\203?\033\342\'\251\031\277\222?l\225\335\337\206\275g\277\361\223\364\020\370p\264?\241\177\316#\363T\271?\276\013\035\353^\243\217\277\203y\302\243\312Mu\277\371 G\256\337\304\225?\306\242\200xN\010\260\277\256\220\005\003o\270\245?\256\362\340\261>K\305\277B)\325\217f\376\234?\211\020\256\343!?\257\277\024\217\002\004\251\017\262\277@$u\266\301C\247?{\310\266Nj\341\246\277N\nv\330\322\211\247?\253S\201q\243G}\277\244\'\024\2672k\232?\3159\312\366q\331q?\217\010\023&\231V\241\277d\006c\025vu\261?\215\203\2726p!\321?=9\366j\2271\227?\260\343a\263\034n\256?J\254\304\267\360E\321?\376o\213\037\263C\274?\310\013KDrA~?!\224\343\'\333\221\274\277\266s3\200\236\305\240?LK\336@\025V\257\277\224\316\373\336\242[\303?\304\340\276\326\250|\215\277,\272\001OW\320\254\277\374\013\004\n\312\021\261\277\177\'<\001\024\367\241?\223R\'\343\313\204\301\277\272\223\205\223\340\366\223\277\t\014.\221\336\330\206?\206/9\037V\"\256?\344j\276\003\371w\232?N\000\363\372R\027\207\277\002=\356n{\372\314\277>\256\300\233f\245\253?\325#\244{5\315q?\027\205\021\007\371>\210?4\220.\013|\231\325?\275t\310-\036(\261\277H\215#U\215,\256?\016\327S\322Z\n\307\277J\t\'r\013T\301\277\031\030\244\372\234\240\270?q\265P\333U\204\251\277\215\304z\342x&\310\277\273.\324\000@\356\256?\243r\375\007~lv?\033\3438a\315\202\274?o\223\026\232\310\225b\277\202uD7\344\351\266\277\375\3334\210\304N\246\277\370\024\250\031\347\235\312?\020q\2719\315\371\247\277\206jd\244e\027\213?\260v\3266\222\217\307?\364\312\030\313\033\260\262?\177=\264\327Ux\261\277\200\350\312qc@\304?[H6\213\263*\273\277C\311\024\265i\266s?\336XCu\254u\225?\'\212S!\273\244\262?\226y\023XY\275\213?h-T\261\323\003\250\277\234\366/B\006\016\270?\263\257\254X\272k\311\277\241\007\243\346\'\r\235\277\245z\201,%\035\270?f\360\327\003\2300\205\277tJ\221?\323\355v\277\026\204Z\000h#\251?D\322X\223jY\225\277#n\357\275\031\354\312?\251\200\025\220\213\356\231\277\254\034\243-\2240\204?T\360\177E\237p\267\277=\205\360\235\310\266\262\277Y\260iT\337\314\250?\320\361C\353V\200\273\277\0060\020+\264\306\304\277\021\3360\257\321S\256?G\016\314\276(1\225?\332\237\2070?j\244?\265\032\311,\300K\277\277\367\337B\340\247\004\252\277\245\370=h\327\357\225\277\343\341\032\023\203\026\264\277\030`\227zM\226\261?\037\375\361\2173\303\243\277\360@\336\331\204x\304?^IE\204\n[\256?\206\261\346\266Y\305\275\277Q\323\332\341Y\366\261?\266\000\200\262\t\351\260\277u@|\213N\311\216\2777\231\315\031R|\253?GW\336\\\331\266\265?$\354\021\036\350\311r\277\006<w\315G\325\255\277\035\357\254\205L\360\225?\365\337/\272\2222\250\277\016\200\352ou\345\254\277\007\302\270\377\214\367\220\277vrTG\274\305\205?\364+(\255\375\275\243?|\200p.\032u\211\277\344j\377\276\274\251\200\2771\037\000A\352\025\274?M\220?\273\372\225\221?h\2544o\020u\224?\007\'\237\257\326\366\261?\031\307\007\242\272\016u\277R&\'8!\035\230?\373R\222\204\261\"\303?W\023\314\206\0257\274\277\302\226\023\034#\244\304\277\242\231\353\264\370\313\301\277DX\307\354R\305\305\277G.L\326\301\316\224?\333\1775A\031,\203\277N\006\243\310\202l\303?\305\346\354\304\276[\207\277\031\262cdd\231F\277oK7K\343\226\274\277\256\207\236\263|\357\310?\342\270\333Y\000.\246\277`\321\2547\345q\211?\341\370\325J\033K\221?*cf\260\354\017\305?jy\271\245\250\347\256?\271\343k\346\345\376\252?M\255#~\032\304\325?\324Q\347\362sz\266?F\242\203\240=\364\315\277a\317:\250dQ\233\277\221$G\360\3356\253\277\330;\241\3773\270\233?\345\275xFNc\263\277\335\226Z.HJ\256\277vu\255v\333\220\271?\266/\231\227\232\242\277?\316\321\255E\346\210\270?\033\360IP\303\254\301?\n\\\243\350\017\244\253?y\311fF\353\351q\277c\262\205\205\0332\242\277\177\335T[\336\245\250?\345\030\032\032xh\265\277\377\225:\217oI\276\277\332H\341j\006N\326?\"6\336\002).\302?\325\315\201\276t\225\200?\250h\341H\363`y\277\345\365\371\313\001/\316\277\375A\241\347\037\206\301?\020\261\244\344\217 \305\277\205\177\024\362;\374\307\277\351\342\230\271\370\207\244\277\207\270Oq&\314\276\277\313g\240\331t\237\300?T\243\375\201\0271\256\277&uh1\356r\266?\343\217\332\214\306N\227?/:=\2657K\240?ArD\rQ]\262?2\033\311\364\254S\251?\334J\020(:\344\246\277&mIi\267\362\255\2777J\233\210r\031\266\277\333\360\212\330\342\336R\277\\\341\343\351#\023\261\277\020G]\357\221c\214\277*\360 \303\263\226\270?0\261}X\215:\255\27701*\364f\000\214\277\325\326\346\0311\230\270?\030\320n\321d\232m\277\033\253\346\326+Y\271?g\315Y@\222\271\227\277\227\236W-\344\242\265?+\034\346V\273\341\223\277\037\205\221\240\222b\245\277\\\026\213\034\313\222\222\277 _Y[r\250\241\2779\276\321\302\005\n\257\277eW\231&\206\207\273\277\001_\314\355E\276\300?\034\356\311NB\356\315?1y\311\374\202\303\270\277;\3206\036u,\260\277\355\362u\341=\201\275\277{\005\271v\035\177\260\277O\2705P\221e\247?^\227\233\006\221\207\275\277\204\000i\224\253\221\262\277T\"\335\007\210I\253\277\014\010\241<\t6\300\277HL\322\223\366\323v\277\233h\035\221f?\322?4\342\321\275\016\236\261?0\\b\237\206_\264?\223\rB\266\345\017\216\277@=\254\356^\256\207?\202\0219\237\377,\257\277\035I\031\251P^\277?\302\276[\372\351Ry\277\233\206\256u\332A\246\277\270A\336:\245E\235\277\304b\333g\371\361\301\277\344\030\371\345\2078\241?`D\345:\325\023\261?\340s\315~\035\241\264?\177\217\227\352UJ\270?\364D\'\3420f\255?\372\253\306H\275\263\251\277\310!\376i\250\355\301\277\207\361\321\016\221\360v\277\355\030\336\202\205\233\215?\376\020\033\216y\236Q\277\337\334\225\370\334T\231?\007\313\207\324\352\004\227?\340l\357\360o\250\305\277\243\251f\257\265\346 \277\317l1,\320\266\265?\270\264\t\225\305\030b\277zI\3003e4\271\277\202\002\236\266\\\226\250?\377w\254\r\367:\224\277\364\030a\220|\020\242\277:H\202\246\230l\235\277\232e1`O\261\230\277I(\255\033k\333\255?\251)D\217\r@\303?3$\340Sy\267j?\236\326\264\217\2128\260\277\263O\365\236s\375\215\277\317\010,\340HQ\226?\204\3502@H\224\243?<\033d\017\304Q\272\277\r\324\377\001\257E\220?\356\270\033\213\240\366\270?\251\225\255!\r\262]\2772\363\177\350\352za?\032\346M\357\306\001\317?\361W-\373\227{\243?\365#h\256C\020\322\277\241]\356\263\205?\243?\231\006\205a\350\022\323?n\247\245\202\352~\207\277\007\230|&#\242\307?\231\234\334\316\000\217\216?\240\177P\227\351\256\273?\211ls\306nh\244?d}\354\363H\003\252?\321\342\300\031\316\273\305?\352\326\t\313N\270\223?\205\360*\325_\212\236\277\027\303$\254\220o\256?\350\275\010\310\024\252\250?\327\032\276U\001\016k\277\"D4\304\377\025\302\277\013\327\230F\363a\327\277\002\243g\261\016@\233?\004g\240v%\000\267?\314\323Vr\014\375\264\277\020\226\032)\207c\277?*\304\230\311\333\313\245?\026`\275Y\231\234\273\277\357\337\352\245\237~\264\277)\365-\r\305\223\251?\356tQv\323\225\244?\256\360P\305%>\177?,\253\240z\341\232\261\277\306f\311\360\312f\274\277\357\260\031\245>\315\311?$\270w\242!\007\253\277\271\023N\r\372\347u\277\237<\365\305\330\341\244?\207\023\247\257\352c\232?\227\207\247\245\314\211\305?\0326&\377#\254h?&u\234\357\242-\221?\365~\255\000+I\251\277*~~\343h\034\237\277_W\211\207I\366\235?\203\223\210~\345[\224\277\232x\345\201\026S\260?\225\206 \222\224\254\271?\222\342^a\332 \274\277\365\324@\004\355\212\310\277\376\2614Y\2360\265?\351%\321v\023r\304\277\275r\300\217\355\370\247?D\363\255,\223\213\312\277\220\321\307\244\267w\220\277\236\362\341\345\027\026\270?I ]\367\034\335\247?\377\232\221\002\'\314\240\277t\354\244\356\234\275\274?\362\365N\'\323\310\310?\326\205K&\177N\244?\025\226e\216\027\035\265?D\217\220\374Y#\265\277\237k\311!-\371\307\277\031Tu)S\375\237\277\241\322I\3314\341\231\277CM\331W\204l\300?\356\344b\340\0072\256\277qf\036\356\333M\242?t\212\222\361\356\200\301?\213VA-d\000\243?\234R\016M|\004M\277\223\275\217\035\263+\252?y\317**\344\252\250\277R\212\306\307\245\372\207\277\027\316\010\204N\271\250\277\374\303\"\331\026}\245\277\311\351\363\303\260\266\223\277.)\005\333\026@\247?\305\036\024s\256C\304\277\330\"\2368g\253\272?\2050sr\334d\241\277\272f\273\203#\337\262?L\026j\224!fd\277\330\203\330\243 \333\310\277|9KL]\274)?\"|\031\357\217\216\270?k\336\357\000\370}\242\277\3015\027\3541{\254\277N\317RT\222\235\302?\317!\237B\200\030\262\277\376\300{\302\367\317\255\277\341\304\034X\315\247\177?Q\336h\344\3670\261?\224\312\242\'\300\017\250\277\340\254\334\266\260r\247\277j\211\025\234\212g\273\277T|\207[f;\303\277`\365j\031\360<\305?\2064-=iu\267?\004\226\273\027\353\355`\277\3635\370\232.\252\302\277A\201\025\022\'m\262?\234 \203\363\'\247\275?\247nPg\327\361\307?U\247\224.bY\274\277\2235\371\257\005s\262?gkr\371]_\243?\277\315\244\241\324y\275?\244\366\376\215\236@\301\277%\024q\347\000\370~?\302W\214\031\265k\223\277\306\224\367\346q2\307?\270\323s\376\002^\273?i?\333-V\226\257\277\361\323\017\0372\324\256\277y\225\177\221Pn\217\277\364\277\211)\005\205\227?\2427\023\362+\344\320?\030\241\362\342\345\367\266?6\277o\312ct\225\277\315\274U&\344X\233\277\366\236L\235\252\366\232\277\205\257jG\000c\301?\254!\321T\335K\210?\271\256m\231\014#\251?\3074\247vbp\302\277\257\204\221Bq\205\276?\214\211\325\330w\204{?\201\010zE\340\262\320\277\354\243j\301+\014\233?\2407\306\2252\330m?\tp\006Q\262\361\276?\002\360\330\035TK\315?{9Zq\313A\252\277\341\312\370.;\314\264?!f^w\2274\272\277\214I\"\025\020\220\260?3\363\305\211\'\257\230\277k\337E\204\257[\207?\213\272W\222\202\345\302\277\212=\265X\201\010\270?\255\244\311f\030h\225\277I\363fP#G\303?qm\"o\'8\261\277x\266\222\251\206g\264?\275Ol\234x\253e?\345\262\377w\'5\310\277\324\331\223J\221_\256?N-\205]F|\277\277\207\341=~q\224\276\277\277\033\023W\341y\225?\317\353\312\330\344*v?i*H\277P\310x\277\337\264<\367\177U\217?x\213\350\020uw\266\277\230D\032i\375w\261\277\235k\006\027\266\252\257?\230\246\33721\303\254\277j<\366\226\314\352\241\277\234Z*\350E\337\266\277j$\0059\377C\306?\364\237L*\016\033y\277\005vU4q\\\205\277Gq\201%Y\303\276\277\215\207\003`\261\204\237\277O\r\376\270\r\267\263?P+\234\037\004\237\275\277\302\354\232\236\035\036\203\277\262\243\247\026\3239\265\2772\275_au\304\276?.\236\336\2515\326\235\277\310\036lu\024C\251\277\325\270\375\372\357.p?\204\004\277\262\034\237u?\252\035\271\202\251\240\262?\262\024\3522\000\332\306\277H\302-_\276\026\262\277,\374\r)6\217\265?\230>)\305\365&\270\277\262\222\323\330\247\321\237\277H:=\277\370\320\265\277\312\214{\037eV\241?o\326$\223\362>h\277\260\nQ\232:\360\272?z\337\315\306\277\356\272\277}X\317\325\013\357\245?|\233m\205[\244\304?\250\374\375\350\270\217\263\277\3513a$\207>\301\277g\"\325\347>@\267\277\201j 7X\004\261\277\2526\210c\3469x?H\313\314\032d\322\177\277fQ;\004\251y\242\277\312\312\031A\177\266\243\277\372\304>\026\366,\270?\341\006%j\337\317\300?U\240*ZDX\274\277\003r\247\315\321\356\323?\362}\344\341\"\013\241?\330\320Y>\000@\261\277vnr\307\375\333\301\277\263\376\257w\367\334f\277rdz\375\336\013\244\277\372\230M&\032\277\265?q\313GZ\025\346\305?:\270x\035\344\202\223\277\334\177F\325\226g\252\277\324\006\030f\343/\261?\345\035\204\037\302+\314?\242\247*\271\256c\262?\n\365\025^6\306\263?I\214\366S\002\366\307?QB\213\003d\216\267?\r\250:\232\373G\244\277#3`\341\276`\306\277Q\020\367\260\264\037\263\277JhO\310\351\r\242?\256e\263f\207\345\264?q[\370H\214\252\313\2772gey\003\014\305\277\302=HC\030=\261\277\007\026Q\374\250\211\254\277\322oW\356\207v\301?P\277:\210\3568\203\277\364\362\214\234\302A\216\277\033\320-Q\344\276v\277\257\277T\262\344a`\277\230\341U\006\002\206\264\277\222\257\263\n/\224\261\277\222j\352\335\306\257\306\277J\340t\034\356\315\277?\362\207\215\332\007_\271?\224\272\3365a.\272?\216\324\215\330I\361\243?p\330\316Ta\236[\2776)f\014\215a\250?\343J\253\025b\324\245\277\217\243~\316#\375\244?\323I\206\345\321>\226\277\013\265f\304(Q\302\277\351\261\241!\255Q\263\2770\201w>\344\363\274?L\270\374\276\313&\300?\021\217eHq\213\267\277\333\267\332\340\214\353\211\277\261\3560\023=A\254\277\203\n\206\277\326\341\240\277\206\235\n\227j\342\264?\223\342\234\364\335\304\267\277\035\314\021U\253\324\221\277m\312R3z\243\265?m\250\207\202\224\252\276?\232\356\014\237\336Q\231?\004WBE\261\023\264\277\005\315K1M)\232\277O\002\344\335\302\025\264?_\270B\343\327\217\267\277\212!\316-+/\316\277{\201$\243s\344\252?\375\317\014\245}\023\271\277\353\355\232t2\264\303?\002~\017\341A\215\264?\237n\343\3575\314\240?~t<\000/C\267\277\210\246\301\247\223\363\301?\375\2648hP`\213?\357\245\314ulh\270\277\327c\340\322W\"\274\277\227@\010\321\211\001\304?F\346\205\n\301\255\241?\223)\023\262\205\'\226?_|\253\010\245\007\311\277\004\242!\277y\022\254?\201\357\261\322hC\266?\374\010\234\346j\033\260?\004\277\0070\2462\240\2775[g5~b\252?~\357\003Cq1\274\277\353xH0R\000\301\277\311\212\210\353\014|\270?\177f\013\366\322\336}?\206\216\223e\253\327u?I\354\036\255\2610\236?|\340\273\327(G\225\277\n\225\232\2750\217\303\2778F\024\302\2546\320?\226>\315\260\210\347\255\277\037\224\213(_\030\224?\246\365\331\236\327\340\216\277\003P8\313\215B\307?\320n$\"z\202\252\277\236\244_L_\n\252\277\020\352\032\231\227\003\307\277d\344F\010m7\265?\331\335,\262m\375\275\277\246\261\362\362^-\321?}\337\237.\2245\260\277xl\024\217\023\237\256?F\213\252\026\021\274\310\277\241D\364\320\372\210~\277\025}\270\337\251\244\206?\264P\364\221\317\021\302?\270\341\3341\250\266\252?=\026g\246]4\241\277\336\325\"?\213D\202\277\345\331\022\342V\212\254?g\315\020\301~\344\277\277m\240$N\371\021\262? >\210\322\007\233\260\277\305!4<\374y\265\277\342m\305\310\377A\272?\322\233D1\030\206\232\277\220Tf\376R\247\261??)\243.m\035\302?\201p<\317s\363\264?\221=\211Ns\252\301?\022\242\325\201x\201\301\277\235#\332\230\324C\266\277uuv)\030\212\277?\271+u\031\231\r\265?\275\236!\022\334\034\304?v\274vg\275y\300?~\254h\027R\221\214\277*\"\000i\201\005\244?_;y\271\226\345\231\277\030\300\225){\252\277?vJ&\277\021\312\301\277\265\355Hp?\236\320\277h+p\304\210\351\177?q\237\363o\234z\264\277$\226\331\252b\035\263\277D\363\237\313\333P\244?\342O\037\213\217_\262\277\274\251\343K?\313\275\277l\2527.\255\356\310?\305\256\017\305\033\240\236\277\276\'\"\357/\310\262?\003\326\034R\352\306\221\277\375\205\016X\002\017\245\277M\004px\372\327\316?\275\3713HB\243\273\277\021K\000\232I\254\276\277\277\2377\374\272<\224\277\2706\362\230,\335\245?[n\314TP\240\315\277\034y\273\205\025\247\266\277\025.\323\307\000\017\234\277\313\033\243\010\013p\250?\303K\353FK0\227?n\3021\322\354\237\236\2776\275\266uF\017\250\277\373\331_\356\037\217\257\277\245\237lr\276\177\271?\344\013\321\004{\037\300\277x\002\206\344\203\365\206\277L`\211~7\241\315?\"\235\344\032\371\247{?\332\344\261\001\373\034\230?4&\025\374\303\277\250?\307\333U\220\272\261\241?\216\205\343\204}bz\277wngOp\351\237\277F\257a\251\306\242\300?/\267\025,\216\204\302?\302\332\214\023\364\364\272\277\365\226\256\307\273\324\314?\371.$\210Z\265\243?\241\235\030\200\313q\272\277\256\271&Y\366h\272\277\014\322\250+\270\367\302?\313\032c\035F\177\255?i6\\O[\342\260\277\3058_\006\367\\\262?\217S\007\315\217\306\261?\314\223\203X\370|\251\2772\037\217\214\2278\224? \346\216.\031\'\314?7\341\362\333g\213f?|\r\306\355P\022\226?\207\356B\365_\356\264?W\323\353\336^\335\301?\2159$\315\223\207\301\277\355P\243\203\264x\276\277NC\277\322qH\216\277]\212\246\324\235\001\264?\216(\337\221\004o\266?\275\242\231\254^\224\277\277}i\203\366\357\030[?6\334G\325S \241\277/|\251\372\200\030\273\277\261\265\032Zn`\323?i\034\020\036\344\277\247\277\361\031\376\275\t\330\246\277N\3519W\270i\305\277~>9\207#\223\236?s\013\3559\345\220\222?\2708\203\031+\353\266\277\024\330\252\204w\214\236?`z\371\031#\211\214?3\372\215\306sf4?\237\214R5\021\266\301\277\263\017_L\320\220\300\277\362\330\267\327d\330\231?$\343\025\365\206\270\236?\236p[\221a\362\243?\tfo{\225\032\254?\365q\n\2401\244\251?\345\375lQj\317\302?\344A&\306\3112v\277\035\330\307 u8\240\277\314\250\331]\316>\276\277\333\257\021P\364\244\225?\244`\374\225*\241~\277R\235\032\235F\325\220\277|q\2726\362\236\227\277y7\034u}\256\251\277\177\000\367I\310\355\221?\255\337\240\336\240\216\261?Qn\224<\223\230\254?\240\325\177\254\241\371\233\277\357 s\326\251i\272?\001\307\201\331\376\275\321\277\251;\275Z\345|\261\277v\277\306\207\025\245\302?L\024\366\202\243O\255\277\203EQ\336\227\225\202\277RC~#\022-\264?@\233\277d\027Q\261?\3336\010\201\270\021\217?K=?\256\024\032\270?\331;\301Xy%\224\277\203jf\250C\271\270\277\0333\341O\327\265\256\277\254\201\266G\001u{?\234\341\325\272\223\230\203?2S\243\033\254u\275?T_z\302\311\212\263\277zH,Z\336\363\303\277cH\314\374\253\353\255?\304\306\242\343\350\027\340?\001\363nD\270f\252\277Vm\335\355\267\262\265\277\256\n\035\256Z\007\265\277Gu\3059\323f\307\277\207w[\273\313\"\246\277V\000\267\317\253\007\226?V\033\257O\324\272\272\277\331\265\357\327\351\241\227\277\004Y\305\217*\340\201?C[\033\321%n\266\277g\331g\330y\316\221\277\265\254\374\207\177D\230?n\020\254\351\254\036\225\277c9\025\262\233\330\274?\316\354\2707S\216r\277u\336\354{\367\217l?\303\270\007Y\233\270\263?<8\224\367Q\024\264\277\222c\204\242 .\213\277j\234T\001\3061\300?vb}\264kA\270?\033o\245\314\246Z\247?\320P6\334U7\303?\207z\231\335\271\032\237\277(\007b\317\364o\201\277\301\372pJ0\205\277\277\254\201=\225x\232\321\277\314\213\344\342\226\"\302\277i\337\343\265\235\001\242\277\007\030\221#3\200\247?\007\370\361\216\220?\321?X=R&\0324\261?-\220\272Rp\363\215\277]\205$\024\002O\271?8\005\024bb\007\255\277\210\257O_\351\335\255\277\353l\357NWp\241?vBvO\367\023\317\2773\030zt\234\254\223\277\322\203\302\213\330`\277\277\215\211*:q.\320?\303s\n\006\034\231\250?\375\017\204\275U\315\241?O\224\240\035\334\357\314\277g\233A\r\357\305\222?\272%\371\212\214\001\325?\037\364T\311\nr\261?\004\206A\354~i\226\277\352\362\"w\235e\305\277UC<B\031%\261?Ks\224\2244\270\225\277\014\300\236\330\265\241\265\277s\267t\375\240j\272\277V<\377\210\230^\306?\226\203\022\005R\335\273\277\264\331\035\310aX\276?nc52\360;\250\277\017U\3721\230\217Q?\203@\213\311\\;\244\277\317\252\232\377$k\255\277\2531(g\265n\273?\254*\336\000\244p\276\277\207\245s\235\274\224\231\277\010\225VW\332\270\220?\362\212n*Q\370\246\277f\321\253\267\321\265\266?\373?\207\240\347*\200?tUA\202B\247\265?\300A\317+\251i\265?\344v\022\3746m\313\277\247u!%\250\034\262?\264JDt\035\271\241\277\205\t/\177;\270\245?D5\263\202\352\332\246?\264\267\024\205\034\347\231?\315\001\242\270\031\224\254\277\201\227\242\302\234\227\324?\025@\337^\004v\303\277\2638W\024\2137\263?\262uE+\314\240\264\277v\226\350\313\010O\236\2772\343\310\224\t|\231?\217\377\207\203\325X\227?\202\2151\333\265\223\302\277\310\022t\356\232\310\271\277\376;\001~I\021\237\277T\212\231\033\r\377\257?\301V\364\220j,\303\277\'\275\346\274\236\323N\277y]\210\220\304\360\263\277p\344\302\na\236\215\277\202:P\376\357\312e?\212E8\035n\001\252?q\3207\255\355\225\313?pB\342\006\242\273\252\277\320\341c\207a\n\266\277Q\240c\377\257\035\273?4\316\310\250O\335\323\277\231\336\200`\236A\240?\237\244\264\302u\270\220?G\202\330f\324\214\303?B\304om\002\022\247?\224\220g\307\313\255\250?\311\n\365NVqq??\311 \324\366\237\320\277\177,\333.w\355\262\277\3210S\261\002=\251?\244\212H\211\350Z\322\277l\343E\033\232\247j?\206m0{\324]\215\277\\}\255\235y\353\301\277\372\242?\325 \311\327?\333\342_\021\340\326\261?\257u!\024o\320\250?\351\037\2378<\002\253?\323\036\246N8\346\301?f\212\220\227%,\253\277F\202q\003\313\252\263?0\302S\215\024\024\301?hk\003\006W\320\250\277P\227\225\307\205\232\300\277\262\021\345J\362\261\232\277\361@\306\207\205=\273?\302\217\036D\020X\207\277l}E1\2427\235\277U\334\t\322Z_\263?+\021^\270\217\330\256?\335\270\362\317\276e\257?\2313u\343\363v\271\277\226\026\025H\360\030\225?\350d\375Z\010\220\260\277vS\247={<\300?\355s\343\2111\236\321?\2374\304\251\024I>?D\272\377:0\243\263?Q\023\215)\242\210\251\277q\350\300;\374\240\275?\036\272\305\'Jm\312\277\264\315\327\035\013\300\271?/\306\341\335\230&\301\277\000G\023n\007\224\217\277\205\257g\302J\265\216\277\323\372\202\')i\254?\237\021K\322\\\001\255?\375CX\341\205z\243\277\243\304\373\215\351\304\300\277\310E\240\005\247.\313?\304\334]\250\317\313\225?t\025\341<\377\235\241\277WSf\221u\274\300\277=n\205\343\330\236\264\277\027\374\343\241\267\235\252?w\316x\023o\305\241\277\237\241Z|\256\201\316?\201\026\263\007\316\235\246\277\250J[\252_\227\231?\306\253\213+\272\034w\277C\264\314\336\353\275\273\277\344M?[\214i\252\277l\003s\273$\321\256\277\361sJ~\t\337\270\277#\335\220\224\371\n\221\277\307\177\037\323Fo\213?\342\003-c\026i\331?\307\272.\031\327\340\261\277N\211\224\355\ta\300?\304\215\346U\360\210\274\277\363F\330\020u\005\326\277g\212;\\M\010\213?\027\177\000b\243\025\236\277\261\024\321J\260\211\265\277f>\243\253\217.\240\277F\235\003\0027\340\260\277^?O\316\226\316\271?\0354\2271\2661\305?B\264\001[\203\005\021?y=\366\255\373\316\250\277\311\203\252\030~q\260\277\350\206\265\271\231\000\252\277\360/\007\330\362\347\245?\244\263cR5\n\242\277)\226V\002>\346\224\277\037g\237\345\034\202\265?\021o\240\021\264p\260?\214@\014d\r\032\212?\243\371\325\177\307S\276?\304\2346B2\007\220?&\215\022\305&\326\307\277{\362\204\336\325\240\212?z\300\305\272\246\005\262\277\350\345\017N\n\004\266\277\030\200\363\335g\003\310??\354\007\311r\032\245\277=\350:k\255\210\264?\353\026\366\232\323\256\273\277\036\251!\014i$\217?-\267\373F\3268\223\277\212\331V\247\001\364\267\277TR\000!\000z\217\277K\201\024z\177\023\220?\361F\336\332\350\233\237?~Y\332\r\222\023\216?\020\262c\342\025J\272\277.\231\236\300\353K\266\277\013\276\223\353`\322\241?d\001%,Tl\275?\232\336[?\230/\246\277\252\313\020]\342\270\251?\032\213w\225\342I\276\277\331\222?\036\246eu?\350umGr\252\203?\365\375<\245\246\344\254\277\200\227\202\240\207B\212?\330\013\333P\235\257\261?\246\007\342\013\254\264\241\277C=y9\331o\223\2779\240<\307\317\311\301?F\315x\002\366c\177\277\252\370\207sF\334\277\277f6\207\261\3175\251?\001$\001\330W\227\241?6\323\014\237K6\260?j\\\231\367\025B\245\277_\355\016\353\216\270\330\277*\270\240\303U\030p\2777F\025\2744r\266?uT\2114)(\274?\372\264\230\217f\230\253?\301\007\237\255\207\352\270?<f\336\224)>\275\277\251\322I\034\334\305\252?c\n\032\232\327\326\300\277~\224\357\330 \313\251\277\274\340\276\304\333\007\277?c\277\343\332\214\327\270?\215\000\352\312\211\353q\277\206\347\007!\327\243\323?\322\215\267\326\t\363\263?\017;@\372\223\332\266?\353\317\017!\231\361\252\277\242\207z\001\270\235\260?`0\205\022\250L\240\277\030S\010\234\315\206\272?\016-#\243\224\030\270?\204\301B\361\242\316\216?\315\310\242%\'\004\244?\006%O\3125\351\256?\014?@\375Y\325\276\277\215Jb\206\264N\261\277\271\341\244\006\271\232\241\277\204W\205\237\021d\257\277j\321_\n\214\321\273\277\376\204\342\272@ \257?\376\363\376x\254\302\232\277\324\214\322p\350\312\262\277&\205\036\260\220\207\254?\037D\375\r\010\310\263\277\241\350\023\024\363y\232\277\206\314]T=\337\267\277z\257\227\322\017\347z?\212\314m\236\355\367\276\277D\310z\334\000\002\243\277\350j\306Y\"t\262?\211\235KL)\325\273?\233\245}\213N\346\301\277(\262\221N\031\346\266\277\003\217\200\317\312\023\304\277T\341\324\201$\022\265\277\245Rms\033\363\260?\256\214O`\013M\211\277\270\177r\r\226\"\302?\265\225\255O\270\004\265?\305X\360\311\205\024\271\277\273\227\tc\300\356\236?\253H\242R\t_\300?c\333\362\334\030\235\265?\205\274\303\2531{\262?\366[\306\032\240\222\303\277\374\332T\321\301m\261\277\304\321\223\327\240\r\323?T;\222\352%\217\245\277\275z\212B\223ww\277\003\311\214\224\273>\206\277O\'\017\357M\303\254?\267\267\301\001P\277\217\277&\313\216\332\323\260\267\277Z\361g\3303\030\273?\312\266\305F\304H\260\277\002\343\217\203\022\350e\2777\025\250\210\376\266\275\277Fp\326D+6\220?\222\374X\026\005Qx?{\362\302\3453z\231\277%=\r\311fd\271\277a \332\327\004\016p\277\035\3528(N\207\256?\226\'\276\352z\310\240\2776\321\004\357\356\200\301?.\213\263\344HY\244?y$*\031Y5\233?p\310~\250\303\330\254\277\357\303[\327YEx\277\331\313\023\357\227\030\251?\033\341\200\303-\026\326?_\223\211\246\221\267\247?\211\322[\352\257\271\227\277\375y\343GE\031\260\277\027u(\247\255\363\325\277\246\245\225\0303\271\253?L\256P\364\233:\303\277\201J\020\304|\021\304?\235A\276\3636\035\236?hvc\324<\337\271\277Po-\250g\320\260\277\223\363\260\363\307\363\327\277hD\377[\317\236\242\277\355\354G2\237\365\256?\257>\337#\344\233\320?\265\320`>k[\233?\031p}\325H\334\260?\230\336H\263^@\300\277?U-3r\364\211?o\007`\210\010\226\204\277\240Q\216\347<\'\250\27731OE\266O\307?mY\353\217\276\244\222\277\254\273\314o\032\276\251\277\364js5\324\t\234?a\024.\203\024=\322?-\217\034\237\005\006\241?\322\035\2363B\352\255\277\254=3\327\232\342\253\277\355\226\320t\000\036\242?\246;M\362\356,\226?rA\020\026d\347\260?\3716\026\362\326\277\201?\275\023\026\356\364\335\244?\002VOzk\333\264?:\273\240#\270B\222\277o\026\014\302\271\364\305\277\"\373\rM\352\212\236?\304bj\360V\261\306\277Gw\273\274q$\262\277c\236\365\367E\200\270?,\023\216\312\021\006\213\277P\026C\364_\212\313?\237\236\350\311BZ\263?\006t4\036\357k\225?u\205e4\345\233\271?G\227\023~\203\003\322\277\373/^Lc\n\310\277 \270v\213\276s\263\277\272.ww\253\356\260?e\312Ge\265\220\225?\362e\005\245\367\333\242\277\345\36642\201\006\272\277\033v\216\207\341j\246?\036\361\330\275\230\233\242?\341\376\237k\317*\301\277WGT\006[\372\302\277\256zIL\215\315\225\277\257\002\241q\272x\256?Y\245{\314\007\330\302\277\320\3409\335\346\332\314?V!\320\331>+\252?|\303B\334R!\271?\025\224\301\376\2142\270\277m\252\253.0C\304\277\342\203D`?\322\217?\274\362s\344\231\247\246?;\223\203|\347*\302\277\3144;\310\032ek\2770\300tI8y\276?\336Q\316AC\232\267\2770\341\267\301\033\020u\277#\370\3630\257\345<?\336\023@\311\263\352\305?\343\010M\303\273M\251\277\010\374[\235T\373\240\277;\376\034&d\331\213\277\226;\321\320\377\317\277?O\343r\233\204\273\257?|\326j\236\213\000\235?\243\262\250\006\332_\250\277]r\024\256!h\235?\007\2223\371\2030\231\277\022\334\226\304\3311\230?\272\262lg<\265\263\277\0373I\310\213U\250\277<\332\376\34569\311?U\205\225\326\363\257\266\277\035\367\304\006\t\360\236?\0334{b\334\361\240\277A\351f\243\340T\253\277\241v\362\272\325-\224?u[y\222.\"\267\277\021O\343\035<\310\260?\031\3532\272\257\330\225\277\005\240r\336\203\200\300\277\376\216\231\337\0277\252\277\033\247\306\334\177\221\265\277D\007\355\215\030U\271\277(\005\264\353\330\215\267\277\0249\t\243\240\246U\277\261\353\273@\230\214\262?o\354\024\315\257\363\306?\350\376V\t3q\276?\237Y\027\264<d\240?\221\302\214>\374\006\306?\306\267\231Z\264\241\231\277Z\274\212\327\'\212\241?\264\213\375V$\027\263?P.\273\253\032b\305?G1\010\033\016m\241\277\265\362vE\230u\266\27789\372\257\315\374\237\277f\2406\314=\273\257?\246\221\037\362\337:\266?W\361\305\304)D\226\277\231\354\023\2208\225\263?\242\334\246\255{\314\245\277hH\327\227\210F\257\277dMc\244\314\254\302\277\221\337\324FT\264\313\277e\301\312_8G\232\277\307\367\002\343\311\270;?\022\001\001ZXA\314?\0108\231\037f0\224\277\315\030f\023\361$\244\277\203%\033\315~\301\307?iJ\236WW\303\302?\022d\355L\033\252\314\277n\037\314k[\212\303?(\205\271\013\321\255\312?\250j\370asO\263\277\2141^w\022g\300\277\031gl\357\307\375\264?a\350\201\303R\335|\277\357t\327\3543\026\260?l\361\005_~a\311?\246\3054\305|&\255?\317V\355\235\316\212\263\277\0369\356\002\365d\241?l[\371\357\301\214\241?]\177E4\241\253\221\277{\203\233~\316c\246?\036a\"kX\315\244\277n\316\317\314\355\257\275\277\347A\032\016\316\024\300\277F\325\244\330\025\305\264\277\343\333\032\030u\315\240\277\027\366\207\025\3344\272?\356\214\205\361r\177\220\277m\372\363`>\226\235\277$1\'[X\300\301\277\356\002\366V\242\377\267\277\320\'\023\250\232\206\247?\232\216/\2729\034\213?\371_u\314n\215}?\3501\264\327\200\231\311?+\006\263\3561\010\271\277=EIie\234\267?3\251\234\250\333m\227?\261\351E\353\3613\302\277\222S\375\213\335R\245?\220\304\220\211\243\033\241\277\346\375\312\366\001\307\222\277\222\270\211\rsR2\277\360\004!%\222\360\265?\014M\314a\251\n\260\277\214i\234\322\311\207\303\277\032\353F\211L\317\212?\017\375I\326s\246\255\277\034\025\226\2443\325\313?!b\303\016\304\230\237?\362\341\346\206C\204\247\277\350\373\336\177Hum?\334\200MP{V\240\277\024p7A\036\304\305\277\373\277\251L{\275\250\277R\317+fViu?\n\302\254\356\025N\300?\220rg\361\226\306\303?\245Z\034\324 \250\242\277\025rF`\241\256\220?\007|\005\356\271\360\264\277^\271\363\005\354\331\260?\312\346\321#&\234\254?U\t\336~\014\260\220?.\025\210\227\"\035\222?\023\317\361\326_\240\246\277,\3452bSI\260?\002\270\227\210\274\276\272\277\247<\367\222\241C\236\277\265J\215\201\233=p\277\347\273\202:\321\000\266\277\233\n\223\317\216w\272?\374\272g\271\315\177\212?!\206\271.\312\323\226?\304\000\303It;\252\277k\330\033\034\361\334\244?\242\005y\263\220P\262?\244g\234\342?\376\306\277l$.\001\247\326\212\277f=\341_\016s\263\277\224V\236z\224\323\257?\032h\0055\243t\302\277\301\263\204D\376C\263\277\026\362\035t\002\234\235\277\235\n\330\212\004|\266?\352\311\314\333\324\346\242\277\360\2046rQ\261\225\277\362/\243\177\221\273\242?c5\256i\352\230\237?\357|\344^m\372\246\277|k\341K\251\033\247\277nG\275\322\273\022\267?D\251\030%B\264\271\277\345*\3079[d\246\277\202\311,\350\264\177\246\277\232E\337bgP\275\277\321\254(\340g\024\236?\201\321\254\313\007+\241?\226}Q\246\315\272\240\277gL\005\344]Z\245\2770o\366x\265\034\251\277Y\\\246wF\303\240\277Yq\r\236\262t\320?\313\356,\020E\006\253?mq\363\207=U\266\277u9\311oM\374\243?\272\2349\006\310\300\234\277e\361\005\300\324`\264\277\264\313vR\017\024\253\277\335c\2235o\t\277\277\224\355\274\005\023\003\301\277\010\265LF\336\336\304\277G\323+\202v@\243\277\230\362+u\202#\310?^\235f6)\177|?\351\210\250\'\370\213Z?\016\006\375)\361\177\314\277\347\023\2277\217\257\221\277\213\002bY\222\201\302\277\362\212\313\375\220\267\324\277&\357T\007D\036\333?\343\262\351;\370A\237?V\252\207\035\210\034\240\277\251\314\253\275P)\324?\2413A\005\370l\306?P\222gU\350,\267?l\217\016\204~s\270?hh\023\252\274\227\312\277\010\311\336\264\333\262\262?>\306\202\224D\230\262?g\017\2477L\235\311\277W\223\245`V\021\215?\232\251X\304\211\302\260?p\204\233\362\334\\\256\277\252\256\260\377\301\036\275?\020\357\371v\236c\264\277\345\313\353\202~\236\247?\000a\217\370\213[\241\277K\014\236\241\364|\261\277\356bCf\214\035\240\277P\262\354\201\331\343\262?pdI\206\304\301\245\277)\357@\256\214\320\255?\212}y\017\035=\232\277fc\305j\314P\225?\211\017zGr\316\261\277\346`\005\300A\365\221?\234P\023\246W3\265?\356qW\354\263\024\333\277\230\374_\'\r\233\246\2773Vf6\022\307\310?\312\312\360\303\017\204\265?0\230\000\377\314\r\217?\236#\322\313\201\312\233\277\364\037{tal\303?\260\r\211m)L\216\277\253\t\033\256\356m\303\277\337_\332\230\257\006\267?\311\223\277,\364\344\266\277\207\273\234R\014\312\230\277}\345\022)\331&\200?\017\0105\330q\247\311\277\322bR\257\266\235\310?\336m\234\274\245\257\225\277\322\303v20\036\311\277u\260mV8Dh\277\263\210\344\260\3474\277?]\355\360\275\300Q\222\277{\205\305\032\033\274\272\277\364J\2455s\345\276\277\312\240\270l\267a\250?\2436-a\360M\301?\225\022\334X\0339\305?\324\276Y\300\007\030\263?\270\326i\370yh\305\277\347\210\342\220/0\244?\274\025\332\224\307N\300?iC\2661\002Y\265?\244\350\263\264\244e\303?\037Vk\373,\257\235\277\355\255 \375#|\274?a\373-\261\252Y\213?x:\\\004\251\030\242?Nj\2018\325\364\250\277\030\374\200\236F\230t?\235\272\334\0042Z\204?\037T$\365\310\340\310?\003z\220?p\316\252\277\2755=\304\352T\314?\320\266\222\370\246\204\216\277&\016`\367yx\303\277\351x\003\267\222\264q?\226G\325E\213C\237?gm $\252\376\252\277\211\376\361\377?\273\306\277\211\014*\026Q\246p\277\221\01495+w\246?\3601\337\275h\266\220\277\014\300\"\035\214\256\225\277A7!\020g6\201?\324z6\342\336r\317?1OiaZ1\265?@\014\345\252y\007\261\277X\360/\233p\362\300\277\365\033\303]\266>\326\277\207\356@\010\372\207\216?\234\033\260u\366\360\262?8\327\32706\256\263\277\330\237?\333\t~\305?\255)\034\342\316\223\201?%\027\367K\351\001\257?@b\266K-!\232\277\346\305\262\257`\232\260?\376\364)\277.\326\271?9Nu\"\247\333\220?\035\"9\003\257\345\255\277\220\205\217\345\230\320\260\2772\351\273\234\222\204\277?\256B?7X\271\253\277 {\210\225\207\225\266?=\357\3167\204\037\242?\244\266El\205\351\240\277\037\370\260\\\317\312\226?D\320a^Tr\206?\027nw\034\004}\242?\355\305\236\245}\362\315?\325\305\270d\216\242\210\277\004\317Gi\3559\243?c\222\001\254=\216\313?\033\353z\325\001\032\205?g\024dN\347\323\267\277\032\277\235~\005\264\251\277\373\212\340\207\244\275\257?\211\232\224\264\240<\222\277\034\350\255\3764\260\234?7]2\217\347\270\243\2773\023,@\243\033\266\277\225\205\t\242\324n\223?sO\347\324\350\372\305\277\364\302\020Qn\241\214?\277\321L\365/&\264\277}\301j-\020\342\210\277\302\315;b\r\356\273?\316\345K\2269#x?\031\306C\\\372c\302\277\373f\225\234v\302\305?o\355v\237\321`\276?a\261\243\333\300\221v\277\'\241\264\376A\315\244?\231\327(Z\311R\272? \210\010\315;^\241?|\212X.\230\\\260?\'\207Q\363\212I\231?\303\016\315\013\220L\303?\034\345\376:\206\nq\277\206>\246\315\r\004\206?\261\361\302\177\306f\272\277\327\324Cc\001\315\250\277p\343\317*\'\221\221?;U2\001\265\277\305\277^\250\226\372\316\020$\277\352\235X\247x\313\254?\363\355tA(Y\300?\003\333go\316\375\275\277\347\352\277O\367a{\277N-Ri\327\247\222?Kj\2279\324\231\234?>\351@\354\3277\230\277[\267\2050\234T\243\277\2656\322\222n\005p\277)\205\'\340\263\n\274\277\215\344\371\251]w\270?\000KfF\304V\241\277%x\271\224\251\354\261\277\277*_*\375.\275\277\004\320\351\004T\234\233?\207\256\2423\317\243\273?65\'\216Q&\224?\001\372\377}\340\036\274?\362\022\031R\016s\205?\006u\374\023XZ\244?\032}\214\226\347\251\255\277SN\223\264\r\206\251?\320U\241\036R\304\300\277\310X\260\203\'\201\327\277\220RR\216\256\306\214?J2\373\2116\033\276?\277\274E\205~\213\256\277\277\237\001\234\357\303\304?\t\3072\340\371\"\272?n\233\020K\217\232\250\277\346\227\203\to\033\272\277\353\224\030):o\262?n\rT\227\215\315\243?!R\371no{\225\277\260U\311\253\336\244\276\277f\375mI\365\252\242?X\371|\216\221{\276\277&\234\222\250\324\312\320?#~\2326\211\241\227?\336\336\343\324J\373\272?\007\323\256N^\360\210?\353\274\314o\271\347\216\277\2646\370\211\020y\251?jY\177\365T\305\270?^\243\206\247\300\375\232?U@\010\311\236\227\200\277\016RW\202\275\322\240?\227/\037-@\037\267?k;\315\212\312Z\243\277\325\356\204\245N~\205?\341\326\0334\272w\225\277\356\230U\210\306\305\312\277\033|oF\304\375\227\277\025\367s\230S\233\271?IU\276d#\243\246\2776\354go=\276\243\277]\230i\370\376\206\262\277h\013&\345[\024\273\277\344\037\315o\301\355o\277\320#vZ\007U\226\277#\005\372\330\316\264\220?\345hk\035uZ\270?\005?m\341@\273\300\277\370\267\337\277\037q\261\277b\017Q,\033P\277?\356S@\364 2\250\277]{.yk9\262\277\375p\275%\034\363\267?%\216,6\256v\306\277\r\227\240\215&R\303?\200B\353\304\322\361\261\277e\331\323\361\002g\260\277K#S\251\376\360\241\277\371\331\356\215\267\252\221\277\031\313q\264\314Tp?1m\316z%\032\261\2773\016\263)(n\300\277\005\'\362\2432\334\227?\363\n\330\245p\344Z?YN\033*Z\322\241?\321\267%\302\341#\257?Yz5\037A$\303\277\357\221\353\337s\207\267?u\245\030@\361H\303?\026\375??Q\231\212\277h\267N\031\246\t\276?\241B\024c\326\225\307?\326\n\355I\274\332y?\247\0376\253\224\035\267?I\255\347_;`\270\277\276\226g\373\334=\237\277\332\274.|\243e\243\277t\376z\355u\361\242\277eT\254\244r\207\307?h\370>[G\255\202?zG\356yk\317\303?\314\266\351\232\206\223\312\277\217\344\242g\303\377\305?G\244yBk\356\246\277\0039KM\306\311\270?\237u\211\324a\265\244?\226s\342\375 \272\231?\356X\017a\377\203\235\277\263\2374TCI\272?\374(|\335\327Z\300\277\332m\376]\000\017\206\277`1\3731\023\r\267\277\204op;j\200\266\277\236\224\327/]\035\271\277\004\336\365\223f\213\264?\025#\262<\210-\262\277K@\207U?\220\260?\336\227#~\216\207\261?H\232r\271hS\260\277K\376\n5\254\335\251\277\364\354}i\022\303\243\277\324\0170!\260H\200\277\310M:\237`\315\261?\305\305\340y9\005\271\277NB:Q\270\274\241\277HP\243\214\247]\254\277\247d\333\322c\023\300\277YD\0362\272\205\267?&6\'q\034\352\262?\020\210\374\261Eg\250?;\003\2555p\006\300\277\275C\364\344\032\344\230\277\367\014\014\017\273\035\227\277\370Y\020A*\226\251?;\177s9\326\353\245?A\3144\200ykd\277\3663\312\022\017\006\250?L\261\274j\3465\300?\334j\372g\3150\202\277\037\020N\222\300\326\203\277\245\336\335\270QV\221\277\344\235:\021\376\331\241\277\006}B&x\362\207\277\371x\230O\025\343\306?\223k\207]l\316\302\277\323{Qr\265N\237?\007\306\377/\333)\235\277b(\226\020\035h\271?\217\033!/\322d\310\2770\177\032\267\257q\264?\316\373Ez\014\320\243?0\322\300O\241:\310?\2726.Kw\354\215\277\021\017o\204\364-\177?\244V\202\377P6\313\277\355\256c\2611Lp\277L\001\025\021J)\265\277\275L\272N\272\205\262?v\325r&h\246\266\277\311\346\234F\364\202\237\277=\253W\221\325\034\250?\352\2070\323\363\320\261\277\314\246=\r\017/\302\277M6L\307\\\240\272?\277\273\311\354q\014\250\277\353\310x\273\332*b\277\0160y\213\203q\252?\241\265>\031\216\217\264\277\257y\344\034\271\275\330?\025\210\\f\3413\222\277\374\206\204\342\331\306\202?\035g\215\351\374q\310?Z\227\241<(D\322\277N.\317`\277\255}\277\246*\033\021H\376\246?\270\223\030\'\201\330\305\277nA\326\002/\201\243?B\232s=\014\375\242?Xr\204Z\201\335\266?$\240\210n\257\216\304?\264\006\300i\033\206\264?\302\322\254T\207k\234?#\267\025U_\227\261\277{\247\335\273rp\260\277\223@%8\224<\312?\232n\332H\321\321\266\277\367\311\3037x-\322\277\215\027\353\220E\'\253?\332|I\210>\216\225\277{\322\006\213\352:\263?j\225\031\261\221\231\037\277\277\240\357\335\237\344\252?e\002\315\3652\'\271?\tt\306\256p(\307\277\364\323-\203\340m\230\277Q\376\031-\004\300n?\003\317ie#f\270\277\023\032\361\330\375\200\235?8\247\335\257{\372\244?S\003\\\230\267\336\241?\035D)2\275\373\277?Q\346\243\217\370\243\270\277\r\274u\243\246\364\233\277\036 \025\317U\034{?\275?\'sF\260\302?dM\323\200\017\226\220\277TzpF\364P4?\372\354#\216\213c\323\2771\234\316\216Mi\271\277_\271\234\031\262\263\227\277\365s;\035#b\301?\014\2254\375\272\350\211?\332\325\026\032\362\315\260?^\341\334\032\231\277\323\277\264:\343\3163\322\316?\253;@\303I\264\272\277\223\300\236\262\233L\256\277\210\301\330\347R\215\241?\2576\231\212\234_\260\277<\342n\320\003\007\263\277\322\346_^\236w\300\277\263\204t\213x\331\247\277\350\0231VHu\252?\020\002\334\351\302\177\213?\354\372\331\317\002\266\302\277\306\364\203\027Z\237\241?\272~\221\360Y\3361?I\350\220\034\177\210\225\277\006\234\337\037\004\205\334?\361\262E\252\3179^?E\264b4\020\310\265\277\2069\366\315\343e\277\277\007W\265\016p\223\267?&\221\204\300P\006\177?kI]\317\363\207\223\277#+\217\004\212\223\300?\212\214\001YY\020\214\277c\373\2074\245\024\273?\261\033\302/\242@\262\277\266\235\003\0376b\252?\256<UY\367\327\302\277XQ\241\021\025\245\306?\016\303{\024\200\364\320?\200\017\273\210\3232\231\277:Y\004j\201\003\225\277\261\0077\332\262W\270?\357%\240(\331\211\236?|\307T\r\010\270T?\377;M\315\030\251\304\277/\\\325I\206\247\315?\304\311d\317,\275\266?\215\025W\010\250\037S?-j\031e\242g\305\277\267\236\276\245\324e\217\277\'\2776\310Z\233S?5)\276a\333\332\270\277*\247\366\354\300\352\324?\217?:\341\270D\261?\331\237\004?gF\267\277\332#\321\036\231\373\254?0\315\306\335\335\261\266\277H\261\034I\316\030\233?\314\343\365y\305\253\236?\\G\340\253T3\311\277M\035|\370\222\254\225\277CR\241\217[(\276?h\021\225\323p.\216\277\303g\236}\271I{?M\177\221\202~\361\245\277n\305\253\331\351W\304?\220\306\001z\247\013\251?\304Vy\3126\376\301\2773\013\007I>(\211\277\212\013\3366\232\033\243?p\'\0209\360\215\250\277b\323Ycn\273\246\277\260u@&\323\250\265?5x\277\212=\241\274\277\370J\342\321|\t\253?r\225J\010\345\307\257\277\220\265\240\027\027\262\310?O\200\027\257})\242?VU\"h14\246\277?\377\276F\367\363\240\277\221\315\356+\232\331\320\277+\336\374\214y\266\270?C\312\021\333\362\237\260\277A\226\025%\254~\262?\034\220\343)\345d\250?\223OCY\005\202l?\216D\0176\007R\260?\220AT\213\355@\304\277tgoV4\246\226\277\323\332g\312LZ\255?W\376\031y\241\030\306\277;\323\300\32275\232\2770\330!R~\244\270\277\016\272\355N\356\014\227?B\026\375.\354\010\273\277\344\023*\302\370J\302?\376\233>\266tK\306?\211K:\360n\236\262\277B7{\303\333\014\311?1\320\350,\377:\244\277H\226\275\350\353\246\264\277\271\225\356x<\261\257\277}\224\265\312\332\200\236\277\223\237;\022\265\336\300\277\271\257N\320\367\034\307?\370 \372m\030\350\207?\213rZ<\014@\247\277{\320s\177\202\336\271\277\332\325\246\200!j\261?\255\273\324\370\315\224\273?\376\025)b\022A\234\277\207_\306a\233\343\273?=-CM\222\'\262?\032[\214\0230\365u?\354\221\207S\207\025\220?\255\31317\\\224\306?\217\214\362\373\266#\242?1\004D\323\300x\276?O\031\006\025\266\276\330\277\324\345F3\230i\232?\\\241h\242Wvd\277\342p\203t\331\345i?]z\341\2505\333\266\277\274\332>\212\207+\224\277c;\nd\343\314\272?\275\nA0\350\t\247\277\202\010\324\303\034\202\246?E\000\324S\321/\253?\242\342\376\311Wrc?\'\023\252\034\010\033\257\277\263a@\264\340\355\225\277L\231\016\177O^\303?\222\010\273\007X\003\307\277\346\251\214\002\"\347\177\277\342\225\2511\212j\274\277\327\266\026\226\267\232\203?R\311\344\014\221\315\325?Ua\377\226\270S\306\277`\314\376\352)\275\260\277s\343=\\V\363\255\277\245}s<\364\237\261?I\203\371\301\204(\257?\344\363\016W\214\347\242?9\353\035\231\267\361\267\277*U\362X\262\321\225?\177\377i\323\027\216\301\277|T\027K\220G\271?\364\245hm\016\231r\277Q\273\r+\nv\242?\360X\013\303G+\260\277d\264Vr*I\262\277\036\307\005\004fb\274?|u!\245~{\230?\007\\\261\221k\241\255\277Btx\245\362{\252\277+(O\244\346\256\245\2770\263\212\230\225\315\265?\006=1Q\2216\252?\223hE\023e\377y\277C(\300\242w\016\252\277,\002P\2726\254G\277\305\214\326\325\0175\265?\254\001`lAN\276\277\364O\222)<\001\253\277>\274\243\210\257=\305?\321.\230.\025\031\301?G\271%\265|\370\251?\337\2626i\2475\225?yxy\r\245\252\233?\377S\260\tb_\210?6t>3tG\257\277*\206\246{\300/\305?\336\026iwTp\177\277)\352\'\223\325S\224?^\222\240x\360\236\300\277\307\355\263\326\202.\273\277K\311\364k_\305\207?\244wS\3777\370\301\277\342l#7\355\334\257\277\271\223\006\2027\204\260\277\016C\317\216\320\240\271\277\322\032\224\336n@\277?\035w>BI\236\301?\255f\324!\201/\250?X\227\215N\330\033\266\277\010\013\010\222\244\'\321?\232<\230\000\024/\262?\277\260\224\226\371A\206\277Q\261y\374\326\245\256\277\326\227\224\257\271%\243\277\270P\305\212(\351\255\277\370;\221\"Tn\270?\376;\332\263\271\365\305\277\272\201\005\337\227\243\243?n\240\264N+\247\300?\315\231\2160\246\222\256?`M\316\350\303\010\202?\232qo\\\344\256\215\277)\360\177\300c\254\204\277\245\242CI\231\225\270?\017_\314\023aB\231?\263\232K\305\3676\274\277\317~\222\3643-\261\277\206|\314\0145\262\257\277*w\202\253\335n\305?\222GC\000\210!\275\277f\014\r 1U\340\277\005\312\276\251\330\235\264?:$\0332\311\261\243?;\264\233\376\034\034\261?\275:\224\353{\200\241?.\326\307p^\351\241\277/\321:A\370~\203?\205\360\025H{\000\217\277\264\335\222fK\217\277?\210\241QW\356\376\251\277v\273\337\357\207/\221?I}O}@\375\260\277\302\000\266\341\332\334\270?Al\271\360$\320\276\277\000`a\251XZ\323\277K)]\234\222\307\250\2774\t\256{\247\231\262?\245\017\337\370Q\004\234?\310]\rk\005\261\205?Rd_\273\373\277\243\277\341\377\354\326\364R\214?\214Z]\213xX\311?<;\234\310\3625\246?\361Zp\271\261Q\256?\351\333\242\360\333\036\325\277\367\257\235E\300\370\237\277}\356\355?\332\033\302?\013\324\273\322\347\205<\2773q\274b\352\347\220\277\255sR\216\307g\261\277\007\375L2O\307\216?ZU\274\247\256\254\275?\276Fs\210\017\331\274\277(\003\234TMe\232\277\243\2260{\252\n\232?\034\t\340U9#\302\277\3724I{\224\225\270\277L\377\272\177\366T\266\277\261\257\253\261pz\272\277\233\311\213\230Py\234?\002N\212\265u\036\300\277#91\021%f\231?\273ck\336i|\271?\366\037\036\241]\014\277?\026\233\365\315\201\244\247\277\273\262\224\221\351\320\303?\335F\013\354\217\333\264?\2740\211\367h\235\276?\221\232\347\363\025!\277\277\365\240v\"|\006\276?\306\260\342k\267\377\261\277a\330)2n\311\270\277\227\r\3254\035w\303?\n\224\023\360\255\241\303\277|\246%\022\326\r\253?\353\314+VC\230\275\277Cy&s\227S\264?\264\267\362\345\034\261\300?\0371@\242}\253\237?\017\206E\324M\001\272\277$\317\342E\005\364u\277\362\205\312}\336\032\262\277\374\2318\365M^\252\277\032\346\327^o2\262?\244\203R0K\206\204?\234K\221\314$\217\243??\311\216)\216%\307?(hq\262\334\000\237\277\236\036]+%\315\300\277\272\327\252+\356\004\273\277\312GA\'E}\325?\343\234\366p\237\330\266\277\250\230\0174\307\265\264\277\010Z\371g\306\340\246\277\026I\004\212Ml\303\277\272\357\027n\304\020\223?\t\307\345\032p\356\220?&\340,\271\320\305\271?\204\217\347x\377\001\204?\350\211D;\237\037\270\277\225\304\312\321\365\031\310?\355\346\206#\330\214\302?\347\337\323\001\376\305\266\277\326s\025\311\241o\251\277i\326\334{\002\200\265?\276W8\350\352\264\216?\007w\004\332_{\266\277\313Q\352\314\250l\204?\022-\n_\312\327\304\277S\223i>\273\225\270?\001\224\363_4 w?E`\227k\274\r\255\277\266\024\203\276\201\364B?\326\235\r\374\324\264\302\277\341\214 \230\277\244\314?p\323 9\371\355\263?\257|F\030W7\214\277\2674\3357\276\212\305\277\251\224\007\312\'\344\261\277\004G\342\014\221\320\300?\246\251\013\302TC\237?\026ou\235=L\302\277\016\257Xt\364\373\304?\026\013\314Kj8\226?\306\236\217\351\271\005\261?\235\257\324\322N\334\310?!\373y\273\035Ha?O\273\010nK\007\241\277S\373k~\2653\263\277`8\030*\020\310\231?\213s|\000\177\370\250\277kS\256\007\204\320\251?\255\272Na\301\013\251?\201W\003\346\300\304\261?\3673\260\254\"\311\262\277\203\331|\330\2674\266\277\006\337\3265gv|\277\237\362\356\376\035\271\272?\244\317\246sT\262\220\277G<\241\007\336X\261?5\363\333\306\326\265\221?\365\212\000\313%\211{?\222\251\253`\006\317\272?\227D\033\253l\025\234\277\373^\000\2407j\253?\232\3416\036\352\372\256?\262\261;\265Im\323\277\325\022#\004\t\205\303\277\033\332\001\355\354\351i\277]:9\222\355t\305?-P\362\233C>\266\277Sf^\341\177s\251\277\227~\325\\}\225\234\277\241\353\305{cT\303\277\316\275z\233Sbz\277\321t\277\"\304\301\246\277`y<\365\366\200~?Ve\\j\022\252\266\277{\315\007\217\316\304\230\277+S=\230Bm\237?\236<\021\274EJ\324?\225e\330\271\371\035\273?\356M\023\207\030>\260\277\334\024K\356\356\245\277\277\214\307 \211\246]\256?J\307\177\207m\261\235?<\234\307\375\273>\257\277\220\214\321\2301o\330\277\240\030}\210m\236\247\277\333\353\'\247\222\365\202?<\333\363A/\211\271\277\205\306\325\243\033\352\243?\335\313\213\0230\036\302?\335\003\323\314\027\272\302\277 \005w\325T\021\300?\014o\341\267I\370\271\277\007\272s\361\221`\245?\232\303\016\007>\323\302\277\311\264\034\235\244u\253?\r\313\353/\200\256\270?\002\255+E\247\333\264?7b%\035\223\341\307?X\340~E\343\303\237?\226\032\036\267\007\215Y\277K3\307\233\004\323\244?\274\370\3637\"o\246\277\033\2219\000[\377\247\277\215\023,x\274\341\255\277g\036\026~\347\217\217\277\030c\'\000\032\260x?W\246\034\320a\216\241\277\351\215\225\221\2470\300\277\364QU\001\000\177\254?\227\t$j\026\314\252\277\275\347q\264\345\270\267?\336\034\331\023\\\321\321?t(\362\0136\003\262\277\237\027\300f\316\244\233\277\347\266\344\321\261\007\235\2777M&\022\323^\251?w\237\360\351\004\375\207?\364\323L>w\256\276\277tS~\201\224\372\311\277\360\352\211IB\303\252\277\247\036\224\356B\335\262\277\324l\245\342\336\310\227?X\031\374o:\001\177?+3\313\376\225\305\213\277\207\241\032\261\360\r\241?\243\022Rr9b\205\277[\323\370\310\336)\206\277h\335\035\237\325\332\240?\030\306\300\3445R\245\277\347m\277\216\rA\271\277\025\240%zp\020\243?\306\'\356\035\2149\317?\343\020\275{F\232\302\277\342#\260\277\244I\226\277)\3460L\374\261\275\277\317`!\200\334-\260?\236\325\'l\303\235\311\277\234\002\266\004\272\033c\277*03}\224\345\260?j\277\301o\255\013\205\277?\001\206\227O\300\300?\262\322\333J\347\372\247\2774\00662pn\275?\220h\000S\016\000\246\277I\031\207\302\277r\233\277r\001Pv\231k\221\277\245\004nF\375\342\261?\356/y\243\275L\242\277\236\304\215\313/\r\270\277\032\335>\321U\305\235?\277p\354\341#y\270?\0069\202a\256\271g?\353\305\263^\177\261\263?\250\023\247\305\032^\302?b\355\205[\025L\212\277\2164\203N\300\242\270?\312\325\247\302\234\020\310\277\265u\351\257\365\226\210\277\345a\265\216\225\231\301?S\304K\363\325\031\273\277s\027\356\335\006\205\302\277\334o\033nC\001\237?\343\312\270v.\262\251?\353\312\0074\r\356\304\277L\245\030\260\006\323\300?\252\224\2251\027\251\246?>\314\375\007\374\256\254\277\343h\315\361\363\255\303?H{)G\274\257\260?\023\352\236\016\233\237\254?\236\263\000\246\355>\244?J\017c\312\322\217\236?\373\273RN\313+\224\277O\226\301\214bO\253\277\236\321\r\007\247~\275\277=\303\"P\t\322\260?*\250\007c/\360\232?\'o\227f\025\344\263\277)\273\314\235h\230a\277M\035D\316\254\337\240\2774:\022,6\372\271?\257;mcT\263\322?\205\252N\226\206\035|\277(\241g\222\206@\262\277\341\352\246e\263\314\304\277\321\377\321\247\256I\242\277\246\002\"b\217\262\262?K\374*x\375\022\300\277BJ|x3m\235?b+\177\000\370v\261\277\276\t\217X\230\314\265?S6\266\n\3256\310\277\025/k\222\200\371\304?\005Q\351P\357\030\244\277\010\252\357^\n\312\241\277\275\013\200\316\221\010\301?n\324\237\343m\314\317?\253\336uN\275\032\204?\221\256\332\262\361\261\227\277\203\025\036i\265\006g\277\272\0378\305k\301\252\277aQ\267x\263\355\261\277\254u_L\000\354\276?\322D\330\314^2\247\277\263\213\013\323v\221\266?\301\322\306[\202\257\277\277\315\304\307\317\322\234\206?\034\246fsU\210\250\277\005\255\025\214v\262\261\277=wlV\226{\247\2776Y\013N<\032\244\277&e\255\230\233d\255\277\217\210|\260\276S\255\2771\025\326q\231Zw\277URC\360*\266\260\277\310MW\021\355\327\254\277\363\025\342\342\375\016\330?Y\3045X\014`\254\277#SWU\262$\240\277#$eE\207\334\252\277\345E\204\203\3665\240?\250\t\252\302\347\010\246\277\377\233\233o\'\'\265\277\247\026\203\025g\216\267\277\307\374a\245Od\260?\013zo=s\023\227?\'eag9\351\226?\336\210h\247V\322w\277\034\007\352\315\010\036\300\277\335\322_\330\031\001\241\277\372i\321\317\211\340\332?|Z\035\207\322\016\227?\232\216\223H\007\025\253\277\241\244\337?S\275\240?\312\205\310\344<\211\225\277\322\220\246\222\365\030\257?*S\360\253C\260\300?|\244e\3625\330\214?SQ\270\020\237\330\227\277;\027|1\256\354\270?K\026\350pp\253\323\277\307\371d\211\367\243}\277`\322\342\353\223{\277\277\312\325VXM\373\273\277\014\344\363Q9\365\320?\326\227M\t4\254\247\277\371\303\007\300\324n\243?\311\262\261q\027\"\231\277\3347\035\001\220f\263?\243\206RJ7\302\225\277\215\275\355\306\364\332\266?\r7\346\033\331\360\315?Q1z\305\352\000\255?\213\324(\032U:\263?\367\324\315j3U\325\277\330\234\312\344];\226\277\023\205\367\260\251\300\302\277\352\030\002[R\272\217\277?t\255\033\262,\272?Kw@\335\340%\227?{\352\220\205o \274?\035\317h\251`\236F\277\236\005\222\210\005>\303?\305\0042\263X\340\221?\331&\364c\231u\263\277\244Ki\232\247\350\225?\nF\212\255\236y\245\277\301\010\234P\203F\272\277\252\251\250C\261\\\307\277\323\010\000\033l\200\250?\267\037\3554\020-\240?\274\336\360\257\357\255\315?\005\260\261:\356.}\277\016\306\037\351ER\260?\3358\026\377\2339\257?\364(\233\212\361\236\263\277\3247\374\n\262S\260?g[\260i\375\204\221?1\344\355\273\360\242\240?\013\n\303\223\342\203q?5\212\025\214\177\370t\277\234\266\361\267\032|\260\277\000J\032\356\201\323c?\247f4{\004\313x\277M\276\343\376\342\032\261?\247\025\331\245#\201\223\277\331\326\002\334\266\\\202?J\032\222\ro\254}\277\255\367w\263\026\031\310\277\274\336\375u$I\302\277\032\t@\257tY\247?\221\326\210aP\322\273\277\t\342\236,\330\206\304\277?R\316f\367\244\303\277VV\222\262H\263\235\2779\027]\305v\237\305?\325\031\271;\336\310\240?F\327\307\t\3254\252?: =\177\220`\233\277.\352\352\367\250\325\322?h\2230_\224\360\223\277\r\002\357\r\313c\252\277/\375\326\305\177\270\266?\255\271[\240\307\356\270?\361\224\312YC\333y\277\370\270\352\326h\007\211?\215/0\211|7\252\277\034J2l\367\230}?\215\\\024\365\030\357\204?\255t\223\207\206\343\272?\336=\305\213\232\351\264\277\202[Q~o}\221?\215\301\205\001\241\373\303?\t\343o\375\\\331X\277|J\321\207i\321\276\277\230nb\316\217\262\254\277f\373T\264\246\260b?9\'\360\216C\013\270?v@XJ\"4\263?-\204(hi\352[?\366?s\246\263\022\234\277cx\200\365j?\265?\026\270H\252\233\336S??>q\311n\026\301?\205\342\376\305\272\022\321?\240\0303\312\333K\251?\326:\361^A\257\271\277\241?\372y\241H\307\277\341\035A]?v\312?\365\337\213=\330\265\225\277o\337\262\243\2068\252\277QK\223fVs\300?\r\246\313D@#\277?\2322snIfy\277\274\033\270\202q9\261\277\032}\264\300\024\207\316\277\2060\275\376\0373\277\277\313\002\334\226\310\332\231?}K\224Y\277)\230\277\362\206/\027\345\234\232\277\333)p\231b\252\246\277\003\261\n\321\360\027\222\277\004\311)0\310n\300\277\025\250\235u\035\027\253\277\330c\276-\021Wl?\342\216\231)*\235\317?>\313\202\215\r\377\272?\240\030y(\030\260\271?\0075=d^?\205?\016\341\323\362\256\367\266\277n\225\034\256\315@\271\277x\371\215\340<\253\272?\235\345\017\241D \306\277\022R1\230\335\n\277\277\022\241\002n\253/\271?\005\231\374\014\375t\252?\344~!.p\010\305?.u\323\277L\233\242\277l\235O%\375\265\307\277\262\274\213\t]\032r?\312\304;\214\365\017\247\277\352i\326\331\374\264\263\277\271\354\345V!r\276\277bs1\251e\001\300\277\320\347rX&S\244?\214\234\341M\365\334\221\277=\213~\247[b\270\277\314\251\035&Vy\267\277\010(\311U\211\264\260\277\r{\346b\241\250\263\277\371s\235\205\013\266\306\277b\234\272+\307\000\267?\362\325\353\236\263\005\261?hd\026\354)m\307?Q\342@\356\225@\204?M\317\373\371\027R\302?^\227\006\037\031L\252\277\202`\242\016\357D\276\277:\235\345\270\316\003\227\2775\262\303.\336\323\221?\274\223\"+\345\335\333?\356\234\312\300P4\305\277|\226\t\256\236\276\270?\361i\346\336uy\270\277\022\340Uq\324\310\266\277\017\325Z\301\220\350\232?\032\373\250\372:\303\261?kb\027\240q\351\316\277po\255\245I\323\312\277\376\202\311\033~R\265\277Z\0018\r\242%\224\277\210\243\243\235\007\241\307?\267(\030|Sl\261?\243\375\306\347\034\033\301\277V\215\275\226\340\375\312?Hu\211S\371d\260?9,\023q\345\307\277\277K\027\301\361=\031\261?\\\261e_!\336\177?\321\212\247\371\251\003\266?R;\255\310f\313\305?\260\367~\372\364\243\223?\230\361x3\306D\300\277\200\367\360\302\343\321\230?\027\312\263\222\034\033\257?s\024I\273\026\347\244\277\321\273\2459I\014\304?1\212Fg\242.\251?q\014J\236\345\327\271?\351\004\336\277n\231\227\277\214d\200\354\260_\261\277w\305.o\310=\301?\031F}\376\216i\243\277\210\003\316\024\030q\217\277\314\300\3431\250[\300?7\000\013\313B\354\244\277\3232\001\254\344\"\225\277a^\362&\272\346\224?|\003>\352e\224\300\277\034\010\013=Z\214\300\277{\226\227\300.sq?\025\032\022\363\031E\254?\355m\305\030\032\266\276?\245\277\"&\244\261\245?O\325\021\230\215\"\217\277\177\242P\244\331h\261\277\365f\345\372\017\025\306?@>`w\240\371\256\277\206\005\210)\030\372\260\277v\000Z\337B\303h?\315\022\376Tdl\306\277jd\343;\244!\277?s>\034,\2142\266\277\177\355N\246\370\234\211?\234|\261\213Al\302?\245\004\306\242\235I\271?\300\310\010\250=\314\266\277\305vg\251\212\035\244?\247\254^my\252\270\277\351\276t2\024r\317?\307\212\216\372E\214\267\277?\270\247\337\377\230\263\277\021\004c\251\346\024\314?\333\245\264\375C7\263\277\251\224{\203G\001\212?C0\'V\020q\204\277u\243\000\t!\213\234?\260c_\300\007\245\200\277N\030\205\031\344D\246?\213D`\005[\252\200\277\224\235\203\'i\240l\277&\\8\000!\373\236?\347\n\021\304\307\330\301\277P\262+\265\310j\254?q\263\201\370>\200\263\277\024\016\321rK\265\273?N\007\271T\n#\274?[\344\360\277\223\221\274?\226i\311*\220\016\253\277\336\333\030\251\247\363\266?rnn\355Q(\312\277\017\275\350\004\226e\212\277\325Q\nV\307\321\306?\367\023\363_G\203\241?\005\222\215\375\274\"\262?\022\n\252\3467\272\241?9\\\013%\004(\240\277v\361}\361\231\236\310?W\257t\333#\315\200?\354\270\370d\3717\267\277\304\024#b\303\273{\277\t\360\371\334\366\345@\277\257\202Pk\026Z\230\277\007\376\2169- \271\277k1\010t\263\243\235?\373\006\220\334?O\310\277\321\374\202<\"j\261\277\255\205~\244\211\343\270\277]<\215\246\272\010\252?\246\300W\022(\306\245\277\300y\357\007\342,\206?z\263\275\312\210\351\267\277nTW\366\0208\301?\030\217\362D+\226\272\277z\270@\0266t\241\277 \352\006\200\237\235\251\277*\367\275\226\033\310v?\362\324\307\000\340\337\221\277U[\332\022)n\253\277\343\236\345$EJ\317\277\372\030\0069\\\264\264\277\300\016\004\342}F\221\2779\335\255\021\365\214\302?\330\205\346\224\370\364\221?\204\372&\377\262\356\314?\346\302\357i\014:\265\277\203Xf\033\261\365\317\277\2147;!\334N~?\274_\017v\231\254\314\277Fc\r}eg\273?)l\023\036\007I\303\277_\036\213\024H\256\211\277\002\360\245\343\275\026\201?\212\340K\207\267\'\263?I\271\231@\240\034\242\277k\203\257\353H\321\252\277\326\216t\223\205\246\311?\t\303\327+\326\374}\277\223Q\010\353R\177\267\277w\264\277\007\375\221\240?-\357w\350\2406\320\277M%f\216lJ\246?\0020\013\016\272\337\271?\225\201\264!~]\303\277F\021\334rS\250\265?\003\247\304ZL\363\246\277c\344^:\257 \313\277\377\327\234C\363=\251?\032-,S\355\274\240?V\345\373\031\375\365\263\277\311\"\323\267\314\216\325?%\2147\316\030\255\243?\020h\245h\336\007\260\277o\251\237$7v\271\277\002$\202l\325\342\254\277\315e\346\354\215p\233\277U\311\363S\333\250\276?i3w\351\221@\277?v\247w\336\227\274\232?MZ\303\233\037\365F\277\007p\337\311\237n\241?ZWg\326\237\330\201\277h\207\355\303\320\035\244?]\026\014\232\036\016\272?\n\225\3047\rr\252\277\347\206\'\357Wi\256?ms\177}w-\237\277\223\026\027\361l\335y?f\363\321\2459\336\271\277Fg\"4\230\306\256\277cC\031\363\354M\244\277\210\235\200\327\327`\270?\215\031\'\201;\243\314?\327H\r\336\251S\251?g\323i\354\0169\241\277\177\355\302\221\262\221\310?\274.~C73\273?@\255\335\232\304f\236?\027\314m\022\003\356\262?\006\205#t\367J\242?2\323w\220\014\370\260\277t)\321\230\262#\302\277\274Smq\036\343\261\277\265\025\023\3448\267\255\277\267\201\376ma\177\250?\377m\306\347\030%\270\277\235+\n\245.Z\277\277\377\363\317\013\215\236s\277\307h\202\224R=\260\277U\201\372C>\032\256\277\236\t\214\317\340\224\255?\\\"\210$\266\267\223?\254\3717\307\237\001\275?J\300\260b\346!\257\277\256[b\3563\206\264\277\264\363\233\232Q\220\273?\001y\270\237\236z\250\2774\200\002\261+\"\234\277\306K{\031*G\270?L\003\311o,\030\274?2\021\266$\311y\221\277E\013\343\217M\030\224?O\301>2\326!\272?\216\t8\201N\231\300?\363=(\273\247\227\255?\r\337\374\323H\262\250?\234\255\346\361\314\244\230\277{R\231\\\3608\232\277\027\2212\"\377*\263\277\362]\022\221~\027\245\277\305U\310\017\217{\304?-*<?\tO\252\277e$a\200\2029m?\010\340 \225s\312\304\277\351\333\233cZ\"q?\272\312\373Y\004\325@?,\333\375\274]\264l\277\373u?$\252F\330?`s\310\377tL\232?\tB\317l\206\337\260\277|}\037\300\307\361\316?\3303C,\354\311\225?\036{\025#\007\260\312\277\340\237:\233\t\355\300?\314\365\t*\023\"\243\277\n\357,W\264\227\261?\252\233\227\236\024\006\262?\251Q\037e\237\307\260\277\373\272z\307\357?\242?zw\031Sv\344\244?\264_\n\n\227\225\263?\010HR\364t\301\273\277=C\007\0148\037\250\277\234(\315\037\007\361T\277\"ze\230W\363\245\277\026\273ZRu\213\221?\023\353\245\361\305\332\272\277\331,W\n\207g\256?\242\001u\013w\230\265?@\310i\030\365\215\243\277*\357Alu\214\204\277\332\202\257\363\025\306\271?\205&\024l\221\307\301?\313\300\331\307k\211\224?\367c\\\317\013\312\264?\326E\203@\212\260\251?\363rs\222\367\371\242\277N\214\307\355K;\276\277\001N\365\322\245j\311\2771>\213KF@\221?S\257\004\247%\026\240?\023\251<Dz\217\300?]\323\266\244\036\244\253?\243Pc\272\351\220\271??>\213\274Dk\274?N\323\372\330\036l\261\277\264B\336\314\364.\303\277#\301%\014$k\212?\217\033\327\363\211\324\305?\t\251MX\001\027\241\277\252~\276\033\201\363\225?\213\357_y\2117\235\277\271[O\355\207\020\307?,\024\326\372\301\243\277?\024$\301\234j\002\273\277\246or\023\235\256\304\277\333qK\310[\230\306?\242\247BC\351R\257\277\2635\234*V\236\270\277D\234\366\320\364\235\253?\215j\365\024w\362\264\277Z\247@2\347K\247\277.d\013\206\313H\252\277\002\025\252\036eJ\270\277\247\260\256\364mN\243\277o%U\200\213>\246\277BS\001\310\342t\315?\300\226\304Y\232\371\177\277\224\024\230\205\365;`\277W\0357E\372`q\277uJ\271\212%t\243?\357\353\331\203\260\332\240\277\023j\312\330j\016\266\277\301\304k\016\362\223\304\277\017\200\250<\323c\245?*O6)\207\317\270\277\307\333\265Z\021n\271?x\232\313un\216\205?fc\370\r>\234\244?\261M%\256\014\324\300?\256\222v\n\0004\260?\003\233j\306\320\274\242\277\020 H\216h\024\257\277\320\025\267\207J\376\266\277\306\253\377\376\324l\266\277>\324t\311\252\'\240\277n\252O\020\327\'\264?\021\241\034\025pr\233?\243\337\245\231\332\365\257?\260/\232\302\335\240\203\277 \\\235W\021\317\267?\026\203\314\272\232\032\311\277\035>%\"\264A\250?\204\266t\024\204\330\266?D\204\0109\201\032\310\277\350Tkb\373\002\244?I\342\244\313{\016\220\277=\240kY\360\343\304?\352\201x8|\345\177\277\345?\022\217\201E\205\277\\\225q\215q\325\307\277\3646J\351!\300\261?\213;v\245\300\031\270\277Z\005X\221cJw\277\342\037\357j6\211\237?X\342\245#\360\217\240? \235\307\207\\\376\274?\237p.)\346\265\275?2\372\337\000\024\272\242?\020\353eA>\270u?\366\016\233\345(\360\310\277\257\27225\270O\276?\375S\353\313\367\257\310?\210>\270\r\021j\255\277\341{X^\305\233\263?E+\3416\376l\201\277.\310\360\233D7\301??\004\343\006n\311\271?a\343]b\276\354\236\277\313N\202\227\226w\253\277\367\021{\264\237\240\227?\001\211\344\016\271\347\244?^t\034\016tR\324\277\274\2259)\036\324\317\277]5\2225\210\323\261?\257\342\033dy\304s\277\337\207\211\256M\r\324?\264\014\273\204\270\354\275\277\362g`\336\033\221\261?\373\017\372\234\262\275\277\277u\2263\014]\203\263?E&X\024)\201\221\277=\273L\254J-\216?\273\017\271FD8\270?\331\320\026\234,\352\225\277\016\370H\"\006\370\257\277\242\200\006\207\032\357\300\277\363\317iJ\267\321\225\277coH\000Q\257\305?\311.\351\232}\020\326\277\027\354\332\356]\n\273\277L\010\004S\325\210\206\277\'\0221\215c\323\255\277\240\377\267\334O#\251\277\336!\254E\023\\\271\277\373 \236-\200O\242?\366\322\026\341\232`\233?A\200\203\364\272\305\240?\220\024P\366\210\376\264?\030G&^g&\237\277\326\220\370+\340\322\246\277\275\324\024b\251C\210\277\240\377\311z8\345\275?/.\016o\035\226\204?<\325\033\242\220\244\260\277\356^C3\352Dw?*T\342J8*\266\277o2zj\201\375\243\277\021\277/se\373\273?\354N\377\357h\346R?\027{\005Dq\272\274?1\326\271PK\330\305?\247\375WG\027\236\221\277\206\312\332\03120\241\277u\005\232\355I \261\277\353\341\366\002\035\344\275?\022\265$\317\250j\243?\217\030\3420\231\311\305\2779k-.\351\010\324\277a\027\270\331`k\260?I\255\366pj\261\263?\247\342\324\214j\322\233?\247ax\220\341B\226\277E\251\277301\201?\206\035\343\361\216o\254\277\240\353@\350\264\213\257\277\r\326\013\341\2376\234?\212 \024\212*\204\237?\021$Y\223\346.\236\277v/.\030k)\276\277\262\367K\372\2562\300?G?>\326\365\223\276\277\301K\362\376\177/\316\277\342J\"2\310\341\263\2770<\312\200\270\261\237\277x\334\245\235\303\n\210\277HR\324\202\203\270\262\277\203\361r\301\205[\244\277\316\346\256\">\370\301\277\237\316}\375\200:\317?\025\347x\257}M\255?0K\202\236\374\366\222\277\026*\270\265\346`\302\277\243\023\202\252zb\224?m\022\305eX\004q?\025\007q\333\322\030\270?\252\356\300\201\0350\227?\366\312b\206\307>\303\277f\344v\321\240\247\243?\334\366\370;\310\352\214?T\224d\372\007\253\261?\234\334\035q\334\234\227\277WI\340Ej\214\205?/\213\220\317(^\224\2778\024\346\001\360\257\250?p\020\327c]\277\221\277\234O\214\310,\354\266\277\365\200\223\343\302\003\215?/\303\330\363\340\313\177?M\034\234\352P\351\234?\270\276\370w<\255\225?\206s}No\301\252\277\006f\037-\217\332\245\277\322\260\366\316!\336c?\337\272\307\220lK\252?w\246~\022\213S\213?\256B\356\360\233\224\275?F\252\320\332l\214\311\277u/\254\366\307Y\211?d\025\253.\270\307\300?S\203l\257[\337\333\277+>x2_z\260\277K*hi\311D\247?\230\013\250n\323\357\273?\272\252*\226\224\312\322?*\366\253U\211\301\216?i\362+\313\357A\300\277X.(U\234\350\241\277\312\032\320\243(\332\265?m\252\347\310@\223\247\277@\363Z*p\225\310?=l\235\026H\215\267\277\300\313S\364\036\325l\277\371\301\'\202\3274\275?\231\302\252\037)\353\320?\307\366\241\217Y\026\221\277\334\325\334\363\025\245g?2\247\002\200\210?\261\277\366w\370l\210\266\323\277,BV\2205\266\224\277\207<\337es\033\256\277h\307\231\207\004\017\245?3\240\210b\2045\261?\207\200[\341]\316\212?9DF\327p\300\251\277\326.A\363\360vt\277\252\33640\333f\247?\344\322\311\361\344>\270\277\"\006\271\330\304\227\304\277\254\020\020W\344\361u\277\220\343\351\3666\014\242?\362\025\271\262\t\257\273?M@\252\244L\r\317?N\271\356\224E\207\231?\0260\301yG1\240?\023\340T^;O\277\277\263\tE\371w?\262\277\365\361\005\370-\030\270\277\210\3544\276\022\377\247?\222C/\364(\347\226\277\366\341\353*\215l\206\277i\265\320\366\362>\267?\007\327\023\303\245G\311?\032\177\213d\035D\214\277\234_~\000\3411\262?\337\024S7\342\032\220\277*\005\313\030.c\260\277\266\t\241_d6\262\277w\037\274\245\r\341\224?O$*8\014R\266\277\237\217\272\207Rg\235\277\343\320p\310\366\020\207?\260\016\270\277\211\260\222\2773s\327O\373\226\320\277G\214\247\357\377\360z\277g\224\002\214@o\232?a\250\301\326\250\030\261\277>i\317V\311+\206\277j#\r\340yW\311?3\304y\340H\363\304\277Xf\255cS\355\300?wE`\334\202\344\255?\230\356\022\317\363\362\250\277\240\220\225!\203\030\261?\331u\002\253:\264\275\277\025\025\2020\325\335\271\277S\362\277\244)\261\254\277\336\257\234\274s\370\302\277\267\363\333v\236\315\253\277\233\263\267\230B\240\251?\207k\301\267Y\315\272\277\250e\200\001\245K\240\277\221O\255\373\177\350\242?\352\344\204qo\316\272?\314\\Y\302\016y\306?\367\327OVPr\261\277\'\265Ne\342\227\241\277<D\005\037\244\207\267\277w\364\027\341\017N\261\277\032\350\177\3525#g\2770Tj?\232\265\265?\256\305K\325\036\360\320\277\247\261\325\215\021^\274\277\370\313\203E\2163\225\277\207\nA\274\227\343\301\277\221\256\276\023\017\331\272\277\243e4z\313\223\261?w\376|\006\030R\267\277\234\351\022Fs\021\263?\262\362t\02726\235?~\373\376Uy\272\254?\322?\333C\251\361\255\277\357\205\316d\004\316\267\277\215\374\321i\363\230\225?@\361\245q\2528\277?\310\222\317\206\303!\303?\256\260\016j\327*\265\277\006\234\310\326V\332\270?\244\222M\267\312\213\326\277\272A\023S[\320\266\277\263\364\026\260\210\001Y\277\252\214Q<]\353\303?\220\305?\277+\260\270?\005\316F\006K\222\236\277&t\033\234\277\037\240?\013)\244T\342Dx\277\367vZX\260\027z?\210\021c;\243\305\212?\277\314\365;\361\252\265\277\305j\243\226\347\274\314?s\021\314\316\273\307\276?\350\351z\267\317\317g\277\236\253\364Q\347\033\312?\366\320b\247\244\254\227\277qQB\333ev\303\277\245\314\020\367\035Hu?\306Gp\213\231\306y?\370\204\257\321\362\271\245\277\363L\206\032\313\302z\277\215\002\241OCI\273?w\301;\300\260F\221?]\215\023\310\024\005\220\277.\355vO\241\231\206\2770\023\244:\222\347\205\277_s\n\034\275\311\242??\006E=y\213\217\277\372\"b\305\224\201\254\277\007\300\357\005\225\216\224?\342K\304\250j\002\242\277nWO\226S\217y?\354\324\254m3\336\331?\375\242w\372&7\251?\256\023\237%\247\314\232?\205\030X1;\233\272\277\342%\003~#z\264\277\221\036\305x\236\007\241?\313w\270\233{\246\301\277-\346!O\001j\311\277K\007qC\302\203\210\277rc\233\354f+\261\277\276\304\262{\277g\221\2771\370\0307\025\263\243?-\244\214\353\274\331\262?\206`\212UH\'\315?UE[\203\330\\f?\317\007\243\232;\276\272?\207\311\025\343\323\307s\277\215\244\003\036\211\0312\277\023\351\376\376(\013\311\277*\232v\221\354\361\244\277b\243\240l\005{\232\277\305\231\252\355\313\217\261?\"\270 O%\010\253?\362\347\022\206\225?\246?\033\244\250Q\364\357\303\277wh_\300\260\002\272?\376Z\255\307\016\026\231\277G\206,/\340\313\271?U\243\331\334\275\375\314\277amQ\275/\247\237??\244\352\324\345\302\230?\371`\346\355=\263\276\277\276XG\347\022\007\261\277\241\255\302\343\377\236\262\277\353\222G\203%o\205?\2071\302\374\324\341\227?\026\003\241e<\035\263?c*g1\324 \300?w\310\t!\013/\257\277\336\373$\235\372\222u\277\206\347\374\253\010\303\250\277\365\223\030s-\035\275?\361\366c\'\n8\315\277p\311\271\210\371\232\273?\314Z\251@\200\t\307?O>\313\354\356\243\244\277C\211o\255\014\342\261?\030\254\312`\343\004\227?s\255\310\226\025\245\312?\231\200.s9\356\311?\270\366\221\255\263\230\231?\367\n\034o\213\346\220\277N1(\226\276\374\301\277]\201}$\313J\271?\263\207\214\220dP\263\277=\014O\002j\321\262?mHEL\364\367\307\277h,\037\322\325\307\253\277\322\340\336\330\020\252\247\277Sv\335Xi\356\242?\313\214wW\324\302\241?\2340=\025\365\247\272\277T\273\000c\370\322\301?\032\303\265\237\226%\306\277\356\323)\345\345\340\217\277bA\\=f^t?\205\305\233\304\2519\242?\215\350>S\256j\247?\226\325\221\211\307s\240?\267\0370\264\007\'c?\351\271-,t(\313\277\264\021{\344\r\356\264\277\222@\232\303F\274\254?C\372gv0{\256?\267{\014\016\246\255\265?r\335\346\233:$\272\277b0\374\350\252\265\265?r|\224\255\236\346\201?\247GaA\314\023\252\277\212\001\352J!\347\241?\360\332p\234pr\320\277\341\031\262\335/X\260?\277\016\t\355\277\220\210\277y\030\235\1771 \270?\034\266\354ZB\237\311?\261\027\177h\366\216\264\277\034`\265tgm\260\277a\304\3130u\277\313?\310\\\001\233\206S\261\277\376\362h%\334i\225?1\017\221\216\332E\273\277\250\024\263\274\2450m\277\r\224d\365\325\363\240?u5 r\347\025\271?\2221S`}X\320?\316\267\216\027hm\300\277\007\205rw\322\204\235\277@\n\255/\200^\311?U0\035\rd\256\303\277y\221|\303\272\255o\277fVF\365\231(\251\277\266\tfA\232\225\312?hU\332\375\357^\261?22wg\261\345\252\277/>h>\010\370q\277\035\371\312Ut-\253\277\030C\372^h\016\255\277\347\352S\360\027\321\256?\337.Z\0102\355\277\277\335\251S\330}j\266?\344\352\021*\320\356\205?\346\2322\213\207\344\255\277\3454\271\355\250|\255?\251\205\"D\016\020\271?\336\345\"jen\263?b6n\250\325\302\302?\264b\300\021<\017\257?\306p\225\3654\203\226\277v\267\3510c\351|?D\240\366@\240\242\257?\355\250\2607\373\304\245?|\353\367\236\221\030\237?Hj\323V\333\320\272\277\004\247\276Y#a\237\277\255\224\346\3356\213\271?\341KE\207\rF\252?~G\200i\350_\221\277[@\207\236\210\025{?\022\255X\267\315o\261?r\326\204!\356\253\313\277\007\017\335\331\276\016\212\277\373\263\205\344\262\256\265\277\216\005EO\205L\264?||A\362\026\000\306?*\333\337\336\351n\262\277g#\210\024\271\213\300\277\303y\'\237w}\265\277v\303\246y\350\032\211?0T\276p\326\300\303\277\357p\346\354r\206\252?;\\\272\302V<\320?R\371\024\267\200\326U\277\335\nApo\364\250?sfl\351\315\266\272?\000Y\255F\325\351\225\277Q\353\330\326d\237\247?\031\342X;\002\234\243?\227\341\314pn\357\266\2777\234|\251\367/\177?\341Z\0326\233\351\246?\364\3509\332\205z\260?pd\221C@\316\265\277\345Y\214w\016\343\260\277\016\217d>\270\361\266\277\250\000\007=t7\327?\370u\247\206\251R\200?\352\0374\330\030\360\246\277\352-\006\035\333\217\272?\036h\007\215\037\356\246\277\363\0068\346z\241\256?\255\205\275\271\273pd?C\312\314\235\234[\263?\202\367|\026\242]\246?\022\266\202\246\301-\277\277r1L\005\006\017\216?\365\236\367\256\317E\271\2775p\016-j\243\303?Rq\303\242\021F\263?\263\233\340\2368\250\264?\245~\030\320\027R\306?\224\343.\226%\203\257\277V`~\236\035U\211\277\240\373\240\337\227\346\307\2778\231\370\273\\x\204\277\350\272\233O\272k\306\277y\315f\004w\013\307?\377\322\252\322Z\212\245?6\326\211\235LH\230?m\014@o\307r\274?\177\200w\256\237\220s?\321\017.c\246\303\266\277hH\341\333Th\276\277\255X\365\225\245\312\262?u\"H\225(\277\216?3\031e\233\251G\246\277\352\014\236\n\310)\274?\311\350~\323Qb}?\252\224\250\256\201Q\203?\371\034N*\2362a?\340\256\351\275\364t\263\277w\241\260:\240|\302?fk\252\344\014\006\301?\333\017\020\233\023\304\306\277\017\016iel?\205\277\265\t\245\235p\260\210\277\317\245\224f\3755\264\277\007\207Hq\024\314\240\277-t\224u\210h\267?2\"\350\246\267[\240?j:\263\205\351\275\222? +#p\207\227\265\277\312\334\022\024\210>\211\277\t\241\277\032\267\013\314\277\266\200\363\034\355\261\306?\311<l6@\"\276?\337\346\247\2237!\262?Jx=Q\270\222\302\277(\214\335\351\246w\260\2779\262ia\035T\224\277\222ik.\304-\204\277\037\037{\2347\312\325?\351\225\303\013\234\032\225?V[\242\357i\271\302?\235\271=\3679\034\241?\244nL\017\220r\260?!8\222f^\217\246\277\222t\317\275\357s\253?t\374\333U\351\021\307\277_\343I\032\311\217\200?\034\265i\204>\226\250\277{w\273mu\007\315?\230w\312\343L2\222\277\314Nt\333\361\365\250?\034\226\014\324\217\337\250\277=\031\351]\217\003\325\277\304\271C\270\360\037\221\277#\256fy\014f\270\277\237h\201u-\213\236?S\243\226\207\225\344\261?\256E\255\224\311\322\234\277.\tNebv\264?\226 \272\210w\'\322\277>i\210\013~>v\277\3216\340\357\303\240\253\277jRx\240vT\207\277Jq\352w\272.\201\2777Z0I\205\n\260?\266l\345\244\024\333\270?\211^\2066\327\350\301?\202\265\250\273\317\254\304?uk=e\345\341\210?\207[\210\240>\217}?\302\271\033\031\252.\201?\366\357\250\333\0239\266\277NqR\362\034\262\302?\201\210.$0\255\241?\210\306ZC\177\330\225\2770e]t\"6\234?\366\177\2347]Q\305\277\037IZ\031\020\001\261\277\031\267\226\003l\177\242\277\307\375\tKE\355\260?\007\316\2433\300\251\310?\035\037\3635E\334\257?%\300:\002\036\002\300?8@~\313\271\327\265?%\210\177g\312\227\227\2774\214\275\374D\000\242\277\027\271\334r\240\261\266?\301\342o\016\221\307\231\277\022s%\220\337\343\267?\271\252\370\374\034\003\273?\027U\377\270\2555\302?\333\241\261\247\\w\201?%[0\0318\367\301\277+\022g\311\372\270\300?\3531\256\231\002\027\332\277\336\225K\206\330\256\263\277\022>\206Z\230\236\276?\361\354Z\311%\242\263\277\253x:\364D\034\306?LHL\271V\306\220??\236\t\362\334\226\254\277\335\346\311\213\031\r\332?\223\005\301\370q\372\212?~\"Z\251\210\363\265?\241\017R\273A\337\223\277\3778\003.lP\247?*F\177]\264\254\252\277\313\305\010\254\304\266\261\277\233\237\307\214\241fu?\211\206l\303\347\271\220?I\004t\213\327\304\205\277,*\325\021\n\365\221\277t\225:b\242\024\264\277\2700(\243\232#\262\277R\332\307;\353\331\226\277q\374\200\"pM\311?\335\t?\324\303\333\223\277\213\250\340R\221\034\274?\001O|k\230\013\304\277\301\226^\371\021\254\243?\340\320B2D\177\256\2775^\024\345_\033\273?\265\350\371\263\315\354\304?`\322i0\205\014\241?\t\260@\363\037\316\274\277L\343R\360Gg\237\277\203\033\200\262{\013\252\277\231j\203IY\315\215\277\234\220\221\240\361\'\267?\251\0271\223\022\352\273?eTWcyb\264\277^\360\330\242\255\024\211?9\234\031\2059\277\323\277\3728\033v\323.\272?\\(\2408$9\267?\303\021\327\250\016\267\322?2`\005\345\330*\317\277T\202\036\312MQ\201\277\026=\006\361\362\312\300?\005}%`\211\'\204?mU<\207\310\020\274\277\353$\271aI5\260\277\253\254\333\027\242\026\277?\"\257\267\222\006\340\236\277\214\375\211\256\331\246\263\2773x\006\225\340\331\272?](\237\022\270P\310\277j\370\237/\330\321\303\277Z\247\220\376\207\275\320?WEQ\365\310\315\223\277J\340\027\205eo\325\277\366\344\340\324Q\266\274\277\317\030\241;\2158\271\277c\327\237\207D4\266\277Yx\210\263Ep\251?63z\376c\"\247\277\344\201\243\303L\251\264?\366\331\001W\330\270\327\277z\303Y\254\204\200\250\277^t6\025_\240\252\277\304\'S\177\263d\265?\203\204Q,6t\266\277\314\350\034\332\362(\273?C\353h\257\314\240\272?(\026\316\207,\030\317\277-PJ\034#\007\262?\222\247\026\303\251Z\240\277\231\016\032j^G\265\277\017i1\367\334\225\244?\023V\250\0368\270\233\277\271\361\234su\004\254\277\200\342\247B\304\227\264\277|\343&/\r\010\241\277|\243\246\260\035\204\224?\326\340\321o\030\017\300\277\200A)\231t\032\257?:SI0\271)\235?\232\224v\005qd|\277L!W\031\333\002\304?2/cm\'\221\247?\n5\253\010\376\242\255\277H\207\376%!\272\320?\035y>\340)\321\220\277!\242\252\036V.\267?0[~\230m\010\277?\357\217D!\332\007\242\277K\255\342\276Jl\246\277@|\024\001\256\326\252\277!\262\315\024\034\325\305\277\367\032<Y\303\216\227\277u\334CTs\343\313?\367;B\232:\314\321\277\363C5\343,R\301?wX\262\3052\346\263\277+ \202\037W\210\236\277\370\232x\247\366\357\247?\233RK\330\310\025\304?\"\"\265\2467\316q?\326\222\t\031\202\337\271\277\246\336\256\305\365\366\274\277\200\005\010\325\030\264\241?l\344k_\340\217\260\277\356p\001\204\023\351\246?\351\014\"<j\251\257?Zs\251\276j\220^?\013y6\210[&\266\277\274\265\nt:\315\327?I\320\204\200\3354\232\277\006\035\303\305\n\004w?,\372B5\271a\273\277p\241\337\273\367!\307\277\355\277\304\375\0024\224?\260c\3567Vy\273\277\347\255\020r9`\305?\267\247\316U\261\234\251\277\036\344%kD?\222??%79\353\227\321?^\252\327\313\347~\250\277\222\034\250\352,\211\213?\2323\341\276\327\265\210\277\000\005\363T\030\242\232\277Ud\345\333\2449\303\277\213Y-R\310\374\257?\311\017\362\020\365\"\236?L\277Eh8w\252?\007\360U`\002`\240\277\347O>\207\232\036\240?\262 j\032S\262\317?*^]\202!\371\310\277F\372\330\353\356\223|?\216\2319J\377M\264?\334k\351\210?9\242\277\306\246N\224\345\371\243?X\344\357\017\2350\266\277H\032\307\202\0005\262\277r\n\200\2113\236\257?\214aaG\255\271\271\277\003\037\265s-u\303?\245\342\373g?\310\236\277\317\377\352\221\274Z\231\277#\245v\235lb\265\277i\234\200_\033\377z\277[D)-\307:\236?\351\037\033\350\010+\264\277 pb3i\032\316?\034E\344\353%\360\207?\033C\002\013\300\376}\277~\005\313P\355\217\206?\275\2179s\320\371\301\277\217\024\344\230\273\323\221?\226\372U\324\347%\251\277\277~\3224\253`\227\277Ar\367h\236~\254?\310\201PA\375\035\232\277\037\243\253\204\335\344\273\277a\261\024\rN\245\272?\244\302lW\220\350\264\277\333kK{^i\242?7\326\003!aK\321?F2\177\")\255\226\277k\344\334\275\031\260\231?6\234bk\207\306\305\277zN\245zF\372\312\277\317r\017\342\207u\220\277\026-Y\272\246m\214\277<\005e\322F\010\261\277%;\247\036\222\217\242?1$K~\002\237.\277\211\204:T\305\327\265\277\250d\250\337\327T\315\277\226\231\306\204\322\203\300\277\321\003<k\tl\233\277\244K6f\374\223\307\277\216\243\301\235\301\363\246?\002\307\365\2401\206\304?Q\335}k@e\241?\315l\003\331\273,\272?\006\373I\250\034\257\301\277I6\374\321\255[\266?=\212+\260\024+\251?\000|\304\022\326\263\244?\250\021\241K\311\225\211\277\007\327\377\364x\036\227?\020\233Ku\203\355\277?\372}}\227x\271\273\277m\007\323e\006\016\264?\203\315?\277\016\236\253\277\341)T\215\354K\262\277\037\266\032\375>a\261\277M\336\375&\260\000\326?\313\226\205\267\341\364\250\277Bw\235hC\232\204?\371\375#$\371W\232?\356\034\223;\354\306\261\277\357\210_\323\272L\230?\277\354$P\037\212n?\274\036\225\t/([\277\204\033\221^t/\300\277\366\3708\220\020+\246\2772\\\376\237\242\037\253\277Z\342/,x\037\321?\342.&\371\336\210\245?\034\204\351\212\230\034\217\277\031\203m\2014\025\265\277\244\365\226G\214\376\246?\022t@\371\020\032\274\277\336b\033\307\003\010\271?=\337\366\243\n\361\302\277\310\261\t\t\"\210\255\277\024:\007\027\256V\247\277\351\352_\360\333-\277\277\333\227`\335\2433\310\277\273C;3]\233\244?nP|\300\234\351\206\277\310\304{Nqg\252?u\250\251\327\357N\205\277~\200E\030\232q\277?/<\020\0378\374\260\277i*\232\210n\026\302?_\324\021\240\003;\260\277\3636\233\323X\316\241\277\250\371\372E^\306\274?\243t\0078|\367\263\277~\216\352\206\031\306\265\277aY\223q\212\333\247\277\232\"\313\276\033,\232\2771\275\302L+\201\265?\203.r\034\226\277x?\263y\336\366\224\031\270?\353\364\320\364\035\375o?/\331\035\360\013\261\274?\321\233=<\244j\302\2773S\224\225q\342\334\277\221|\372\264\363g\264?\r\3604\270\222Z\264\277\306\227\020\206\014\016\227?t$+7A<\260?%|\370u\303\340\215\277\214\347y\225!h\300?\352{%g\"cB?\316-\322\n\223?\226\277$\024i\313\005+\240?\024\223b\031\324\006\274?\025\372\361C\"\336\256?\3163\366\377\222l\302\277\260\323\306{\246\367w\277\014y\'\223\270\337\265\277*\332\352D\227x\274?o@\267\235n\337\305\277$\217\\6\036\323}\277]\037\031\023\3221\246?\207\034\022\251\250w\275?n\353\260=\222d\237\2776\336b\303\010\036\322\277\237\220\312U\243\221\250?\"J\364\262\027:\301?I\335\276o\001\340\302?\351\245Y\323\027\032\277\277\205\233\361q\n\'\235\277\325\021\r\216\3627\256?\177ER\353#\376\275?\214\263\336P\332\331\244\277\235l\250\355\2128\220?\312\326\257A\330z\243?S\250\322rX\261\255?PWd\352\232\340\226?\271\'\004\300B\271R\277i\232\224FB\000\275?\264\014\307\343\320S\251?\256\246\242X\270A\213?\210\t\007\345*\377\301? k\326\234\323\241\267?\334P\314\373\377\302\266\277\301>\207#^\227\274\277,\2023\010>\203\301\277\341\372g\306Mc\251\277\372!\373\333\250K\250\277\374K\310d?\303\254\277\332\250S\017\177j\254?j\224\372d]\354\250?\364\313,\246&[\250?\356vv!\004\361\262\277A\2555nV\337\260\277\275\031\323#F\030\301\277\246K\310\260\r\000\222\277\250\313A_\'\344\255?\276}\034\362l\207\231?\342\261a\013\027i\261?v\215\227\317\252\206\256?T\355\026\002\234\032\266?Z\327\377P\2334\276\277)%\022b\t\233\266?7\241\177GQ4{\277\216\225\365Y[.h\277\334\337\212\376<@\300?\347\267\004\366\232\370\262\277\332\361gv\033\345\262\277\253M\202\325\200t\224?l\266LW\251\000\315\277J\213R\262\025\334\242?\212\323>\216\227\321\252\277\037\202|\354*]\250?y\317\036\rP\264\300\277\356\367\310\234g>\241\277\340~\214\006\342\345\264?}+0\255\200+\263?\330\007\235_\030\241\252?c\007\210\344\001)\274?;\374\334|\3006\267\277<zf\372\211\272\276?\203\325\031\235\223\257\236?\"\366\025\000\251\n\250\277^\271\207\002k\004\307?q\326\326\356l<\243?\277H,\222\013\020\254\277\314X`\321\036\237\277?\201v\353\004\316\261\316?\361\2527S\000\237p\277\242\300\240\0200\240\272?\235Yo\321\370\177\263\277H=\355\0107\327\246?\312GK\014=\032\236\277\036\034\272\353\000\351\266\277bF\262=\371\004\300?1\320\244mc\245\200?\357\252\347\3418\024\243?\344z~\342\007\313\226?XD\267l\035\267\214\277US|5 \244\257?\302\273\253\325\314D\255\277\n$\025\3279a\223?\323I\030W\013\246\205\277\362\240\211\n\223\301\242?e\350\033\337\'|\315\277\217\231\002\312\356Z\203\277{\357\210[1\032\246\2778~\014\\\177\213\222\277\236\243\212\340d\034\271\277\201B\252;{\221\277?\035\036\246\375P\033\265?!k\375( \026\306\277,\336\354JB\256\200?\222\232\212\271\351\337\276\277K>\350\326\021\027\270?\370\224\024\022L\245\313?y\374a\243B\343\246?\306\250h\227>\245\267\277\333]%\243q\255\260?Hi+\263\366%\260?+\023\324\325\014\247\242?\302|\364M\367\337\261?\242T\244\000\313\261\270\277\353\220\033C\235\005\246?\273\206Y\266\0377\262\277\277\315M\202\335\017\255?&\265P\353E\266\256?\351\315\352\277A\336\243\277k\334\217I\323\214\261\277\024_e\374\000E\271?\203&\230,[\336\266?\215\373\236.>\245\223\277\251\232\326\2646:\246\2777\252?\270R\r\224?\227M G\373\207\256?[F\273\036\305\236\220?\261\213 \246\351\t\301\277D\010oZ?\202\232?X\335 \020B\252\221?\245m\013\325\177E\322?\022\255t\276\2664\307?\240\310\251\315T\301\266\277J%s-}\243\326\277\361U\320?;\274\323?*L\3744R\223\237\277\337\331\377\222P\241\200\277\262@\372\242\377\256\251?\373\215~\036\020\316\202\277e\014\313\013\263\"\270\277A\262\301\374\363j\261?\315B\261)X\306\267\277F\333\260$\030W\224?\3538\272\212J\t\234\277J\366\247?\365c\224\2777\300\260Mf6\213?\347\"\021^s\245\307?f\325!\364\202\340\315\277HZ\3474S\026\266\277G+\214\271=\016\276?=\356Jl\243@\220\277E\262\374\205.n\242?\271\004\227Y\260\240t?Eh\371U\244P\271\277\257a.)\367\332\204\277\000\214\3158=p\267?;\251\230\256\350\240\234?s\354\315\370\r\177\232?@\214\"O\227O\313\277\310\354\250\236\303T\204\277Q\226\312\036\013\220\227?\361\257\036\250\025\356\201\277\303\211\211y9\316\227?\336\270K3\360\243\232?\330\013\035Z\256|\273?\360c\272\261-\t\260?\231c\273\202\231\027\253?\375\253\031\271\354\305\204\277\365\311$f$7\262\277\246c\004\"\211\013\310?Y\003M\227\340x\267?F\347\321\307\320\207\244?\032\023\035\330\243\312\262? m\032\360\266\001\261?\253\315\177\347\273{\263\277(\316\027\362H\326\275\277\352\362@1\316\363\227?\345\300\347\2205\337\245\277\271K\3441\'S\261?\241|%\036\337\313w?Y\270\235\305%A\270\277\224\313\266\211m\022\255\277\034.\201\3420\317\227\277K\274s\245u\t\273\277]$\001x\207\024\303\277B\300\315\371\020\344\277?\253\2453\202\t\306\262\277j\026\310\035\177\230\202?\253\243\017C\341\216\302?R\016\206\316\036\264\240\277\227\202\235eI6\240?\"\027\021\360>\377\243\277\373w\333\252\004\247\243?\312\007\0143B\315\274?\313\202\361\232Y\250\205?$\352\367\r\3667\233\277\241\t8\306o\375\272\277D\r\202\261\240\215\212\277=3\007\354\025\237\265?*\263\010Y\327\213\300?%;y\227\031\350\272\277\026\242\275\262\263!\253?\2124\222\026\314\233\257?Ns*,\031|\311?\305<\231\310=p+\277\316;_[\242f\251\277\231\005A\306\221?\233\277>\224>\330\004\350\306\277b\017\314\314\303\310\316?KO\220?Q\263\275?\231\271\330\301v\207\243\277\244s_\371\243\255\270?\244\321\013\000\2652\216\277\010)\014w\317\027\240?>\302\332r\314D\270?lx\320\270\277\223\264\277\'\n\320Pbw\224?\300F\331\335\001N\270?\177\215\202=R\377\261\277}\373^\323\004s\237\277\354\251(K\301I\307?=\331\001\243\036\236\325\277J\nh&\\Vt\277\273\007Z\352S\252\225\277\220\355~\2103\013\300?\313\370`\005\340`\310?\214\363\035\301\354A\205?\320)\276Wa\305\270?\317`D]#\270\277\277\220\372\035\263t$\234?]q\341l\2068|\277/\000\0204\351\023\326\277\000\311\300\231f\036\311?\366\277k\274z6\261?\212\257\255\234\370\231\204\277B\310~!\006wh\277D\274\255,\347\344\302\277\227\311)=\260\010\261\277\321^\337\357\354h\265\277\376\261D\365\027\255\273\277I\261BC\331\304\240\277\373C\335\370\033\364\307\277\026\242\223\344\370D\277\277\353\306\177\367\236v\225?\223\317\272\002\305\352\225?\362\003~\363C\233\200\277\305B;e\354\312\321?Y\n0oE0\244?\216\257\233Q\241\025\300?\215\2511\251\"}\231\277\2001\240\212\207\177\260?0\223\350\304\200\314\230\277\256Cf\021\222\355\177\277\200@m(\245\025\215\277\256\305N\247\342E\273\277m\343\031\366\374\272\256?:\030\342k\301\017\300\277\303/\360F\203\300\310?\243\335N\243Z\215\261\277`\356\007\357\261\360\314?\315\273\317\333\225\201\300?(\267\223\233\326\350\261?v\001\212\276\310\230\271?\274\233\007\204\237\266\322?t\3339\260\251>\251?\274\306\316$#\331\234?\265\214\225\333\300#\253?\252(\270\031\344n\261\277\002\203\340\212`\377\242\277\347eV4u0\254\277h\247\210\212\250\261\301\277\353\017\246S\332\313\261?D,\231\034f2w\277\376xy\340\003\375\276?\260V\022T1l\205\277\304\236o\252Q\363\244\277\235u\366\275\276\334\223\277\224\233Q\371\014\350\251\277\332\200\270mt\351\252?%\232\235\220],\253?z\236\362\376\277*\302\277\215J\314\341\277\275\277?\266L#[\212n\300?1]0\215\334O\255?\345\333Tg9M\213?\362V\205j\006\273\266?\'\215\354\360\253q\263\277\270N0\330(\035\250\2778\307\316*Rr\260\277S/\231r\264o\252\277C\356\\<\201\036~?\227\347!U\355L\245?\207c\371\234t\327\265\277\301\367\245\"\325\315\312?I\006\277\374\3060\274\277L:\244\364\275W\202?p\221\264\233h\264}?N\226\343H\253\017\263\277\230\212b\023\363\263\327\277\321\221\206\226\020b\226\2778\271u7\322\204\240\277{\312\311\035\272#\266\277\212\271;\235\266\367\325?\"\204d&\031x\225?]H\317\317z\373\266?M\217;\364\357\260\244?~\250\215q\036\334\224\277\323\307t\023\275\236\272\277\306\362I\262\327\037\277\277\320 \364*\305\276\261\277)7Q\222:\355\273?\320\262\277\331\303`\274?\373\234]BF\275\322\277\t\2745b\240F\252\2775d\371\022(J\253?\320\3032\2269\240\211?:\"u.\277\016\246?I\246J\021\2228\242?\\\010\256%<\247\256\277@\177\325}\361J\301?\'k\366J(n\251?V\211\341\227{\217\272?\303\366\007\361wF\307\277,N\"\0137\320\276?\027J\317\220\3550\260?\362h\315\270~&\266?\3608\303\244U<\327\277Xn\366\2530.\241\277\315\354\000\346\370 \222\277a\375\354C\272\250\270?&E\321\'=\304\275\277\211p4\223X\316\260\277\306\212\306\030ct\301?!V\026\274?\\\214?\243\021\215\306\325`\260?\177&v\020\372\355\215\277\3169\327Q\211+\260?\223\253-\317\271\353\300?\010\352\260C\374\235\242?\350\013\245\262\360\364\226\277\225\270\313\314\260t\224\277\233\0264\370\nU\236?\332y7\021d\315\250?\350?\316x\004\213\265\277_\005Rf\372s\216\2778\232\002<\210\354\255?w<t\311\304+\220?\224y\021\324\022F\316\277\230Y\tR\320\306\211?]\260\320\331.\034\245\277\003\001\320U\255yx?\324,\t\037X\212\244\277n\320\245g\"Y\265?\310\246*V\241\221\247\277,\205\312*\312\304\314\277dS\236\210Q[\260?\216\357\342\363b\375y?~\034\214\010I\205\246\277\330\016\305F\206W\320?GE\300\357\nI\247?\371\010\304&\r\222\257\277\310Z\252\373\204F\265?\036\013\263Y\320\t\273\277\324\177\301]\302\243\221\277M\213G\302\333\213\266?\312\024\201\031Q\247\267?\347G\373\227\210\267\242?^\247\344\207\341\010\211\277\376\267Y\262t\373\244\277^\343s\374v\270y\277\333%+<Q!\254\277\303\377\213\0202\002\220\277\325P\351\236\245Q\305\277S\260\263\246\n\353p?zQ\005u:\215\220?\225\256\301\262\356~\270?\322\375\035W\274\253\230?}\376D\2372\303\237?\227\007J\332\362\253\261?L>J\207\225R\301?JP\355-\317\215\253\277\205$\332\241\260\261\244?\222/\204\245\312\300\234\277O\273\355XJ\363\251\277\001Js\343\026\027\303\2775\321\301\245\237|\247\277D(\234\212\010\225\303\277ft\010M\3443\220\277\377D4w_\354\201\277\306\214\203\350b\251\274?\371\227\374\2711$\247\277O\237\231B\370\365\271?\362\r/\003ea\243?f\233\306\001\371\t\233?\r\257\202\267\333h\241?\327\226\223\373\207-\304?ZHo\010=v\301?,\0309\334\262\357\272\277\331\245\2523#q\264\277MG\276j\322\272\276??t\257\006&\212\200?\343-cD\274\375b\277\374\231\222\274\347\216\232\277\244A\250?\205\354\256?\346A\021\222\335~\302?\231+E\3376?\271\277\343A\270\252\177\370\275?\213\241K\325\207>\225?\005\363\264Z\377\353\233\277\371\023d\223\022e\261?\020\360]\360\270v\300\277\300\363\231\362\335c\203?\205\317\004\357;\364\243\277@\314\270\350(\030\260?\214\307\336,\327\326\273?ip0\334\323\225\274?H\244\231\013\0255\300\277\371w\332A\333\027\261\2777\221\\)y\233\263?\252\257\245\014w<\266?\251\373xQ] \232\277is\324o+\341\314?2v\305dQ\033\265\277\262c\223iIM\230\277U\034M\224\373\377\252\277)\325\255&av\206?\021[\026g\267\327\226?\213\227\347\331\346j\272\277Z\3146\250\347;\241\277\240!d%\2361\224?\005\354\371\177\364,\264?aT\207\016sV\263\277\306U\n\177x{\260\277\201\030\245R7\014\265\27742\254\014\231\253b\277\376\255\000{\037\333\254\277\246c\274\357\225\242\222?\303)\315\311\r\361\221\2774\213\237\311K\376\267?\317\354\177\325bl\202\277\364\nf\260\004\352\303\277\204\240\273\277W%\246\277\022\027\\\201\342\246\275?\026\035\r\016:\371\241?S\003\213N\353\264\253?\346\372\273\361\216]\302?\017\265\344\200\372\267\307\277q*X\037\362o\205\277:\310\026\007N\256\261\277(NZ@\367\002\231?\016\305`\0307\374\254?*\307b\276\361\373\246\277F\341@\001\350\274\267\277\302\256\010\204\261\321\273\277\356\205\255\365\363L\312?\300\263\361\342@\230\226?\003\337\254\321\254\267\312\277\267\246i(\220\276\271\277\031\241S\371=L\256?%\031=A\260C\262\277\030\364\010\214.H\263\277T)\026\177\2602\262\277\262\237\277s\314\022\262\277K\014\177\\t\025\305\277{\250\366\373\304\021\251\277|<i\3714\263\226\277\006\361T\370j\200\254\277\364\2103\376_5\253\277V\273G\005\305W\222\277g\201\002\301\314^\265?;\267\017#/(\305\277\010\361\342\025\'\330\304\277\034)\353,T\277\304\277\3526\234\023\306\037\313?\034\235\376\353\3611\217\277\260Ae*\262\027\260\277\035H\215\337\033\351\274\277\223\210\244\234J\024\250?\0373O,\326D\261\277\314\220\315`\301\004\301\277\n<tzZ\252\316\277\355\377\314\325b\276\264\277\266M\267Ew\252w?\017\307\234^\354k\303\277\024\006\221\177\344\310\332?\311\342\261+b\372\212?u\255\300\302\232a\221\277FEAw\347\356\254?\220\234\335\\\026\032\313\277\345\254P\224\230)\300\277`\330\367M\010\323\303\277\217\347~\214\322\371\266\277f\362\024\023\332k\254?\273\253\034e\021\320\277\277\212\031\033\306\023~\224?\255\000\023\035\203\340\211?Dh\221\351\252\352\251\277\263\241G3AK\265\277\303]5\246\\\315\246\277,\n\271Q\324Z\276?Rq\314\361K\271\237\277!\007YK\322s\302?\372\241\222e_\002\300\277\221\302\031\024\312#\242?\341cv\221K\007\265\277\242\230\275\363\233g\246?\343\324)?l\262\262?\033`\315\'\232}\236?l\013U\255\226\326\224?\002o\254/\2213\235\277D)_+\331\253\241\277&\202\271Pk\215\301?K\301\253\233\013\247\262\277\313\'\314s\364`\271?n\"\214\232\3227\302?mT\230\303\362W\202?\036\027 @\345\355\255\277\344\032:L\247\360\266\277\206zB:\343\245\263?\327I\346(\305\307\277\277\261\204\023T\276k\273?\206\033\322\331\331=\274?D\024\355\t\r\001\251?^\265\213<]\304\261?\351\r\211\241\221\370\263\277\222S/<\n \260?\275\365\317Pj\'\271?\263\265\r7>#\264\277\207)R\216\215\350\263?;\024\372:\356\346\254\277\375\006\023\364\014u\221\277\212\374Le\371p\204\277\3752(\033<q\241\277\026u\325\001QB\301?`q\335\202+0\267?\021n\024OSS\213?_\312\320EA\363\232?7\'\316\240iK\257\277\212G\232\322\240\277\304\277#v#\224 \264\265?\271\364\254=\240\214\265\277\316[a\256\320\032\247?\200\034i\374\244=\300?5r\027<Q\267\312?\020\200\242\017\3115\246?$\372\367\204\257e\223?\007\035O\361\350\251\260?\030\371\360\263\035\327\271?\303y%{\221\355\245?\030\212|\025*\222\215?f\3425\007+\245\250?\222|\0253\014A\226\277\325/\275w\323\205\260\277\212 \377W\370\001\261\277}a\336g\003R\275\2775\304\227}w]{\277\213:s\030\347$\307?\311A\030\336\305[\261\277g3\330\347\361\003\243\277{\353\215%\261\n\241?\276)\r\r\344\031\300?\272\226f\177\021}\266?\243\365]\342\002\003\245?\260\030<A\303\n\250?%n\331\236\225\256\270?q_\240-P\356\251\277\223h\316z\253\362\247\277c@\036\027\315y\225?+\313>b\302\324\247?\201yC\304\236\237\250\277\341W\323\016\022\224\263?A\300e\214s\277\302\277A\272\227\346\036/\216?\276t\343.An\242\2775eu\347n~\251?\274bN\177\331\366\310\277$1\245\033C\246\236?:NT\246\342o\254?\207\206J\240\370O\204?_\224)\222=\200\241\277K\035n;\020\222\262?Y\266#\234\313\003\207?\233\010$\326\2670\247\277U\222\256\211\316\360\240?X6dVa\031\221?D*/\tq\343\310?\255A\300\356\247\231\305\277=\324J\375\271\005\276\277\230!\312\205\346:\265?w,\331\212%\345r?.\373w\022\371\274\253\277\236\255_\223\204\337\264?k\025E\366\213|\313?\366\211\0169&f\222\277\240\344\376]\003\256\215?)[=\243\201S\222\277\227\312\376\036B\323\265\277eH3\\X\225\272\277\375ttX\265\350\237\277N\363\253\337\232\323\236?\t\377}\341\255\300\262\277\233j6\204\273\355\270?\250\233$<\r\344\244\277\301\242*\225\001\305\244\277\355@\025\0366P\212?\267\216%6\274}\263\277uu\353\340\232:\314?\316\000\245\017>\350N?\273\212\354\217\365\361\232\277\003\177\262\346\030\320\244\277\024J1\236\007\354\250?\237\246vFz%\231?\367\300[\341Q\311\260?\351\026\326\314\0175\246\277C\223\243u\332\245\274?T\264\311>\244\224a\277\212O\257|\0019\251\277\263\024\311\350|r\311?Y}\013\244H9\222?\273\343\301\354:_\301\277)\313z7\237\314\263\277f\246\237\306\356\013\264?\305X\303\030\325\257\250\277\3255<\3672;\313\277i\372X.\316\220\324?\016\332\214\333s\"\255?M\3174\235M\223\271?5\203\230\363\225\000\255\277\372\271\237\233Mw\242?\020\023\354\216\263ps\277\214\275^i\2279\271?J\017\237\376\2528\303?\237\243\312?\376\266\266\277?Ka\262;\301\216\277\351\275Ws\363\341\260\277\301\"\271\366\200v\244\277%q\2158\026\207\307?\325I\301{\'2\320\277Y\305\367\202\001\321\302\277\033\307\351\254\266\r\245?a\334J\346\255\243\263?\372\223\223t,\201\250\277\3764u\270X\005\256\277*\367-\265\000l\240\277\210\265\001~\244\272\211?\013\tqs\035\275\214?\244\0376dV\321\256?\261M\220\004_*\236\277\367\210A`\206d\272?\235\r\350l\250\317\250?\205\2001\345\266\245\301\277\034kt\247\212)\277\277\340\376`ix\313\201?N\205b/\013\200\265\2772\243\252\3162,\245?\231\235\350\236$\034\270?\022\002_\275\365\005\242?l\001\223\260h\352\256?\032\273\311\263\007N\247?{\\,\333\272o\211?\027{\370\223\240\221\232?\302^\213E\361\270\217\277%\007\325;\206\245\264?V7\242\204%a\253?\235\0369M\333r\306\2772n\232\237*\007\240?H\014\3360\322;\250?QRW\006\252\203\250?c2\014/\240\274I?\345\357~b\224\224\253\277e\032\021w\350a\315?<\307\332 \'\355\275?p\020\000{\003\326\272?\252\307\033}\252N\276?\000\225\311\350\343\300\241\277\274}$/\276E\220?\232\222\214Zx\250\271\277\222\220\215c\221\221\245?\004\035s\325\032\206\267\277j\310;\307\365\346\270\277\2444F\224*\365\322?\213\300\3548t\351\263\277\r\335\316\233\3712x?*\356\370\002\330\337\266?\342\016\213\334\267|\305\277\270\000+\242\334D\254?\264\000\226\007\201^\260?\025o\020\226\336F\321\277\000\247\r\026\2034\250\277[\007v\032oK\205?\014c\311\211\316\214\202?\275eN\033hP\240\277\213\226j*e`\223?\027\233\"\204N\006\237?6\314Z\357\020\265\321\277\340Xl\323\233_\234?\004\016d}\367}\261\277\327\243-\225G\270\237\2777)\341\023Ue\303?\022\t\030\241>+\264?\305\006\356\371\307\221\275\277l4\271P\231P\313?\036\336\370@0\217\247\277P|\244\370\226\310\252?\307\320[\372\342\274q\277\375\233T^\340\324\300?\253\353\227\363\367\314\303\277\276W\316\216\302\316\272?\3368\177\251\372K\274\277\335\350\364\001\277v\254\277p_3AjMe?\201\332\250*\364\256\327?\215\241\373\345k\337\260?)F\324\td\005\256?\347t\347\002\246P\264\277^XsY\207{\275\277P=dJ-G\261?D\236G\205l\231\273?\211&\253\212\'\377\310?HZ\321\341\205 \252\277\230E9\272\r\242\240?\276\207s\353n\203\301\277\024\305cz\215\366\262\277\361Q\366 @D\246\277\223Cw\343\366e\237?\313_a\277m\020\253?\306\266a\006\363z=\277\211\212\336+\226\027\307\277\315\363]&\2334\316?\203\251qq\246\033\315\277\203o\rb\276\324\235\277\357\213\264\270\237\024\277?\316\257\312\303J\315X\277\024=\003\245S\233\271?\227\314x\243\222\273\303\277m\010\202\216\351\352\237?X\314\226]~\264\306?\313\245:\272c\373_\277\005\301\261\327lR\301\277\275i^d\234r\310?\010 \350\300\344\361\256\277i\036\230\364l\252\223?d;\201@\271\354\257\277;\342@\202\2402\251?\306\353\215m\376\251\227\277\251\304\005\271v\274\214\277\241I\005<\330\224\225\277\255\205L\2377\013\247\277\021\360\\2\221|\264?{&\253\032\275\\\306?W\250\355(J\344\313\277,e\376\226L`\223\277\017:\303E\304\010\202\277X\263\321\230;\363\243\277\335\364\004\271\210\367\250?\227i\331\334\026\033@\277\352\341\353\0315\351\266?]\276\"\232\361s\226\277:\342\376\352\007\207\261\277\277\313\314\205\244^\247\277c\006\2056q.\261\277]U\375\251\004\303\201\277\016+\317\371\371\014\264\277\004k\371X\216\031\262?\327\007\261>)\361\327?v\341\312da\276\271?\321q-Nn]\222\277 D\037\021\232\365\321\277\005\231C\244\317\356\264?\270~\247fG\334\300?S|S\277\206\341\276\277\254z\237\355\n\031\243\277\376q\014\361\200]\240\277\007?L!\272\257\260\277\243J\261/\023p\275?3\017\371\226l\325\241?\306\355\362h\036d\251\277\245\276zj\2435\251?\260E\260\330\216\006y?\205p\0354\201O\305\277\242\266g\303\311\322\266?\326\206:n\275\000\213\277\221\306mJ#\337\235\277\210-\373b\270+\267?\325s`\336\342\266\274?\340\326Qe\353Q\304\277\030\242m:\371w\262\277\021\367\210\356\333\014\233?t\327\265\263\270\247\301?\364`MK\035Q\252\277\340\353q\221\246_\256?\236\010!\001\224\202\266\277B/(\366\305E\273\277i\320\253\027}\243\261?rUV\352\224m\245?\035\270\013\241Z\t\245?\226;\321\202$\014\250\277\322!\235`,\372\240?u}=\220T\342\177?>\355\215\341X\000\230\277\370\351F\n\377d\272?\364\266PN\310\332\240\277m\230J\272\346?\307?vJ5l\212\200\301\277\201$\206\223\344\260\260?m\210\276\230\273x\321\277+p\333\003\332d\307\277\252[\273o\000\227\247?\306\361\323v\305\245\246\277\026c\336JO<\200\277m\370\0105\036T\200?s<\300\247\330D\261\277\237h\277\"\336\200l?]$\263p\377\214\222?-\032\025\221\036\256\256\277,^[\032u\353\250?\310U\220dR\340\260?\225\267\322\202\205\205\240?2ro\344\265\331X\277\216xr\347\341k\262\277\310QG\032\027k\253?\023\300$\222(M\265?p?\016\203\026\373\243\277\020h[\030#\335\261?\331K\374r\317\271\262\277y\257+\327\341j\270\277\214\014\257.\020t\267\277c\213\0348JI\321?^\316\231\000\253\366\203\277\314\210\272\257 e\221\277\361\362\302\014wl\245\277\030\324\365\020Q)\236\277\360\206&\356\261j\236?\357f\006\236\314\007\304?\254\330KC\315\347\254\277\356\252\345 \241#\244\277\255tT\236+,\205?v\210\221\300\025\'\272\277\325\331~\330C\005r\277\235N\200\207\321\265\267\277\330\336\323\356\206\276\256\277\0255\227)\\H\301\277X\211\033&\017\277\263?\371W\375\035\354e\212\277\277\327\363\177\254m\214\277\214?C\252\020g\255\277\314(\236v_\351\212?\247\235\023\241\320\024\270?:\357&p\3730\265?\025\325d\026#\276\220?\035\254\331\351\\\355\274?D\303\032M\003\375\265\277\031\250\'aV\275\312?GF\263.@\216\236?V\223\317X{\372z?m\275\tJQ\276\300\277\376\334R%\037\222\272?$b\333c\307\032\254?\370\337\2430\r\246\273?\371\367*\313\267L\246\277\000@\235\211\327]\224\277\2624\355\337?\274\223?\321_)\355\213\313\314?M\310t\344\245P\252?9gM\310L,\304\277\031\tP\"\016\225\251\2772\323\316{\332\322\265?0\267!\273\225\370\222?\244\343\227_%\351\261?\037\'\344\313\352>\314?\022\024G\205\2736\273\277\233\000\360\240QE\222?\303\033W\210\357\260\201?\243\r2}\n\004\245?\203K\352\217\177\364\277\277\352\025\232\r\342N\311\277d\317\004\330\311\'\301\277R~&W\2020\263\2777YK\352Fi\241?\322\277\310i\254\206\261?a\311\372\313\206\266\261?a\327\3354;\013\205?n\264\006\261+\023\227?\270\227a\241\224\246\273?\302\200\323\010\357\253\244\277\364D\374(t\016\207?\003H\301\"\031\215\266?1\374H@\377f\252?5\276#\234\216v\272\277\255 \320\217X\301\241\277\202\231\005\035\035\242\301\277!\364=t\276\201\253?\214?\210\361\tU\263?\273\017\353\343\213$\300?IqQ\371\367$\304?\315\202\361\017\240\021\264?\371*\264?y\037\231?G\356V\005\310\222\233\277\261|\331\253Io\247\277\334<\023\367$\037\242\277\263W\237\367\356\376\300\277\264RA\225\037@\227?\367a+0?\204\204?\246\333\266\214tL\306?Np\342\247\356\021\274\277\240\305\003\201\004\362\177\277cn\353\n\3104\254?\370r\rt\026_\270?]+BF u\302?\324\237[m\256\331\231\277"
- }
- }
- }
- }
- node {
- name: "Const_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: 14
- }
- }
- tensor_content: "\247X\347\2675\264\217\2776y\323\323 \301\226\277\214\261\027Ns\000\225\2772\204\nm\231\232\237\277\306i\204\000\242\315\231\277\245D\217\003\3660\226\277\021\365B\360P\003\226?\331X2\327\340\225\235\277#\335\372\000|\000\242\277p\370\027\263\343\200\227\277\2660{\320?\205\221\277\233\341\253q5<\246\277\357\211\251\233\2604\242\277\300\245M\305}\017\241\277"
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "Const"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "Const_1"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- node {
- name: "predict"
- op: "Identity"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_DOUBLE
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- }
- }
- versions {
- producer: 27
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "input"
- value {
- name: "input:0"
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 1536
- }
- }
- }
- }
- outputs {
- key: "output"
- value {
- name: "predict:0"
- dtype: DT_DOUBLE
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 14
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt b/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt
deleted file mode 100644
index 11435ce3fa1..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/saved_model.pbtxt
+++ /dev/null
@@ -1,1999 +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_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_UINT8
- type: DT_INT8
- type: DT_INT16
- type: DT_INT32
- type: DT_INT64
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- type: DT_STRING
- }
- }
- }
- }
- op {
- name: "Assign"
- input_arg {
- name: "ref"
- type_attr: "T"
- is_ref: true
- }
- input_arg {
- name: "value"
- type_attr: "T"
- }
- output_arg {
- name: "output_ref"
- type_attr: "T"
- is_ref: true
- }
- attr {
- name: "T"
- type: "type"
- }
- attr {
- name: "validate_shape"
- type: "bool"
- default_value {
- b: true
- }
- }
- attr {
- name: "use_locking"
- type: "bool"
- default_value {
- b: true
- }
- }
- allows_uninitialized_input: true
- }
- op {
- name: "Const"
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "value"
- type: "tensor"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- }
- op {
- name: "Identity"
- input_arg {
- name: "input"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- }
- }
- op {
- name: "MatMul"
- input_arg {
- name: "a"
- type_attr: "T"
- }
- input_arg {
- name: "b"
- type_attr: "T"
- }
- output_arg {
- name: "product"
- type_attr: "T"
- }
- attr {
- name: "transpose_a"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "transpose_b"
- type: "bool"
- default_value {
- b: false
- }
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- type: DT_HALF
- type: DT_FLOAT
- type: DT_DOUBLE
- type: DT_INT32
- type: DT_COMPLEX64
- type: DT_COMPLEX128
- }
- }
- }
- }
- 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_BFLOAT16
- 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: "RandomUniform"
- input_arg {
- name: "shape"
- type_attr: "T"
- }
- output_arg {
- name: "output"
- type_attr: "dtype"
- }
- attr {
- name: "seed"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "seed2"
- type: "int"
- default_value {
- i: 0
- }
- }
- attr {
- name: "dtype"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- 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: "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_UINT8
- type: DT_INT16
- type: DT_INT8
- type: DT_INT64
- type: DT_BFLOAT16
- type: DT_UINT16
- type: DT_HALF
- type: DT_UINT32
- type: DT_UINT64
- type: DT_QINT8
- }
- }
- }
- }
- 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: "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: "Softmax"
- input_arg {
- name: "logits"
- type_attr: "T"
- }
- output_arg {
- name: "softmax"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_HALF
- type: DT_BFLOAT16
- type: DT_FLOAT
- type: DT_DOUBLE
- }
- }
- }
- }
- op {
- name: "StringJoin"
- input_arg {
- name: "inputs"
- type: DT_STRING
- number_attr: "N"
- }
- output_arg {
- name: "output"
- type: DT_STRING
- }
- attr {
- name: "N"
- type: "int"
- has_minimum: true
- minimum: 1
- }
- attr {
- name: "separator"
- type: "string"
- default_value {
- s: ""
- }
- }
- }
- op {
- name: "Sub"
- input_arg {
- name: "x"
- type_attr: "T"
- }
- input_arg {
- name: "y"
- type_attr: "T"
- }
- output_arg {
- name: "z"
- type_attr: "T"
- }
- attr {
- name: "T"
- type: "type"
- allowed_values {
- list {
- type: DT_BFLOAT16
- 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: "VariableV2"
- output_arg {
- name: "ref"
- type_attr: "dtype"
- is_ref: true
- }
- attr {
- name: "shape"
- type: "shape"
- }
- attr {
- name: "dtype"
- type: "type"
- }
- attr {
- name: "container"
- type: "string"
- default_value {
- s: ""
- }
- }
- attr {
- name: "shared_name"
- type: "string"
- default_value {
- s: ""
- }
- }
- is_stateful: true
- }
- }
- tags: "serve"
- tensorflow_version: "1.12.0"
- tensorflow_git_version: "v1.12.0-rc2-3-ga6d8ffae09"
- }
- graph_def {
- node {
- name: "input"
- op: "Placeholder"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/shape"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_INT32
- tensor_shape {
- dim {
- size: 2
- }
- }
- tensor_content: "\005\000\000\000\003\000\000\000"
- }
- }
- }
- }
- node {
- name: "random_uniform/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "random_uniform/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "random_uniform/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform/sub"
- op: "Sub"
- input: "random_uniform/max"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform/mul"
- op: "Mul"
- input: "random_uniform/RandomUniform"
- input: "random_uniform/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform"
- op: "Add"
- input: "random_uniform/mul"
- input: "random_uniform/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "weights"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "weights/Assign"
- op: "Assign"
- input: "weights"
- input: "random_uniform"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "weights/read"
- op: "Identity"
- input: "weights"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_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: 3
- }
- }
- }
- }
- node {
- name: "random_uniform_1/min"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 0.0
- }
- }
- }
- }
- node {
- name: "random_uniform_1/max"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_FLOAT
- tensor_shape {
- }
- float_val: 1.0
- }
- }
- }
- }
- node {
- name: "random_uniform_1/RandomUniform"
- op: "RandomUniform"
- input: "random_uniform_1/shape"
- attr {
- key: "T"
- value {
- type: DT_INT32
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "seed"
- value {
- i: 0
- }
- }
- attr {
- key: "seed2"
- value {
- i: 0
- }
- }
- }
- node {
- name: "random_uniform_1/sub"
- op: "Sub"
- input: "random_uniform_1/max"
- input: "random_uniform_1/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_1/mul"
- op: "Mul"
- input: "random_uniform_1/RandomUniform"
- input: "random_uniform_1/sub"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "random_uniform_1"
- op: "Add"
- input: "random_uniform_1/mul"
- input: "random_uniform_1/min"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "bias"
- op: "VariableV2"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "container"
- value {
- s: ""
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "shape"
- value {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- attr {
- key: "shared_name"
- value {
- s: ""
- }
- }
- }
- node {
- name: "bias/Assign"
- op: "Assign"
- input: "bias"
- input: "random_uniform_1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "bias/read"
- op: "Identity"
- input: "bias"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "MatMul"
- op: "MatMul"
- input: "input"
- input: "weights/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "transpose_a"
- value {
- b: false
- }
- }
- attr {
- key: "transpose_b"
- value {
- b: false
- }
- }
- }
- node {
- name: "add"
- op: "Add"
- input: "MatMul"
- input: "bias/read"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "Relu"
- op: "Relu"
- input: "add"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "output"
- op: "Softmax"
- input: "Relu"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- }
- node {
- name: "init"
- op: "NoOp"
- input: "^bias/Assign"
- input: "^weights/Assign"
- }
- node {
- name: "save/Const"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "model"
- }
- }
- }
- }
- node {
- name: "save/StringJoin/inputs_1"
- op: "Const"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- }
- string_val: "_temp_6341ee658682497a95c4fd82a2c87cc6/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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/SaveV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "bias"
- string_val: "weights"
- }
- }
- }
- }
- node {
- name: "save/SaveV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/SaveV2"
- op: "SaveV2"
- input: "save/ShardedFilename"
- input: "save/SaveV2/tensor_names"
- input: "save/SaveV2/shape_and_slices"
- input: "bias"
- input: "weights"
- device: "/device:CPU:0"
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/control_dependency"
- op: "Identity"
- input: "save/ShardedFilename"
- input: "^save/SaveV2"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- 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"
- device: "/device:CPU:0"
- attr {
- key: "delete_old_dirs"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Identity"
- op: "Identity"
- input: "save/Const"
- input: "^save/MergeV2Checkpoints"
- input: "^save/control_dependency"
- device: "/device:CPU:0"
- attr {
- key: "T"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- }
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/tensor_names"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: "bias"
- string_val: "weights"
- }
- }
- }
- }
- node {
- name: "save/RestoreV2/shape_and_slices"
- op: "Const"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 2
- }
- }
- }
- }
- }
- attr {
- key: "dtype"
- value {
- type: DT_STRING
- }
- }
- attr {
- key: "value"
- value {
- tensor {
- dtype: DT_STRING
- tensor_shape {
- dim {
- size: 2
- }
- }
- string_val: ""
- string_val: ""
- }
- }
- }
- }
- node {
- name: "save/RestoreV2"
- op: "RestoreV2"
- input: "save/Const"
- input: "save/RestoreV2/tensor_names"
- input: "save/RestoreV2/shape_and_slices"
- device: "/device:CPU:0"
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- unknown_rank: true
- }
- shape {
- unknown_rank: true
- }
- }
- }
- }
- attr {
- key: "dtypes"
- value {
- list {
- type: DT_FLOAT
- type: DT_FLOAT
- }
- }
- }
- }
- node {
- name: "save/Assign"
- op: "Assign"
- input: "bias"
- input: "save/RestoreV2"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@bias"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/Assign_1"
- op: "Assign"
- input: "weights"
- input: "save/RestoreV2:1"
- attr {
- key: "T"
- value {
- type: DT_FLOAT
- }
- }
- attr {
- key: "_class"
- value {
- list {
- s: "loc:@weights"
- }
- }
- }
- attr {
- key: "_output_shapes"
- value {
- list {
- shape {
- dim {
- size: 5
- }
- dim {
- size: 3
- }
- }
- }
- }
- }
- attr {
- key: "use_locking"
- value {
- b: true
- }
- }
- attr {
- key: "validate_shape"
- value {
- b: true
- }
- }
- }
- node {
- name: "save/restore_shard"
- op: "NoOp"
- input: "^save/Assign"
- input: "^save/Assign_1"
- }
- node {
- name: "save/restore_all"
- op: "NoOp"
- input: "^save/restore_shard"
- }
- versions {
- producer: 27
- }
- }
- 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: "trainable_variables"
- value {
- bytes_list {
- value: "\n\tweights:0\022\016weights/Assign\032\016weights/read:02\020random_uniform:08\001"
- value: "\n\006bias:0\022\013bias/Assign\032\013bias/read:02\022random_uniform_1:08\001"
- }
- }
- }
- collection_def {
- key: "variables"
- value {
- bytes_list {
- value: "\n\tweights:0\022\016weights/Assign\032\016weights/read:02\020random_uniform:08\001"
- value: "\n\006bias:0\022\013bias/Assign\032\013bias/read:02\022random_uniform_1:08\001"
- }
- }
- }
- signature_def {
- key: "serving_default"
- value {
- inputs {
- key: "x"
- value {
- name: "input:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 5
- }
- }
- }
- }
- outputs {
- key: "y"
- value {
- name: "output:0"
- dtype: DT_FLOAT
- tensor_shape {
- dim {
- size: -1
- }
- dim {
- size: 3
- }
- }
- }
- }
- method_name: "tensorflow/serving/predict"
- }
- }
-}
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001 b/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001
deleted file mode 100644
index a9edaf376d0..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.data-00000-of-00001
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index b/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index
deleted file mode 100644
index 0ae49491ce6..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/saved/variables/variables.index
+++ /dev/null
Binary files differ
diff --git a/model-integration/src/test/models/tensorflow/softmax/softmax.py b/model-integration/src/test/models/tensorflow/softmax/softmax.py
deleted file mode 100644
index aab9956f914..00000000000
--- a/model-integration/src/test/models/tensorflow/softmax/softmax.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-import numpy as np
-import tensorflow as tf
-
-# Creates simple random neural network that has softmax on output. No training.
-
-n_inputs = 5
-n_outputs = 3
-
-input = tf.placeholder(tf.float32, shape=(None, n_inputs), name="input")
-W = tf.Variable(tf.random.uniform([n_inputs, n_outputs]), name="weights")
-b = tf.Variable(tf.random.uniform([n_outputs]), name="bias")
-Z = tf.matmul(input, W) + b
-hidden_layer = tf.nn.relu(Z)
-output_layer = tf.nn.softmax(hidden_layer, name="output")
-
-init = tf.global_variables_initializer()
-
-with tf.Session() as sess:
- init.run()
- export_path = "saved"
- builder = tf.saved_model.builder.SavedModelBuilder(export_path)
- signature = tf.saved_model.signature_def_utils.predict_signature_def(inputs = {'x':input}, outputs = {'y':output_layer})
- builder.add_meta_graph_and_variables(sess,
- [tf.saved_model.tag_constants.SERVING],
- signature_def_map={'serving_default':signature})
- builder.save(as_text=True)
-