TF Updates (#87)
* tf updates * pom * copyright * graphrunner tests * gpu test * getSessionOptionsConfigProto * dtype fix * Small fix Signed-off-by: AlexDBlack <blacka101@gmail.com> * cast graphs * savemodel test fix * testresource instead of local * Logging level Signed-off-by: AlexDBlack <blacka101@gmail.com> * gson dependency issue fix; fix GraphRunnerTest for no session options config case Signed-off-by: Alex Black <blacka101@gmail.com> * Final tweaks Signed-off-by: AlexDBlack <blacka101@gmail.com> * few minor fixes Signed-off-by: raver119 <raver119@gmail.com> * one more fix Signed-off-by: raver119 <raver119@gmail.com> * Tweak configuration for GraphRunnerTest Signed-off-by: AlexDBlack <blacka101@gmail.com> * nd4j align config * tf warmupmaster
parent
190575196c
commit
0d14032d26
|
@ -28,6 +28,7 @@ import org.nd4j.linalg.api.concurrency.AffinityManager;
|
|||
import org.nd4j.linalg.api.concurrency.BasicAffinityManager;
|
||||
import org.nd4j.linalg.api.ndarray.INDArray;
|
||||
import org.nd4j.linalg.factory.Nd4j;
|
||||
import org.nd4j.linalg.jcublas.buffer.BaseCudaDataBuffer;
|
||||
import org.nd4j.linalg.jcublas.context.CudaContext;
|
||||
import org.nd4j.nativeblas.NativeOpsHolder;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -298,9 +299,12 @@ public class CudaAffinityManager extends BasicAffinityManager {
|
|||
@Override
|
||||
public void ensureLocation(INDArray array, Location location) {
|
||||
// to location to ensure for empty array
|
||||
if (array.isEmpty())
|
||||
if (array.isEmpty() || array.isS())
|
||||
return;
|
||||
|
||||
// let's make sure host pointer actually exists
|
||||
((BaseCudaDataBuffer) array.data()).lazyAllocateHostPointer();
|
||||
|
||||
val point = AtomicAllocator.getInstance().getAllocationPoint(array);
|
||||
switch (location) {
|
||||
case HOST: {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015-2018 Skymind, Inc.
|
||||
* Copyright (c) 2019 Konduit K.K.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License, Version 2.0 which is available at
|
||||
|
@ -16,6 +17,12 @@
|
|||
|
||||
package org.nd4j.tensorflow.conversion;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.bytedeco.tensorflow.TF_Tensor;
|
||||
import org.nd4j.linalg.api.buffer.DataType;
|
||||
import org.nd4j.resources.Resources;
|
||||
import org.nd4j.shade.protobuf.Descriptors;
|
||||
import org.nd4j.shade.protobuf.util.JsonFormat;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Ignore;
|
||||
|
@ -27,6 +34,8 @@ import org.nd4j.linalg.factory.Nd4j;
|
|||
import org.nd4j.linalg.io.ClassPathResource;
|
||||
import org.nd4j.tensorflow.conversion.graphrunner.GraphRunner;
|
||||
import org.nd4j.tensorflow.conversion.graphrunner.SavedModelConfig;
|
||||
import org.tensorflow.framework.ConfigProto;
|
||||
import org.tensorflow.framework.GPUOptions;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
|
@ -39,12 +48,25 @@ import static org.junit.Assert.assertNotNull;
|
|||
|
||||
public class GraphRunnerTest {
|
||||
|
||||
public static ConfigProto getConfig(){
|
||||
String backend = Nd4j.getExecutioner().getEnvironmentInformation().getProperty("backend");
|
||||
if("CUDA".equalsIgnoreCase(backend)) {
|
||||
org.tensorflow.framework.ConfigProto configProto = org.tensorflow.framework.ConfigProto.getDefaultInstance();
|
||||
ConfigProto.Builder b = configProto.toBuilder().addDeviceFilters(TensorflowConversion.defaultDeviceForThread());
|
||||
return b.setGpuOptions(GPUOptions.newBuilder()
|
||||
.setAllowGrowth(true)
|
||||
.setPerProcessGpuMemoryFraction(0.5)
|
||||
.build()).build();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphRunner() throws Exception {
|
||||
List<String> inputs = Arrays.asList("input_0","input_1");
|
||||
byte[] content = IOUtils.toByteArray(new ClassPathResource("/tf_graphs/nd4j_convert/simple_graph/frozen_model.pb").getInputStream());
|
||||
|
||||
try(GraphRunner graphRunner = new GraphRunner(content,inputs)) {
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().graphBytes(content).inputNames(inputs).sessionOptionsConfigProto(getConfig()).build()) {
|
||||
runGraphRunnerTest(graphRunner);
|
||||
}
|
||||
}
|
||||
|
@ -52,8 +74,9 @@ public class GraphRunnerTest {
|
|||
@Test
|
||||
public void testGraphRunnerFilePath() throws Exception {
|
||||
List<String> inputs = Arrays.asList("input_0","input_1");
|
||||
File file = new ClassPathResource("/tf_graphs/nd4j_convert/simple_graph/frozen_model.pb").getFile();
|
||||
try(GraphRunner graphRunner = new GraphRunner(file.getAbsolutePath(),inputs)) {
|
||||
byte[] content = FileUtils.readFileToByteArray(Resources.asFile("/tf_graphs/nd4j_convert/simple_graph/frozen_model.pb"));
|
||||
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().graphBytes(content).inputNames(inputs).sessionOptionsConfigProto(getConfig()).build()) {
|
||||
runGraphRunnerTest(graphRunner);
|
||||
}
|
||||
}
|
||||
|
@ -62,37 +85,42 @@ public class GraphRunnerTest {
|
|||
public void testInputOutputResolution() throws Exception {
|
||||
ClassPathResource lenetPb = new ClassPathResource("tf_graphs/lenet_frozen.pb");
|
||||
byte[] content = IOUtils.toByteArray(lenetPb.getInputStream());
|
||||
GraphRunner graphRunner = new GraphRunner(content,Arrays.asList("Reshape/tensor"));
|
||||
assertEquals(1,graphRunner.getInputOrder().size());
|
||||
assertEquals(1,graphRunner.getOutputOrder().size());
|
||||
List<String> inputs = Arrays.asList("Reshape/tensor");
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().graphBytes(content).inputNames(inputs).sessionOptionsConfigProto(getConfig()).build()) {
|
||||
assertEquals(1, graphRunner.getInputOrder().size());
|
||||
assertEquals(1, graphRunner.getOutputOrder().size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test @Ignore //Ignored 2019/02/05: ssd_inception_v2_coco_2019_01_28 does not exist in test resources
|
||||
public void testMultiOutputGraph() throws Exception {
|
||||
ClassPathResource classPathResource = new ClassPathResource("/tf_graphs/examples/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb");
|
||||
GraphRunner graphRunner = new GraphRunner(classPathResource.getFile().getAbsolutePath(),Arrays.asList("image_tensor"));
|
||||
String[] outputs = new String[] { "detection_boxes", "detection_scores", "detection_classes", "num_detections"};
|
||||
List<String> inputs = Arrays.asList("image_tensor");
|
||||
byte[] content = IOUtils.toByteArray(new ClassPathResource("/tf_graphs/examples/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb").getInputStream());
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().graphBytes(content).inputNames(inputs).sessionOptionsConfigProto(getConfig()).build()) {
|
||||
String[] outputs = new String[]{"detection_boxes", "detection_scores", "detection_classes", "num_detections"};
|
||||
|
||||
assertEquals(1,graphRunner.getInputOrder().size());
|
||||
System.out.println(graphRunner.getOutputOrder());
|
||||
assertEquals(4,graphRunner.getOutputOrder().size());
|
||||
assertEquals(1, graphRunner.getInputOrder().size());
|
||||
System.out.println(graphRunner.getOutputOrder());
|
||||
assertEquals(4, graphRunner.getOutputOrder().size());
|
||||
}
|
||||
}
|
||||
|
||||
private void runGraphRunnerTest(GraphRunner graphRunner) throws Exception {
|
||||
|
||||
org.tensorflow.framework.ConfigProto.Builder builder = org.tensorflow.framework.ConfigProto.newBuilder();
|
||||
String json = graphRunner.sessionOptionsToJson();
|
||||
JsonFormat.parser().merge(json,builder);
|
||||
org.tensorflow.framework.ConfigProto build = builder.build();
|
||||
assertEquals(build,graphRunner.getProtoBufConfigProto());
|
||||
if( json != null ) {
|
||||
org.tensorflow.framework.ConfigProto.Builder builder = org.tensorflow.framework.ConfigProto.newBuilder();
|
||||
JsonFormat.parser().merge(json, builder);
|
||||
org.tensorflow.framework.ConfigProto build = builder.build();
|
||||
assertEquals(build,graphRunner.getSessionOptionsConfigProto());
|
||||
}
|
||||
assertNotNull(graphRunner.getInputOrder());
|
||||
assertNotNull(graphRunner.getOutputOrder());
|
||||
|
||||
|
||||
org.tensorflow.framework.ConfigProto configProto1 = GraphRunner.fromJson(json);
|
||||
org.tensorflow.framework.ConfigProto configProto1 = json == null ? null : GraphRunner.fromJson(json);
|
||||
|
||||
assertEquals(graphRunner.getProtoBufConfigProto(),configProto1);
|
||||
assertEquals(graphRunner.getSessionOptionsConfigProto(),configProto1);
|
||||
assertEquals(2,graphRunner.getInputOrder().size());
|
||||
assertEquals(1,graphRunner.getOutputOrder().size());
|
||||
|
||||
|
@ -125,15 +153,31 @@ public class GraphRunnerTest {
|
|||
.signatureKey("incr_counter_by")
|
||||
.modelTag("serve")
|
||||
.build();
|
||||
try(GraphRunner graphRunner = new GraphRunner(savedModelConfig)) {
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().savedModelConfig(savedModelConfig).sessionOptionsConfigProto(getConfig()).build()) {
|
||||
INDArray delta = Nd4j.create(new float[] { 42 }, new long[0]);
|
||||
Map<String,INDArray> inputs = new LinkedHashMap<>();
|
||||
inputs.put("delta",delta);
|
||||
inputs.put("delta:0",delta);
|
||||
Map<String,INDArray> outputs = graphRunner.run(inputs);
|
||||
assertEquals(1, outputs.size());
|
||||
INDArray output = outputs.get("output");
|
||||
System.out.println(Arrays.toString(outputs.keySet().toArray(new String[0])));
|
||||
INDArray output = outputs.values().toArray(new INDArray[0])[0];
|
||||
assertEquals(42.0, output.getDouble(0), 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGraphRunnerCast() {
|
||||
INDArray arr = Nd4j.linspace(1,4,4).castTo(DataType.FLOAT);
|
||||
TF_Tensor tensor = TensorflowConversion.getInstance().tensorFromNDArray(arr);
|
||||
TF_Tensor tf_tensor = GraphRunner.castTensor(tensor, TensorDataType.FLOAT,TensorDataType.DOUBLE);
|
||||
INDArray doubleNDArray = TensorflowConversion.getInstance().ndArrayFromTensor(tf_tensor);
|
||||
TestCase.assertEquals(DataType.DOUBLE,doubleNDArray.dataType());
|
||||
|
||||
arr = arr.castTo(DataType.INT);
|
||||
tensor = TensorflowConversion.getInstance().tensorFromNDArray(arr);
|
||||
tf_tensor = GraphRunner.castTensor(tensor, TensorDataType.fromNd4jType(DataType.INT),TensorDataType.DOUBLE);
|
||||
doubleNDArray = TensorflowConversion.getInstance().ndArrayFromTensor(tf_tensor);
|
||||
TestCase.assertEquals(DataType.DOUBLE,doubleNDArray.dataType());
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015-2018 Skymind, Inc.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License, Version 2.0 which is available at
|
||||
* https://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.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
******************************************************************************/
|
||||
|
||||
package org.nd4j.tensorflow.conversion;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.nd4j.tensorflow.conversion.graphrunner.GraphRunner;
|
||||
import org.tensorflow.framework.ConfigProto;
|
||||
|
||||
import static junit.framework.TestCase.assertTrue;
|
||||
|
||||
public class GpuDeviceAlignmentTest {
|
||||
|
||||
@Test
|
||||
public void testDeviceAlignment() {
|
||||
ConfigProto configProto = GraphRunner.getAlignedWithNd4j();
|
||||
assertTrue(configProto.getDeviceFilters(0).contains("gpu"));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
/*******************************************************************************
|
||||
/* ******************************************************************************
|
||||
* Copyright (c) 2015-2018 Skymind, Inc.
|
||||
* Copyright (c) 2019 Konduit K.K.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License, Version 2.0 which is available at
|
||||
|
@ -18,7 +19,6 @@ package org.nd4j.tensorflow.conversion;
|
|||
|
||||
import org.nd4j.shade.protobuf.util.JsonFormat;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.nd4j.linalg.api.ndarray.INDArray;
|
||||
import org.nd4j.linalg.factory.Nd4j;
|
||||
|
@ -28,6 +28,7 @@ import org.tensorflow.framework.ConfigProto;
|
|||
import org.tensorflow.framework.GPUOptions;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
@ -36,34 +37,34 @@ import java.util.Map;
|
|||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
@Ignore("AB 2019/05/24 - Failing on CI - no jnitensorflow in java.library.path - see issue #7657")
|
||||
public class GpuGraphRunnerTest {
|
||||
|
||||
@Test
|
||||
public void testGraphRunner() throws Exception {
|
||||
File f = new ClassPathResource("/tf_graphs/nd4j_convert/simple_graph/frozen_model.pb").getFile();
|
||||
byte[] content = IOUtils.toByteArray(new FileInputStream(new File("C:\\Users\\fariz\\code\\dl4j-test-resources\\src\\main\\resources\\tf_graphs\\nd4j_convert\\simple_graph\\frozen_model.pb")));
|
||||
//byte[] content = IOUtils.toByteArray(new ClassPathResource("/tf_graphs/nd4j_convert/simple_graph/frozen_model.pb").getInputStream());
|
||||
List<String> inputNames = Arrays.asList("input_0","input_1");
|
||||
|
||||
ConfigProto configProto = ConfigProto.newBuilder()
|
||||
.setGpuOptions(GPUOptions.newBuilder()
|
||||
.setPerProcessGpuMemoryFraction(0.01)
|
||||
.setPerProcessGpuMemoryFraction(0.1)
|
||||
.setAllowGrowth(false)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
try(GraphRunner graphRunner = new GraphRunner(f.getAbsolutePath(), inputNames, configProto)) {
|
||||
try(GraphRunner graphRunner = GraphRunner.builder().graphBytes(content).inputNames(inputNames).sessionOptionsConfigProto(configProto).build()) {
|
||||
org.tensorflow.framework.ConfigProto.Builder builder = org.tensorflow.framework.ConfigProto.newBuilder();
|
||||
String json = graphRunner.sessionOptionsToJson();
|
||||
JsonFormat.parser().merge(json,builder);
|
||||
org.tensorflow.framework.ConfigProto build = builder.build();
|
||||
assertEquals(build,graphRunner.getProtoBufConfigProto());
|
||||
assertEquals(build,graphRunner.getSessionOptionsConfigProto());
|
||||
assertNotNull(graphRunner.getInputOrder());
|
||||
assertNotNull(graphRunner.getOutputOrder());
|
||||
|
||||
|
||||
org.tensorflow.framework.ConfigProto configProto1 = GraphRunner.fromJson(json);
|
||||
|
||||
assertEquals(graphRunner.getProtoBufConfigProto(),configProto1);
|
||||
assertEquals(graphRunner.getSessionOptionsConfigProto(),configProto1);
|
||||
assertEquals(2,graphRunner.getInputOrder().size());
|
||||
assertEquals(1,graphRunner.getOutputOrder().size());
|
||||
|
||||
|
@ -83,9 +84,4 @@ public class GpuGraphRunnerTest {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -45,9 +45,20 @@
|
|||
<artifactId>tensorflow</artifactId>
|
||||
<version>${tensorflow.javacpp.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>tensorflow-platform</artifactId>
|
||||
<version>${tensorflow.javacpp.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>${gson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -0,0 +1,131 @@
|
|||
/* ******************************************************************************
|
||||
* Copyright (c) 2015-2018 Skymind, Inc.
|
||||
* Copyright (c) 2019 Konduit K.K.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License, Version 2.0 which is available at
|
||||
* https://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.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
******************************************************************************/
|
||||
|
||||
package org.nd4j.tensorflow.conversion;
|
||||
|
||||
import org.nd4j.linalg.api.buffer.DataType;
|
||||
import org.nd4j.linalg.api.ndarray.INDArray;
|
||||
import org.nd4j.linalg.compression.CompressedDataBuffer;
|
||||
import org.nd4j.linalg.compression.CompressionDescriptor;
|
||||
|
||||
public enum TensorDataType {
|
||||
INVALID,
|
||||
FLOAT,
|
||||
DOUBLE,
|
||||
INT32,
|
||||
UINT8,
|
||||
INT16,
|
||||
INT8,
|
||||
STRING,
|
||||
COMPLEX64,
|
||||
INT64,
|
||||
BOOL,
|
||||
QINT8,
|
||||
QUINT8,
|
||||
QINT32,
|
||||
BFLOAT16,
|
||||
QINT16,
|
||||
QUINT16,
|
||||
UINT16,
|
||||
COMPLEX128,
|
||||
HALF,
|
||||
RESOURCE,
|
||||
VARIANT,
|
||||
UINT32,
|
||||
UINT64;
|
||||
|
||||
|
||||
/**
|
||||
* Map a tensor data type to a proto value found in tensorflow.
|
||||
* Generally, this is just replacing DT_ with empty
|
||||
* and returning enum.valueOf(string)
|
||||
* @param value the input string
|
||||
* @return the associated {@link TensorDataType}
|
||||
*/
|
||||
public static TensorDataType fromProtoValue(String value) {
|
||||
String valueReplace = value.replace("DT_","");
|
||||
return TensorDataType.valueOf(valueReplace);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the python name for the given data type
|
||||
* @param tensorDataType the python name for the given data type
|
||||
* @return float64 for double, float32 for double, float16 for half, otherwise
|
||||
* the type's name converted to lower case
|
||||
*/
|
||||
public static String toPythonName(TensorDataType tensorDataType) {
|
||||
switch(tensorDataType) {
|
||||
case DOUBLE: return "float64";
|
||||
case FLOAT: return "float32";
|
||||
case HALF: return "float16";
|
||||
|
||||
default: return tensorDataType.name().toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
public static DataType toNd4jType(TensorDataType tensorDataType) {
|
||||
switch(tensorDataType) {
|
||||
case FLOAT: return DataType.FLOAT;
|
||||
case DOUBLE: return DataType.DOUBLE;
|
||||
case BOOL: return DataType.BOOL;
|
||||
case INT32: return DataType.INT;
|
||||
case INT64: return DataType.LONG;
|
||||
case STRING: return DataType.UTF8;
|
||||
case HALF: return DataType.HALF;
|
||||
default: throw new IllegalArgumentException("Unsupported type " + tensorDataType.name());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static TensorDataType fromNd4jType(DataType dataType) {
|
||||
switch(dataType) {
|
||||
case FLOAT: return TensorDataType.FLOAT;
|
||||
case LONG: return TensorDataType.INT64;
|
||||
case INT: return TensorDataType.INT32;
|
||||
case BOOL: return TensorDataType.BOOL;
|
||||
case DOUBLE: return TensorDataType.DOUBLE;
|
||||
case HALF: return TensorDataType.HALF;
|
||||
case UTF8: return TensorDataType.STRING;
|
||||
case COMPRESSED: throw new IllegalStateException("Unable to work with compressed data type. Could be 1 or more types.");
|
||||
case SHORT: return TensorDataType.INT16;
|
||||
default: throw new IllegalArgumentException("Unknown data type " + dataType);
|
||||
}
|
||||
}
|
||||
|
||||
public static TensorDataType fromNd4jType(INDArray array) {
|
||||
DataType dataType = array.dataType();
|
||||
switch(dataType) {
|
||||
case COMPRESSED:
|
||||
CompressedDataBuffer compressedData = (CompressedDataBuffer) array.data();
|
||||
CompressionDescriptor desc = compressedData.getCompressionDescriptor();
|
||||
String algo = desc.getCompressionAlgorithm();
|
||||
switch (algo) {
|
||||
case "FLOAT16": return HALF;
|
||||
case "INT8": return INT8;
|
||||
case "UINT8": return UINT8;
|
||||
case "INT16": return INT16;
|
||||
case "UINT16": return UINT16;
|
||||
default: throw new IllegalArgumentException("Unsupported compression algorithm: " + algo);
|
||||
}
|
||||
|
||||
default: return fromNd4jType(dataType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -239,7 +239,8 @@ public class TensorflowConversion {
|
|||
DataBuffer d = Nd4j.createBuffer(indexer.pointer(),nd4jType,length,indexer);
|
||||
array = Nd4j.create(d,ndShape);
|
||||
}
|
||||
Nd4j.getAffinityManager().tagLocation(array, AffinityManager.Location.HOST);
|
||||
// we don't need this in this case. Device memory will be updated right in the constructor
|
||||
//Nd4j.getAffinityManager().tagLocation(array, AffinityManager.Location.HOST);
|
||||
return array;
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,17 @@
|
|||
import tensorflow as tf
|
||||
|
||||
dtypes = [tf.float16,tf.float32,tf.float64,tf.int8,tf.int16,tf.int32,tf.int64,tf.uint8,tf.uint16,tf.uint32,tf.uint64]
|
||||
# Quick solution from https://stackoverflow.com/questions/5360220/how-to-split-a-list-into-pairs-in-all-possible-ways :)
|
||||
import itertools
|
||||
def all_pairs(lst):
|
||||
return [(x,y) for x in dtypes for y in dtypes]
|
||||
|
||||
|
||||
for item in all_pairs(dtypes):
|
||||
from_dtype, out_dtype = item
|
||||
tf.reset_default_graph()
|
||||
input = tf.placeholder(name='input',dtype=from_dtype)
|
||||
result = tf.cast(input,name='cast_output',dtype=out_dtype)
|
||||
|
||||
with tf.Session() as session:
|
||||
tf.train.write_graph(tf.get_default_graph(),logdir='.',name='cast_' + from_dtype.name + '_' + out_dtype.name + '.pb',as_text=True)
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0 *
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0 *
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0 "
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0 *
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0 *
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0 *
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
DstT0*
|
||||
|
||||
SrcT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0 "
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
dtype0*
|
||||
shape:"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
0
|
||||
inputPlaceholder*
|
||||
shape:*
|
||||
dtype0
|
||||
2
|
||||
cast_outputCastinput*
|
||||
|
||||
SrcT0*
|
||||
|
||||
DstT0"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue