diff --git a/src/TensorFlowNET.Core/Binding.Util.cs b/src/TensorFlowNET.Core/Binding.Util.cs index b7aca46b..f817beb4 100644 --- a/src/TensorFlowNET.Core/Binding.Util.cs +++ b/src/TensorFlowNET.Core/Binding.Util.cs @@ -276,8 +276,8 @@ namespace Tensorflow { if (axis == null) { - var a = t1.Data(); - var b = t2.Data(); + var a = t1.ToArray(); + var b = t2.ToArray(); for (int i = 0; i < a.Length; i++) yield return (a[i], b[i]); } diff --git a/src/TensorFlowNET.Core/Data/MnistModelLoader.cs b/src/TensorFlowNET.Core/Data/MnistModelLoader.cs index e7251217..1073dac6 100644 --- a/src/TensorFlowNET.Core/Data/MnistModelLoader.cs +++ b/src/TensorFlowNET.Core/Data/MnistModelLoader.cs @@ -162,7 +162,7 @@ namespace Tensorflow var num_labels = labels_dense.dims[0]; var index_offset = np.arange(num_labels) * num_classes; var labels_one_hot = np.zeros((num_labels, num_classes)); - var labels = labels_dense.Data(); + var labels = labels_dense.ToArray(); for (int row = 0; row < num_labels; row++) { var col = labels[row]; @@ -176,7 +176,7 @@ namespace Tensorflow { var buffer = new byte[sizeof(uint)]; var count = bytestream.Read(buffer, 0, 4); - return np.frombuffer(buffer, ">u4").Data()[0]; + return np.frombuffer(buffer, ">u4").ToArray()[0]; } } } diff --git a/src/TensorFlowNET.Core/Gradients/math_grad.cs b/src/TensorFlowNET.Core/Gradients/math_grad.cs index d927b85e..60408bab 100644 --- a/src/TensorFlowNET.Core/Gradients/math_grad.cs +++ b/src/TensorFlowNET.Core/Gradients/math_grad.cs @@ -506,7 +506,7 @@ namespace Tensorflow.Gradients if (!(axes is null)) { var rank = input_0_shape.Length; - if (Enumerable.SequenceEqual(Enumerable.Range(0, rank), axes.Data())) + if (Enumerable.SequenceEqual(Enumerable.Range(0, rank), axes.ToArray())) { if (tf.Context.executing_eagerly()) { diff --git a/src/TensorFlowNET.Core/Numpy/NDArray.cs b/src/TensorFlowNET.Core/Numpy/NDArray.cs index 7293093e..9a4e269f 100644 --- a/src/TensorFlowNET.Core/Numpy/NDArray.cs +++ b/src/TensorFlowNET.Core/Numpy/NDArray.cs @@ -62,13 +62,9 @@ namespace Tensorflow.NumPy public byte[] ToByteArray() => _tensor.BufferToArray(); public static string[] AsStringArray(NDArray arr) => throw new NotImplementedException(""); - public T[] Data() where T : unmanaged - => _tensor.ToArray(); public T[] ToArray() where T : unmanaged => _tensor.ToArray(); - public static NDArray operator /(NDArray x, NDArray y) => throw new NotImplementedException(""); - public override string ToString() { return tensor_util.to_numpy_string(_tensor); diff --git a/src/TensorFlowNET.Core/Tensors/tensor_util.cs b/src/TensorFlowNET.Core/Tensors/tensor_util.cs index 25ca9119..4c6766ee 100644 --- a/src/TensorFlowNET.Core/Tensors/tensor_util.cs +++ b/src/TensorFlowNET.Core/Tensors/tensor_util.cs @@ -257,7 +257,7 @@ scalar with value '-1' to describe an unknown shape.", value_)); var dest_dtype_shape_array = np.array(x_).astype(cast_dtype.as_system_dtype()); long[] y_ = { }; - foreach (int y in dest_dtype_shape_array.Data()) + foreach (int y in dest_dtype_shape_array.ToArray()) if (y >= 0) y_[y_.Length] = y; else diff --git a/src/TensorFlowNET.Keras/Sequence.cs b/src/TensorFlowNET.Keras/Sequence.cs index 4e1ac24b..cda3f30f 100644 --- a/src/TensorFlowNET.Keras/Sequence.cs +++ b/src/TensorFlowNET.Keras/Sequence.cs @@ -55,7 +55,7 @@ namespace Tensorflow.Keras value = 0f; var type = dtypes.tf_dtype_from_name(dtype); - var nd = new NDArray((length.Count(), maxlen.Value), dtype: type); + var nd = np.zeros((length.Count(), maxlen.Value), dtype: type); for (int i = 0; i < nd.dims[0]; i++) { diff --git a/test/TensorFlowNET.Keras.UnitTest/PreprocessingTests.cs b/test/TensorFlowNET.Keras.UnitTest/PreprocessingTests.cs index 2bfb632a..9f2d3316 100644 --- a/test/TensorFlowNET.Keras.UnitTest/PreprocessingTests.cs +++ b/test/TensorFlowNET.Keras.UnitTest/PreprocessingTests.cs @@ -249,7 +249,7 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreNotEqual(padded[1, i], 0); } - [TestMethod, Ignore("slice assign doesn't work")] + [TestMethod] public void PadSequencesPrePaddingTrunc() { var tokenizer = keras.preprocessing.text.Tokenizer(oov_token: OOV); @@ -261,15 +261,15 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreEqual(4, padded.dims[0]); Assert.AreEqual(15, padded.dims[1]); - Assert.AreEqual(tokenizer.word_index["worst"], padded[0, 12]); + Assert.AreEqual(padded[0, 12], tokenizer.word_index["worst"]); for (var i = 0; i < 3; i++) - Assert.AreEqual(0, padded[0, i]); - Assert.AreEqual(tokenizer.word_index["proud"], padded[1, 3]); + Assert.AreEqual(padded[0, i], 0); + Assert.AreEqual(padded[1, 3], tokenizer.word_index["proud"]); for (var i = 0; i < 15; i++) - Assert.AreNotEqual(0, padded[1, i]); + Assert.AreNotEqual(padded[1, i], 0); } - [TestMethod, Ignore("slice assign doesn't work")] + [TestMethod] public void PadSequencesPrePaddingTrunc_Larger() { var tokenizer = keras.preprocessing.text.Tokenizer(oov_token: OOV); @@ -281,13 +281,13 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreEqual(4, padded.dims[0]); Assert.AreEqual(45, padded.dims[1]); - Assert.AreEqual(tokenizer.word_index["worst"], padded[0, 42]); + Assert.AreEqual(padded[0, 42], tokenizer.word_index["worst"]); for (var i = 0; i < 33; i++) - Assert.AreEqual(0, padded[0, i]); - Assert.AreEqual(tokenizer.word_index["proud"], padded[1, 33]); + Assert.AreEqual(padded[0, i], 0); + Assert.AreEqual(padded[1, 33], tokenizer.word_index["proud"]); } - [TestMethod, Ignore("slice assign doesn't work")] + [TestMethod] public void PadSequencesPostPaddingTrunc() { var tokenizer = keras.preprocessing.text.Tokenizer(oov_token: OOV); @@ -299,15 +299,15 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreEqual(4, padded.dims[0]); Assert.AreEqual(15, padded.dims[1]); - Assert.AreEqual(tokenizer.word_index["worst"], padded[0, 9]); + Assert.AreEqual(padded[0, 9], tokenizer.word_index["worst"]); for (var i = 12; i < 15; i++) - Assert.AreEqual(0, padded[0, i]); - Assert.AreEqual(tokenizer.word_index["proud"], padded[1, 10]); + Assert.AreEqual(padded[0, i], 0); + Assert.AreEqual(padded[1, 10], tokenizer.word_index["proud"]); for (var i = 0; i < 15; i++) - Assert.AreNotEqual(0, padded[1, i]); + Assert.AreNotEqual(padded[1, i], 0); } - [TestMethod, Ignore("slice assign doesn't work")] + [TestMethod] public void PadSequencesPostPaddingTrunc_Larger() { var tokenizer = keras.preprocessing.text.Tokenizer(oov_token: OOV); @@ -319,10 +319,10 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreEqual(4, padded.dims[0]); Assert.AreEqual(45, padded.dims[1]); - Assert.AreEqual(tokenizer.word_index["worst"], padded[0, 9]); + Assert.AreEqual(padded[0, 9], tokenizer.word_index["worst"]); for (var i = 32; i < 45; i++) - Assert.AreEqual(0, padded[0, i]); - Assert.AreEqual(tokenizer.word_index["proud"], padded[1, 10]); + Assert.AreEqual(padded[0, i], 0); + Assert.AreEqual(padded[1, 10], tokenizer.word_index["proud"]); } [TestMethod] diff --git a/test/TensorFlowNET.Native.UnitTest/Tensors/TensorTest.cs b/test/TensorFlowNET.Native.UnitTest/Tensors/TensorTest.cs index 85a51126..c862a6c0 100644 --- a/test/TensorFlowNET.Native.UnitTest/Tensors/TensorTest.cs +++ b/test/TensorFlowNET.Native.UnitTest/Tensors/TensorTest.cs @@ -104,7 +104,7 @@ namespace Tensorflow.Native.UnitTest.Tensors EXPECT_EQ(tensor.shape[0], nd.dims[0]); EXPECT_EQ(tensor.shape[1], nd.dims[1]); EXPECT_EQ(tensor.bytesize, nd.size * sizeof(float)); - Assert.IsTrue(Enumerable.SequenceEqual(nd.Data(), new float[] { 1, 2, 3, 4, 5, 6 })); + Assert.IsTrue(Enumerable.SequenceEqual(nd.ToArray(), new float[] { 1, 2, 3, 4, 5, 6 })); } /// diff --git a/test/TensorFlowNET.UnitTest/Numpy/Array.Creation.Test.cs b/test/TensorFlowNET.UnitTest/Numpy/Array.Creation.Test.cs index f58ed389..f0d6cbef 100644 --- a/test/TensorFlowNET.UnitTest/Numpy/Array.Creation.Test.cs +++ b/test/TensorFlowNET.UnitTest/Numpy/Array.Creation.Test.cs @@ -26,43 +26,43 @@ namespace TensorFlowNET.UnitTest.NumPy public void arange() { var x = np.arange(3); - AssetSequenceEqual(new[] { 0, 1, 2 }, x.Data()); + AssetSequenceEqual(new[] { 0, 1, 2 }, x.ToArray()); x = np.arange(3f); - Assert.IsTrue(Equal(new float[] { 0, 1, 2 }, x.Data())); + Assert.IsTrue(Equal(new float[] { 0, 1, 2 }, x.ToArray())); var y = np.arange(3, 7); - AssetSequenceEqual(new[] { 3, 4, 5, 6 }, y.Data()); + AssetSequenceEqual(new[] { 3, 4, 5, 6 }, y.ToArray()); y = np.arange(3, 7, 2); - AssetSequenceEqual(new[] { 3, 5 }, y.Data()); + AssetSequenceEqual(new[] { 3, 5 }, y.ToArray()); } [TestMethod] public void array() { var x = np.array(1, 2, 3); - AssetSequenceEqual(new[] { 1, 2, 3 }, x.Data()); + AssetSequenceEqual(new[] { 1, 2, 3 }, x.ToArray()); x = np.array(new[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } }); - AssetSequenceEqual(new[] { 1, 2, 3, 4, 5, 6 }, x.Data()); + AssetSequenceEqual(new[] { 1, 2, 3, 4, 5, 6 }, x.ToArray()); } [TestMethod] public void eye() { var x = np.eye(3, k: 1); - Assert.IsTrue(Equal(new double[] { 0, 1, 0, 0, 0, 1, 0, 0, 0 }, x.Data())); + Assert.IsTrue(Equal(new double[] { 0, 1, 0, 0, 0, 1, 0, 0, 0 }, x.ToArray())); } [TestMethod] public void linspace() { var x = np.linspace(2.0, 3.0, num: 5); - Assert.IsTrue(Equal(new double[] { 2, 2.25, 2.5, 2.75, 3 }, x.Data())); + Assert.IsTrue(Equal(new double[] { 2, 2.25, 2.5, 2.75, 3 }, x.ToArray())); x = np.linspace(2.0, 3.0, num: 5, endpoint: false); - Assert.IsTrue(Equal(new double[] { 2, 2.2, 2.4, 2.6, 2.8 }, x.Data())); + Assert.IsTrue(Equal(new double[] { 2, 2.2, 2.4, 2.6, 2.8 }, x.ToArray())); } [TestMethod] @@ -71,13 +71,13 @@ namespace TensorFlowNET.UnitTest.NumPy var x = np.linspace(0, 1, num: 3); var y = np.linspace(0, 1, num: 2); var (xv, yv) = np.meshgrid(x, y); - Assert.IsTrue(Equal(new double[] { 0, 0.5, 1, 0, 0.5, 1 }, xv.Data())); - Assert.IsTrue(Equal(new double[] { 0, 0, 0, 1, 1, 1 }, yv.Data())); + Assert.IsTrue(Equal(new double[] { 0, 0.5, 1, 0, 0.5, 1 }, xv.ToArray())); + Assert.IsTrue(Equal(new double[] { 0, 0, 0, 1, 1, 1 }, yv.ToArray())); (xv, yv) = np.meshgrid(x, y, sparse: true); - Assert.IsTrue(Equal(new double[] { 0, 0.5, 1 }, xv.Data())); + Assert.IsTrue(Equal(new double[] { 0, 0.5, 1 }, xv.ToArray())); AssetSequenceEqual(new long[] { 1, 3 }, xv.shape.dims); - Assert.IsTrue(Equal(new double[] { 0, 1 }, yv.Data())); + Assert.IsTrue(Equal(new double[] { 0, 1 }, yv.ToArray())); AssetSequenceEqual(new long[] { 2, 1 }, yv.shape.dims); } } diff --git a/test/TensorFlowNET.UnitTest/Numpy/Math.Test.cs b/test/TensorFlowNET.UnitTest/Numpy/Math.Test.cs index 3c1dbcf3..d08253cb 100644 --- a/test/TensorFlowNET.UnitTest/Numpy/Math.Test.cs +++ b/test/TensorFlowNET.UnitTest/Numpy/Math.Test.cs @@ -25,7 +25,7 @@ namespace TensorFlowNET.UnitTest.NumPy p = np.prod(new[,] { { 1.0, 2.0 }, { 3.0, 4.0 } }, axis: 1); Assert.AreEqual(p.shape, 2); - Assert.IsTrue(Equal(p.Data(), new[] { 2.0, 12.0 })); + Assert.IsTrue(Equal(p.ToArray(), new[] { 2.0, 12.0 })); } } }