From a192d88c847bea05f4fd9ff90c4e0ac0904f3164 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Thu, 15 Aug 2019 22:28:41 -0500 Subject: [PATCH] Object Detection pass. --- .../Sessions/BaseSession.cs | 6 +- .../Sessions/_ElementFetchMapper.cs | 48 +++- .../Sessions/_FetchHandler.cs | 5 +- .../Sessions/_FetchMapper.cs | 18 +- .../TensorFlowNET.Core.csproj | 2 +- .../Tensors/Tensor.Creation.cs | 4 +- src/TensorFlowNET.Core/Tensors/Tensor.cs | 3 +- src/TensorFlowNET.Core/Tensors/TensorShape.cs | 8 +- src/TensorFlowNET.Core/Tensors/tensor_util.cs | 5 +- src/TensorFlowNET.Core/ops.py.cs | 2 +- .../BasicModels/LinearRegression.cs | 10 +- .../BasicModels/LogisticRegression.cs | 2 +- .../BasicModels/NearestNeighbor.cs | 2 +- .../ImageRecognitionInception.cs | 2 +- .../ImageProcessing/ObjectDetection.cs | 12 +- .../ImageProcessing/RetrainImageClassifier.cs | 2 +- .../TextProcessing/CnnTextClassification.cs | 2 +- test/TensorFlowNET.UnitTest/ConstantTest.cs | 34 +-- test/TensorFlowNET.UnitTest/GradientTest.cs | 6 +- test/TensorFlowNET.UnitTest/OperationsTest.cs | 222 +++++++++--------- .../TensorFlowNET.UnitTest/PlaceholderTest.cs | 2 +- test/TensorFlowNET.UnitTest/VariableTest.cs | 10 +- 22 files changed, 210 insertions(+), 197 deletions(-) diff --git a/src/TensorFlowNET.Core/Sessions/BaseSession.cs b/src/TensorFlowNET.Core/Sessions/BaseSession.cs index 46daf2ec..d22dc888 100644 --- a/src/TensorFlowNET.Core/Sessions/BaseSession.cs +++ b/src/TensorFlowNET.Core/Sessions/BaseSession.cs @@ -54,19 +54,19 @@ namespace Tensorflow status.Check(true); } - public virtual NDArray run(object fetches, params FeedItem[] feed_dict) + public virtual NDArray[] run(object fetches, params FeedItem[] feed_dict) { return _run(fetches, feed_dict); } - public virtual NDArray run(object fetches, Hashtable feed_dict = null) + public virtual NDArray[] run(object fetches, Hashtable feed_dict = null) { var feed_items = feed_dict == null ? new FeedItem[0] : feed_dict.Keys.OfType().Select(key => new FeedItem(key, feed_dict[key])).ToArray(); return _run(fetches, feed_items); } - private NDArray _run(object fetches, FeedItem[] feed_dict = null) + private NDArray[] _run(object fetches, FeedItem[] feed_dict = null) { var feed_dict_tensor = new Dictionary(); var feed_map = new Dictionary(); diff --git a/src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs b/src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs index ca864ba6..bc1ea0b7 100644 --- a/src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs +++ b/src/TensorFlowNET.Core/Sessions/_ElementFetchMapper.cs @@ -17,6 +17,7 @@ using NumSharp; using System; using System.Collections.Generic; +using System.Numerics; namespace Tensorflow { @@ -45,9 +46,9 @@ namespace Tensorflow /// /// /// - public override NDArray build_results(List values) + public override NDArray[] build_results(List values) { - NDArray result = null; + NDArray[] result = null; if (values.Count > 0) { @@ -55,26 +56,53 @@ namespace Tensorflow switch (ret) { case NDArray value: - result = value; + result = new[] { value }; + break; +#if _REGEN + %types=["sbyte", "bool", "byte", "short", "ushort", "int", "uint", "long", "ulong", "float", "double", "Complex"] + %foreach types% + case #1 value: + result = new[] { NDArray.Scalar(value) }; + break; + % +#else + case sbyte value: + result = new[] { NDArray.Scalar(value) }; + break; + case bool value: + result = new[] { NDArray.Scalar(value) }; + break; + case byte value: + result = new[] { NDArray.Scalar(value) }; break; case short value: - result = value; + result = new[] { NDArray.Scalar(value) }; + break; + case ushort value: + result = new[] { NDArray.Scalar(value) }; break; case int value: - result = value; + result = new[] { NDArray.Scalar(value) }; + break; + case uint value: + result = new[] { NDArray.Scalar(value) }; break; case long value: - result = value; + result = new[] { NDArray.Scalar(value) }; + break; + case ulong value: + result = new[] { NDArray.Scalar(value) }; break; case float value: - result = value; + result = new[] { NDArray.Scalar(value) }; break; case double value: - result = value; + result = new[] { NDArray.Scalar(value) }; break; - case string value: - result = value; + case Complex value: + result = new[] { NDArray.Scalar(value) }; break; +#endif default: break; } diff --git a/src/TensorFlowNET.Core/Sessions/_FetchHandler.cs b/src/TensorFlowNET.Core/Sessions/_FetchHandler.cs index fd076f2c..96209934 100644 --- a/src/TensorFlowNET.Core/Sessions/_FetchHandler.cs +++ b/src/TensorFlowNET.Core/Sessions/_FetchHandler.cs @@ -57,7 +57,7 @@ namespace Tensorflow _final_fetches = _fetches; } - public NDArray build_results(BaseSession session, NDArray[] tensor_values) + public NDArray[] build_results(BaseSession session, NDArray[] tensor_values) { var full_values = new List(); if (_final_fetches.Count != tensor_values.Length) @@ -123,8 +123,7 @@ namespace Tensorflow } else { - //full_values.Add(value.GetNDArrays()); - full_values.Add(value); + full_values.Add(value[np.arange(0, value.shape[0])]); } } i += 1; diff --git a/src/TensorFlowNET.Core/Sessions/_FetchMapper.cs b/src/TensorFlowNET.Core/Sessions/_FetchMapper.cs index 5437c48b..534cdcd7 100644 --- a/src/TensorFlowNET.Core/Sessions/_FetchMapper.cs +++ b/src/TensorFlowNET.Core/Sessions/_FetchMapper.cs @@ -37,23 +37,9 @@ namespace Tensorflow return new _ElementFetchMapper(fetches, (List fetched_vals) => fetched_vals[0]); } - public virtual NDArray build_results(List values) + public virtual NDArray[] build_results(List values) { - // if they're all scalar value - bool isAllScalars = values.Count(x => x.ndim == 0) == values.Count; - if (isAllScalars) - { - var type = values[0].dtype; - switch(Type.GetTypeCode(type)) - { - case TypeCode.Single: - return np.array(values.Select(x => (float)x).ToArray()); - default: - throw new NotImplementedException("build_results"); - } - } - - return np.stack(values.ToArray()); + return values.ToArray(); } public virtual List unique_fetches() diff --git a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj index 82efedee..d6a71320 100644 --- a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj +++ b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj @@ -37,7 +37,7 @@ Docs: https://tensorflownet.readthedocs.io 15. Fix Tensor memory leak. 16. Rename with to tf_with that is only used to build graph purpose. 17. Graph inherit from DisposableObject. - 7.2 + 7.3 0.10.11.0 LICENSE true diff --git a/src/TensorFlowNET.Core/Tensors/Tensor.Creation.cs b/src/TensorFlowNET.Core/Tensors/Tensor.Creation.cs index ad83fc0b..63fda866 100644 --- a/src/TensorFlowNET.Core/Tensors/Tensor.Creation.cs +++ b/src/TensorFlowNET.Core/Tensors/Tensor.Creation.cs @@ -531,8 +531,8 @@ namespace Tensorflow var handle = TF_NewTensor(dtype, dims: nd.shape.Select(i=>(long)i).ToArray(), num_dims: nd.ndim, data: ptr, len: (UIntPtr)num_bytes, deallocator: _nothingDeallocator, ref _deallocatorArgs); IsMemoryOwner = false; return handle; - } - + } + public unsafe Tensor(byte[][] buffer, long[] shape) { int size = 0; diff --git a/src/TensorFlowNET.Core/Tensors/Tensor.cs b/src/TensorFlowNET.Core/Tensors/Tensor.cs index 75c226a6..312dde43 100644 --- a/src/TensorFlowNET.Core/Tensors/Tensor.cs +++ b/src/TensorFlowNET.Core/Tensors/Tensor.cs @@ -394,9 +394,8 @@ namespace Tensorflow protected override void DisposeManagedState() { - if (gcHandle.IsAllocated) - gcHandle.Free(); } + protected override void DisposeUnManagedState(IntPtr handle) { if(handle != IntPtr.Zero) diff --git a/src/TensorFlowNET.Core/Tensors/TensorShape.cs b/src/TensorFlowNET.Core/Tensors/TensorShape.cs index 5def9348..13258f79 100644 --- a/src/TensorFlowNET.Core/Tensors/TensorShape.cs +++ b/src/TensorFlowNET.Core/Tensors/TensorShape.cs @@ -71,12 +71,12 @@ namespace Tensorflow return new TensorShape(); else { - var concatenate_dims = new int[NDim + other.NDim]; - for (int i = 0; i < NDim; i++) + var concatenate_dims = new int[ndim + other.ndim]; + for (int i = 0; i < ndim; i++) concatenate_dims[i] = dims[i]; - for (int i = 0; i < other.NDim; i++) - concatenate_dims[NDim + i] = other.dims[i]; + for (int i = 0; i < other.ndim; i++) + concatenate_dims[ndim + i] = other.dims[i]; return new TensorShape(concatenate_dims); } diff --git a/src/TensorFlowNET.Core/Tensors/tensor_util.cs b/src/TensorFlowNET.Core/Tensors/tensor_util.cs index f7089a8e..ded105c7 100644 --- a/src/TensorFlowNET.Core/Tensors/tensor_util.cs +++ b/src/TensorFlowNET.Core/Tensors/tensor_util.cs @@ -212,7 +212,7 @@ namespace Tensorflow if (values.GetType().IsArray) nparray = np.array((string[])values, np_dt); else - nparray = Convert.ToString(values); + nparray = NDArray.FromString(Convert.ToString(values)); break; case "Boolean": if (values.GetType().IsArray) @@ -267,7 +267,10 @@ namespace Tensorflow if (numpy_dtype == TF_DataType.TF_STRING && !(values is NDArray)) { if (values is string str) + { tensor_proto.StringVal.Add(Google.Protobuf.ByteString.CopyFromUtf8(str)); + tensor_proto.TensorShape = tensor_util.as_shape(new int[0]); + } else if (values is string[] str_values) tensor_proto.StringVal.AddRange(str_values.Select(x => Google.Protobuf.ByteString.CopyFromUtf8(x))); else if(values is byte[] byte_values) diff --git a/src/TensorFlowNET.Core/ops.py.cs b/src/TensorFlowNET.Core/ops.py.cs index 979e132e..ef313f49 100644 --- a/src/TensorFlowNET.Core/ops.py.cs +++ b/src/TensorFlowNET.Core/ops.py.cs @@ -377,7 +377,7 @@ namespace Tensorflow "`eval(session=sess)`."); } - return session.run(tensor, feed_dict); + return session.run(tensor, feed_dict)[0]; } /// diff --git a/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs b/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs index 0098404d..6fb6c08d 100644 --- a/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs +++ b/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs @@ -91,16 +91,16 @@ namespace TensorFlowNET.Examples { var c = sess.run(cost, new FeedItem(X, train_X), - new FeedItem(Y, train_Y)); - Console.WriteLine($"Epoch: {epoch + 1} cost={c} " + $"W={sess.run(W)} b={sess.run(b)}"); + new FeedItem(Y, train_Y))[0]; + Console.WriteLine($"Epoch: {epoch + 1} cost={c} " + $"W={sess.run(W)[0]} b={sess.run(b)[0]}"); } } Console.WriteLine("Optimization Finished!"); var training_cost = sess.run(cost, new FeedItem(X, train_X), - new FeedItem(Y, train_Y)); - Console.WriteLine($"Training cost={training_cost} W={sess.run(W)} b={sess.run(b)}"); + new FeedItem(Y, train_Y))[0]; + Console.WriteLine($"Training cost={training_cost} W={sess.run(W)[0]} b={sess.run(b)[0]}"); // Testing example var test_X = np.array(6.83f, 4.668f, 8.9f, 7.91f, 5.7f, 8.7f, 3.1f, 2.1f); @@ -108,7 +108,7 @@ namespace TensorFlowNET.Examples Console.WriteLine("Testing... (Mean square loss Comparison)"); var testing_cost = sess.run(tf.reduce_sum(tf.pow(pred - Y, 2.0f)) / (2.0f * test_X.shape[0]), new FeedItem(X, test_X), - new FeedItem(Y, test_Y)); + new FeedItem(Y, test_Y))[0]; Console.WriteLine($"Testing cost={testing_cost}"); var diff = Math.Abs((float)training_cost - (float)testing_cost); Console.WriteLine($"Absolute mean square loss difference: {diff}"); diff --git a/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs b/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs index 263023ef..3f6756f6 100644 --- a/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs +++ b/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs @@ -162,7 +162,7 @@ namespace TensorFlowNET.Examples var (batch_xs, batch_ys) = mnist.Train.GetNextBatch(10); var results = sess.run(output, new FeedItem(input, batch_xs[np.arange(1)])); - if (results.argmax() == (batch_ys[0] as NDArray).argmax()) + if (results[0].argmax() == (batch_ys[0] as NDArray).argmax()) print("predicted OK!"); else throw new ValueError("predict error, should be 90% accuracy"); diff --git a/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs b/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs index 7ae34364..5e471e6e 100644 --- a/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs +++ b/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs @@ -64,7 +64,7 @@ namespace TensorFlowNET.Examples foreach(int i in range(Xte.shape[0])) { // Get nearest neighbor - long nn_index = sess.run(pred, new FeedItem(xtr, Xtr), new FeedItem(xte, Xte[i])); + long nn_index = sess.run(pred, new FeedItem(xtr, Xtr), new FeedItem(xte, Xte[i]))[0]; // Get nearest neighbor class label and compare it to its true label int index = (int)nn_index; diff --git a/test/TensorFlowNET.Examples/ImageProcessing/ImageRecognitionInception.cs b/test/TensorFlowNET.Examples/ImageProcessing/ImageRecognitionInception.cs index 548c84f4..d53ddb3f 100644 --- a/test/TensorFlowNET.Examples/ImageProcessing/ImageRecognitionInception.cs +++ b/test/TensorFlowNET.Examples/ImageProcessing/ImageRecognitionInception.cs @@ -51,7 +51,7 @@ namespace TensorFlowNET.Examples { sw.Restart(); - var results = sess.run(output_operation.outputs[0], new FeedItem(input_operation.outputs[0], nd)); + var results = sess.run(output_operation.outputs[0], new FeedItem(input_operation.outputs[0], nd))[0]; results = np.squeeze(results); int idx = np.argmax(results); diff --git a/test/TensorFlowNET.Examples/ImageProcessing/ObjectDetection.cs b/test/TensorFlowNET.Examples/ImageProcessing/ObjectDetection.cs index bb7263fd..a21a0e6f 100644 --- a/test/TensorFlowNET.Examples/ImageProcessing/ObjectDetection.cs +++ b/test/TensorFlowNET.Examples/ImageProcessing/ObjectDetection.cs @@ -78,9 +78,7 @@ namespace TensorFlowNET.Examples var results = sess.run(outTensorArr, new FeedItem(imgTensor, imgArr)); - NDArray[] resultArr = results.GetNDArrays(); - - buildOutputImage(resultArr); + buildOutputImage(results); } public void PrepareData() @@ -110,7 +108,7 @@ namespace TensorFlowNET.Examples var dims_expander = tf.expand_dims(casted, 0); using (var sess = tf.Session(graph)) - return sess.run(dims_expander); + return sess.run(dims_expander)[0]; } private void buildOutputImage(NDArray[] resultArr) @@ -122,12 +120,13 @@ namespace TensorFlowNET.Examples Bitmap bitmap = new Bitmap(Path.Join(imageDir, "input.jpg")); var scores = resultArr[2].AsIterator(); + var boxes = resultArr[1].GetData(); + var id = np.squeeze(resultArr[3]).GetData(); for (int i=0; i< scores.size; i++) { float score = scores.MoveNext(); if (score > MIN_SCORE) { - float[] boxes = resultArr[1].GetData().ToArray(); float top = boxes[i * 4] * bitmap.Height; float left = boxes[i * 4 + 1] * bitmap.Width; float bottom = boxes[i * 4 + 2] * bitmap.Height; @@ -141,8 +140,7 @@ namespace TensorFlowNET.Examples Height = (int)(bottom - top) }; - var id = (int)resultArr[3].GetValue(i); - string name = pbTxtItems.items.Where(w => w.id == id).Select(s=>s.display_name).FirstOrDefault(); + string name = pbTxtItems.items.Where(w => w.id == id[i]).Select(s=>s.display_name).FirstOrDefault(); drawObjectOnBitmap(bitmap, rect, score, name); } diff --git a/test/TensorFlowNET.Examples/ImageProcessing/RetrainImageClassifier.cs b/test/TensorFlowNET.Examples/ImageProcessing/RetrainImageClassifier.cs index 90660778..7246c42e 100644 --- a/test/TensorFlowNET.Examples/ImageProcessing/RetrainImageClassifier.cs +++ b/test/TensorFlowNET.Examples/ImageProcessing/RetrainImageClassifier.cs @@ -455,7 +455,7 @@ namespace TensorFlowNET.Examples // First decode the JPEG image, resize it, and rescale the pixel values. var resized_input_values = sess.run(decoded_image_tensor, new FeedItem(image_data_tensor, new Tensor(image_data, TF_DataType.TF_STRING))); // Then run it through the recognition network. - var bottleneck_values = sess.run(bottleneck_tensor, new FeedItem(resized_input_tensor, resized_input_values)); + var bottleneck_values = sess.run(bottleneck_tensor, new FeedItem(resized_input_tensor, resized_input_values))[0]; bottleneck_values = np.squeeze(bottleneck_values); return bottleneck_values; } diff --git a/test/TensorFlowNET.Examples/TextProcessing/CnnTextClassification.cs b/test/TensorFlowNET.Examples/TextProcessing/CnnTextClassification.cs index 52775e0b..8b01df7a 100644 --- a/test/TensorFlowNET.Examples/TextProcessing/CnnTextClassification.cs +++ b/test/TensorFlowNET.Examples/TextProcessing/CnnTextClassification.cs @@ -244,7 +244,7 @@ namespace TensorFlowNET.Examples [is_training] = false }; var result1 = sess.run(accuracy, valid_feed_dict); - float accuracy_value = result1; + float accuracy_value = result1[0]; sum_accuracy += accuracy_value; cnt += 1; } diff --git a/test/TensorFlowNET.UnitTest/ConstantTest.cs b/test/TensorFlowNET.UnitTest/ConstantTest.cs index 221d6196..0fbd1883 100644 --- a/test/TensorFlowNET.UnitTest/ConstantTest.cs +++ b/test/TensorFlowNET.UnitTest/ConstantTest.cs @@ -98,9 +98,9 @@ namespace TensorFlowNET.UnitTest { var result = sess.run(tensor); - Assert.AreEqual(result.shape[0], 3); - Assert.AreEqual(result.shape[1], 2); - Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 0, 0, 0, 0, 0 }, result.Data())); + Assert.AreEqual(result[0].shape[0], 3); + Assert.AreEqual(result[0].shape[1], 2); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 0, 0, 0, 0, 0 }, result[0].Data())); } // big size @@ -109,13 +109,13 @@ namespace TensorFlowNET.UnitTest { var result = sess.run(tensor); - Assert.AreEqual(result.shape[0], 200); - Assert.AreEqual(result.shape[1], 100); + Assert.AreEqual(result[0].shape[0], 200); + Assert.AreEqual(result[0].shape[1], 100); - var data = result.Data(); + var data = result[0].Data(); Assert.AreEqual(0, data[0]); Assert.AreEqual(0, data[500]); - Assert.AreEqual(0, data[result.size - 1]); + Assert.AreEqual(0, data[result[0].size - 1]); } } @@ -127,9 +127,9 @@ namespace TensorFlowNET.UnitTest { var result = sess.run(ones); - Assert.AreEqual(result.shape[0], 3); - Assert.AreEqual(result.shape[1], 2); - Assert.IsTrue(new[] { 1, 1, 1, 1, 1, 1 }.SequenceEqual(result.Data())); + Assert.AreEqual(result[0].shape[0], 3); + Assert.AreEqual(result[0].shape[1], 2); + Assert.IsTrue(new[] { 1, 1, 1, 1, 1, 1 }.SequenceEqual(result[0].Data())); } } @@ -142,9 +142,9 @@ namespace TensorFlowNET.UnitTest { var result = sess.run(halfes); - Assert.AreEqual(result.shape[0], 3); - Assert.AreEqual(result.shape[1], 2); - Assert.IsTrue(new[] { .5, .5, .5, .5, .5, .5 }.SequenceEqual(result.Data())); + Assert.AreEqual(result[0].shape[0], 3); + Assert.AreEqual(result[0].shape[1], 2); + Assert.IsTrue(new[] { .5, .5, .5, .5, .5, .5 }.SequenceEqual(result[0].Data())); } } @@ -161,10 +161,10 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var result = sess.run(tensor); - var data = result.Data(); + var data = result[0].Data(); - Assert.AreEqual(result.shape[0], 2); - Assert.AreEqual(result.shape[1], 3); + Assert.AreEqual(result[0].shape[0], 2); + Assert.AreEqual(result[0].shape[1], 3); Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 3, 1, 1, 2, 1, 3 }, data)); } } @@ -177,7 +177,7 @@ namespace TensorFlowNET.UnitTest var c = a * b; var sess = tf.Session(); - double result = sess.run(c); + double result = sess.run(c)[0]; sess.close(); Assert.AreEqual(6.0, result); diff --git a/test/TensorFlowNET.UnitTest/GradientTest.cs b/test/TensorFlowNET.UnitTest/GradientTest.cs index 372715dc..6a073471 100644 --- a/test/TensorFlowNET.UnitTest/GradientTest.cs +++ b/test/TensorFlowNET.UnitTest/GradientTest.cs @@ -41,7 +41,7 @@ namespace TensorFlowNET.UnitTest var grad = tf.gradients(y, x); Assert.AreEqual(grad[0].name, "gradients/AddN:0"); - float r = sess.run(grad[0]); + float r = sess.run(grad[0])[0]; Assert.AreEqual(r, 1.4f); } } @@ -57,7 +57,7 @@ namespace TensorFlowNET.UnitTest var grad = tf.gradients(y, x); Assert.AreEqual(grad[0].name, "gradients/AddN:0"); - float r = sess.run(grad[0]); + float r = sess.run(grad[0])[0]; Assert.AreEqual(r, 14.700001f); }); } @@ -94,7 +94,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session(graph)) { - var r = sess.run(slice); + var r = sess.run(slice)[0]; Assert.IsTrue(Enumerable.SequenceEqual(r.shape, new[] { 2, 1, 2 })); Assert.IsTrue(Enumerable.SequenceEqual(r[0].GetData(), new[] { 11, 13 })); diff --git a/test/TensorFlowNET.UnitTest/OperationsTest.cs b/test/TensorFlowNET.UnitTest/OperationsTest.cs index a91e68c5..d1db80f1 100644 --- a/test/TensorFlowNET.UnitTest/OperationsTest.cs +++ b/test/TensorFlowNET.UnitTest/OperationsTest.cs @@ -43,7 +43,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, 3.0f), new FeedItem(b, 2.0f)); - Assert.AreEqual((float)o, 5.0f); + Assert.AreEqual((float)o[0], 5.0f); } } @@ -57,7 +57,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(c); - Assert.AreEqual((float)o, 9.0f); + Assert.AreEqual((float)o[0], 9.0f); } } @@ -71,7 +71,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } } @@ -85,7 +85,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } } @@ -99,7 +99,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } b = tf.cumsum(a, exclusive: true); @@ -108,7 +108,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } b = tf.cumsum(a, reverse: true); @@ -117,7 +117,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } b = tf.cumsum(a, exclusive:true, reverse: true); @@ -126,7 +126,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(b); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } } @@ -142,7 +142,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(d); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } d = tf.cast(tf.logical_not(b), tf.int32); @@ -151,7 +151,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(d); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } d = tf.cast(tf.logical_or(b, c), tf.int32); @@ -160,7 +160,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(d); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } d = tf.cast(tf.logical_xor(b, c), tf.int32); @@ -169,7 +169,7 @@ namespace TensorFlowNET.UnitTest using (var sess = tf.Session()) { var o = sess.run(d); - Assert.IsTrue(o.array_equal(check)); + Assert.IsTrue(o[0].array_equal(check)); } } @@ -196,7 +196,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator +(Tensor x, Tensor y)` @@ -206,7 +206,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator +(Tensor x, int y)` @@ -215,7 +215,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator +(int x, Tensor y)` @@ -224,7 +224,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } #endregion @@ -245,7 +245,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator +(Tensor x, Tensor y) @@ -255,7 +255,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator +(Tensor x, float y) @@ -264,7 +264,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator +(float x, Tensor y) @@ -273,7 +273,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } #endregion @@ -294,7 +294,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator +(Tensor x, Tensor y) @@ -304,7 +304,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator +(Tensor x, double y) @@ -313,7 +313,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator +(double x, Tensor y) @@ -322,7 +322,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } #endregion } @@ -351,7 +351,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator -(Tensor x, Tensor y) @@ -361,7 +361,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator -(Tensor x, int y) @@ -370,7 +370,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator -(int x, Tensor y) @@ -379,7 +379,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, Math.Abs(intResult)); + Assert.AreEqual((int)o[0], Math.Abs(intResult)); } // Testing `operator -(Tensor x) @@ -388,7 +388,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResultTwo); + Assert.AreEqual((int)o[0], intResultTwo); } #endregion @@ -410,7 +410,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator -(Tensor x, Tensor y) @@ -420,7 +420,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator -(Tensor x, float y) @@ -429,7 +429,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator -(float x, Tensor y) @@ -438,7 +438,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, Math.Abs(floatResult)); + Assert.AreEqual((float)o[0], Math.Abs(floatResult)); } // Testing `operator -(Tensor x) @@ -447,7 +447,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResultTwo); + Assert.AreEqual((float)o[0], floatResultTwo); } #endregion @@ -469,7 +469,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator -(Tensor x, Tensor y) @@ -479,7 +479,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator -(Tensor x, double y) @@ -488,7 +488,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator -(double x, Tensor y) @@ -497,7 +497,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, Math.Abs(doubleResult)); + Assert.AreEqual((double)o[0], Math.Abs(doubleResult)); } // Testing `operator -(Tensor x) @@ -506,7 +506,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResultTwo); + Assert.AreEqual((double)o[0], doubleResultTwo); } #endregion } @@ -592,7 +592,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator *(Tensor x, Tensor y) @@ -602,7 +602,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator *(Tensor x, int y) @@ -611,7 +611,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator *(int x, Tensor y) @@ -620,7 +620,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } #endregion @@ -641,7 +641,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator *(Tensor x, Tensor y) @@ -651,7 +651,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator *(Tensor x, float y) @@ -660,7 +660,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator *(float x, Tensor y) @@ -669,7 +669,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } #endregion @@ -690,7 +690,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator *(Tensor x, Tensor y) @@ -700,7 +700,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator *(Tensor x, double y) @@ -709,7 +709,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator *(double x, Tensor y) @@ -718,7 +718,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double) o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } #endregion } @@ -746,7 +746,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator /(Tensor x, Tensor y) @@ -756,7 +756,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator /(Tensor x, int y) @@ -765,7 +765,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator /(int x, Tensor y) @@ -774,7 +774,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } #endregion @@ -795,7 +795,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator /(Tensor x, Tensor y) @@ -805,7 +805,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator /(Tensor x, float y) @@ -814,7 +814,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } // Testing `operator /(float x, Tensor y) @@ -823,7 +823,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((float)o, floatResult); + Assert.AreEqual((float)o[0], floatResult); } #endregion @@ -844,7 +844,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator /(Tensor x, Tensor y) @@ -854,7 +854,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator /(Tensor x, double y) @@ -863,7 +863,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } // Testing `operator /(double x, Tensor y) @@ -872,7 +872,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((double)o, doubleResult); + Assert.AreEqual((double)o[0], doubleResult); } #endregion } @@ -900,7 +900,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >(Tensor x, Tensor y) @@ -910,7 +910,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >(Tensor x, int y) @@ -919,7 +919,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >(int x, Tensor y) @@ -928,7 +928,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResultTwo); + Assert.AreEqual((int)o[0], intResultTwo); } #endregion @@ -949,7 +949,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >(Tensor x, Tensor y) @@ -959,7 +959,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >(Tensor x, float y) @@ -968,7 +968,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >(float x, Tensor y) @@ -977,7 +977,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResultTwo); + Assert.AreEqual((int)o[0], floatResultTwo); } #endregion @@ -998,7 +998,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >(Tensor x, Tensor y) @@ -1008,7 +1008,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >(Tensor x, double y) @@ -1017,7 +1017,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >(double x, Tensor y) @@ -1026,7 +1026,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResultTwo); + Assert.AreEqual((int)o[0], doubleResultTwo); } #endregion } @@ -1054,7 +1054,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <(Tensor x, Tensor y) @@ -1064,7 +1064,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <(Tensor x, int y) @@ -1073,7 +1073,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <(int x, Tensor y) @@ -1082,7 +1082,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResultTwo); + Assert.AreEqual((int)o[0], intResultTwo); } #endregion @@ -1103,7 +1103,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <(Tensor x, Tensor y) @@ -1113,7 +1113,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <(Tensor x, float y) @@ -1122,7 +1122,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <(float x, Tensor y) @@ -1131,7 +1131,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResultTwo); + Assert.AreEqual((int)o[0], floatResultTwo); } #endregion @@ -1152,7 +1152,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <(Tensor x, Tensor y) @@ -1162,7 +1162,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <(Tensor x, double y) @@ -1171,7 +1171,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <(double x, Tensor y) @@ -1180,7 +1180,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResultTwo); + Assert.AreEqual((int)o[0], doubleResultTwo); } #endregion } @@ -1208,7 +1208,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >=(Tensor x, Tensor y) @@ -1218,7 +1218,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >=(Tensor x, int y) @@ -1227,7 +1227,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator >=(int x, Tensor y) @@ -1236,7 +1236,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResultTwo); + Assert.AreEqual((int)o[0], intResultTwo); } #endregion @@ -1257,7 +1257,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >=(Tensor x, Tensor y) @@ -1267,7 +1267,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >=(Tensor x, float y) @@ -1276,7 +1276,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator >=(float x, Tensor y) @@ -1285,7 +1285,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResultTwo); + Assert.AreEqual((int)o[0], floatResultTwo); } #endregion @@ -1306,7 +1306,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >=(Tensor x, Tensor y) @@ -1316,7 +1316,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >=(Tensor x, double y) @@ -1325,7 +1325,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator >=(double x, Tensor y) @@ -1334,7 +1334,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResultTwo); + Assert.AreEqual((int)o[0], doubleResultTwo); } #endregion } @@ -1362,7 +1362,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <=(Tensor x, Tensor y) @@ -1372,7 +1372,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <=(Tensor x, int y) @@ -1381,7 +1381,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResult); + Assert.AreEqual((int)o[0], intResult); } // Testing `operator <=(int x, Tensor y) @@ -1390,7 +1390,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstIntFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, intResultTwo); + Assert.AreEqual((int)o[0], intResultTwo); } #endregion @@ -1411,7 +1411,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <=(Tensor x, Tensor y) @@ -1421,7 +1421,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <=(Tensor x, float y) @@ -1430,7 +1430,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResult); + Assert.AreEqual((int)o[0], floatResult); } // Testing `operator <=(float x, Tensor y) @@ -1439,7 +1439,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstFloatFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, floatResultTwo); + Assert.AreEqual((int)o[0], floatResultTwo); } #endregion @@ -1460,7 +1460,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <=(Tensor x, Tensor y) @@ -1470,7 +1470,7 @@ namespace TensorFlowNET.UnitTest var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols))), new FeedItem(b, new NDArray(secondDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <=(Tensor x, double y) @@ -1479,7 +1479,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResult); + Assert.AreEqual((int)o[0], doubleResult); } // Testing `operator <=(double x, Tensor y) @@ -1488,7 +1488,7 @@ namespace TensorFlowNET.UnitTest { var o = sess.run(c, new FeedItem(a, new NDArray(firstDoubleFeed, new Shape(rows, cols)))); - Assert.AreEqual((int)o, doubleResultTwo); + Assert.AreEqual((int)o[0], doubleResultTwo); } #endregion } diff --git a/test/TensorFlowNET.UnitTest/PlaceholderTest.cs b/test/TensorFlowNET.UnitTest/PlaceholderTest.cs index a8cec568..c8ca0dab 100644 --- a/test/TensorFlowNET.UnitTest/PlaceholderTest.cs +++ b/test/TensorFlowNET.UnitTest/PlaceholderTest.cs @@ -17,7 +17,7 @@ namespace TensorFlowNET.UnitTest { var result = sess.run(y, new FeedItem(x, 2)); - Assert.AreEqual((int)result, 6); + Assert.AreEqual((int)result[0], 6); } } } diff --git a/test/TensorFlowNET.UnitTest/VariableTest.cs b/test/TensorFlowNET.UnitTest/VariableTest.cs index e170bcab..fc4078c1 100644 --- a/test/TensorFlowNET.UnitTest/VariableTest.cs +++ b/test/TensorFlowNET.UnitTest/VariableTest.cs @@ -16,7 +16,7 @@ namespace TensorFlowNET.UnitTest { session.run(x.initializer); var result = session.run(x); - Assert.AreEqual(10, (int)result); + Assert.AreEqual(10, (int)result[0]); } } @@ -81,7 +81,7 @@ namespace TensorFlowNET.UnitTest using (var session = tf.Session()) { session.run(model); - int result = session.run(y); + int result = session.run(y)[0]; Assert.AreEqual(result, 4); } } @@ -98,11 +98,11 @@ namespace TensorFlowNET.UnitTest sess.run(init); var result = sess.run(variable); - Assert.IsTrue((int)result == 31); + Assert.IsTrue((int)result[0] == 31); var assign = variable.assign(12); result = sess.run(assign); - Assert.IsTrue((int)result == 12); + Assert.IsTrue((int)result[0] == 12); } [TestMethod] @@ -139,7 +139,7 @@ namespace TensorFlowNET.UnitTest for(int i = 0; i < 5; i++) { x = x + 1; - result = session.run(x); + result = session.run(x)[0]; print(result); } }