diff --git a/src/TensorFlowNET.Console/TensorFlowNET.Console.csproj b/src/TensorFlowNET.Console/TensorFlowNET.Console.csproj
index b78a25f3..a047afb9 100644
--- a/src/TensorFlowNET.Console/TensorFlowNET.Console.csproj
+++ b/src/TensorFlowNET.Console/TensorFlowNET.Console.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/src/TensorFlowNET.Core/APIs/c_api.cs b/src/TensorFlowNET.Core/APIs/c_api.cs
index c1575fb4..d3dc15ed 100644
--- a/src/TensorFlowNET.Core/APIs/c_api.cs
+++ b/src/TensorFlowNET.Core/APIs/c_api.cs
@@ -43,7 +43,7 @@ namespace Tensorflow
///
public partial class c_api
{
- public const string TensorFlowLibName = @"D:\SciSharp\tensorflow-google\bazel-bin\tensorflow\tensorflow.dll";
+ public const string TensorFlowLibName = "tensorflow";
public static string StringPiece(IntPtr handle)
{
diff --git a/src/TensorFlowNET.Core/APIs/tf.data.cs b/src/TensorFlowNET.Core/APIs/tf.data.cs
new file mode 100644
index 00000000..7eee3a90
--- /dev/null
+++ b/src/TensorFlowNET.Core/APIs/tf.data.cs
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ Copyright 2020 The TensorFlow.NET Authors. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+******************************************************************************/
+
+using NumSharp;
+
+namespace Tensorflow
+{
+ public partial class tensorflow
+ {
+ public DataOps data { get; } = new DataOps();
+
+ public class DataOps
+ {
+ public TensorSliceDataset Dataset { get; } = new TensorSliceDataset();
+ }
+ }
+}
diff --git a/src/TensorFlowNET.Core/APIs/tf.keras.cs b/src/TensorFlowNET.Core/APIs/tf.keras.cs
new file mode 100644
index 00000000..ec3af440
--- /dev/null
+++ b/src/TensorFlowNET.Core/APIs/tf.keras.cs
@@ -0,0 +1,25 @@
+/*****************************************************************************
+ Copyright 2020 Haiping Chen. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+******************************************************************************/
+
+using NumSharp;
+
+namespace Tensorflow
+{
+ public partial class tensorflow
+ {
+ public KerasApi keras { get; } = new KerasApi();
+ }
+}
diff --git a/src/TensorFlowNET.Core/Data/DatasetOps.cs b/src/TensorFlowNET.Core/Data/DatasetOps.cs
new file mode 100644
index 00000000..4035ee4f
--- /dev/null
+++ b/src/TensorFlowNET.Core/Data/DatasetOps.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tensorflow
+{
+ public class DatasetOps
+ {
+ }
+}
diff --git a/src/TensorFlowNET.Core/Data/TensorSliceDataset.cs b/src/TensorFlowNET.Core/Data/TensorSliceDataset.cs
new file mode 100644
index 00000000..8f6a6dac
--- /dev/null
+++ b/src/TensorFlowNET.Core/Data/TensorSliceDataset.cs
@@ -0,0 +1,20 @@
+using NumSharp;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tensorflow
+{
+ public class TensorSliceDataset
+ {
+ public TensorSliceDataset(params NDArray[] elements)
+ {
+
+ }
+
+ public TensorSliceDataset from_tensor_slices(params NDArray[] elements)
+ {
+ throw new NotImplementedException("");
+ }
+ }
+}
diff --git a/src/TensorFlowNET.Core/Keras/Datasets/DatasetPass.cs b/src/TensorFlowNET.Core/Keras/Datasets/DatasetPass.cs
new file mode 100644
index 00000000..48fb3b82
--- /dev/null
+++ b/src/TensorFlowNET.Core/Keras/Datasets/DatasetPass.cs
@@ -0,0 +1,27 @@
+using NumSharp;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tensorflow.Keras.Datasets
+{
+ public class DatasetPass
+ {
+ public (NDArray, NDArray) Train { get; set; }
+ public (NDArray, NDArray) Test { get; set; }
+
+ public void Deconstruct(out NDArray x_train, out NDArray y_train, out NDArray x_test, out NDArray y_test)
+ {
+ x_train = Train.Item1;
+ y_train = Train.Item2;
+ x_test = Test.Item1;
+ y_test = Test.Item2;
+ }
+
+ public void Deconstruct(out (NDArray, NDArray) train, out (NDArray, NDArray) test)
+ {
+ train = Train;
+ test = Test;
+ }
+ }
+}
diff --git a/src/TensorFlowNET.Core/Keras/Datasets/KerasDataset.cs b/src/TensorFlowNET.Core/Keras/Datasets/KerasDataset.cs
new file mode 100644
index 00000000..5aabfdf0
--- /dev/null
+++ b/src/TensorFlowNET.Core/Keras/Datasets/KerasDataset.cs
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ Copyright 2020 Haiping Chen. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+******************************************************************************/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Tensorflow.Keras.Datasets
+{
+ public class KerasDataset
+ {
+ public Mnist mnist { get; } = new Mnist();
+ }
+}
diff --git a/src/TensorFlowNET.Core/Keras/Datasets/Mnist.cs b/src/TensorFlowNET.Core/Keras/Datasets/Mnist.cs
new file mode 100644
index 00000000..37eae319
--- /dev/null
+++ b/src/TensorFlowNET.Core/Keras/Datasets/Mnist.cs
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ Copyright 2020 Haiping Chen. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+******************************************************************************/
+
+using NumSharp;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Text;
+
+namespace Tensorflow.Keras.Datasets
+{
+ public class Mnist
+ {
+ string origin_folder = "https://storage.googleapis.com/tensorflow/tf-keras-datasets/";
+ string file_name = "mnist.npz";
+
+ ///
+ /// Loads the [MNIST dataset](http://yann.lecun.com/exdb/mnist/).
+ ///
+ ///
+ public DatasetPass load_data()
+ {
+ var file = Download();
+ var bytes = File.ReadAllBytes(file);
+ var datax = LoadX(bytes);
+ var datay = LoadY(bytes);
+ return new DatasetPass
+ {
+ Train = (datax.Item1, datay.Item1),
+ Test = (datax.Item2, datay.Item2)
+ };
+ }
+
+ (NDArray, NDArray) LoadX(byte[] bytes)
+ {
+ var y = np.Load_Npz(bytes);
+ return (y["x_train.npy"], y["x_test.npy"]);
+ }
+
+ (NDArray, NDArray) LoadY(byte[] bytes)
+ {
+ var y = np.Load_Npz(bytes);
+ return (y["y_train.npy"], y["y_test.npy"]);
+ }
+
+ string Download()
+ {
+ var fileSaveTo = Path.Combine(Path.GetTempPath(), file_name);
+
+ if (File.Exists(fileSaveTo))
+ {
+ Console.WriteLine($"The file {fileSaveTo} already exists");
+ return fileSaveTo;
+ }
+
+ using var wc = new WebClient();
+ wc.DownloadFileTaskAsync(origin_folder + file_name, fileSaveTo).Wait();
+
+ return fileSaveTo;
+ }
+ }
+}
diff --git a/src/TensorFlowNET.Core/Keras/KerasApi.cs b/src/TensorFlowNET.Core/Keras/KerasApi.cs
new file mode 100644
index 00000000..f9fd94d6
--- /dev/null
+++ b/src/TensorFlowNET.Core/Keras/KerasApi.cs
@@ -0,0 +1,12 @@
+using System.Data;
+using Tensorflow.Keras;
+using Tensorflow.Keras.Datasets;
+
+namespace Tensorflow
+{
+ public class KerasApi
+ {
+ public KerasDataset datasets { get; } = new KerasDataset();
+ public Initializers initializers { get; } = new Initializers();
+ }
+}
diff --git a/src/TensorFlowNET.Core/Keras/tf.keras.cs b/src/TensorFlowNET.Core/Keras/tf.keras.cs
deleted file mode 100644
index dee173f8..00000000
--- a/src/TensorFlowNET.Core/Keras/tf.keras.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Tensorflow.Keras;
-
-namespace Tensorflow
-{
- public partial class tensorflow
- {
- public class keras
- {
- public static Initializers initializers => new Initializers();
- }
- }
-}
diff --git a/src/TensorFlowNET.Core/TensorFlow.Binding.csproj b/src/TensorFlowNET.Core/TensorFlow.Binding.csproj
index e462fded..410c62c2 100644
--- a/src/TensorFlowNET.Core/TensorFlow.Binding.csproj
+++ b/src/TensorFlowNET.Core/TensorFlow.Binding.csproj
@@ -5,7 +5,7 @@
TensorFlow.NET
Tensorflow
2.2.0
- 0.20.0-alpha2
+ 0.20.0-preview1
8.0
Haiping Chen, Meinrad Recheis, Eli Belash
SciSharp STACK
diff --git a/test/TensorFlowNET.UnitTest/Tensorflow.UnitTest.csproj b/test/TensorFlowNET.UnitTest/Tensorflow.UnitTest.csproj
index 081bb3a2..ec8c2ec1 100644
--- a/test/TensorFlowNET.UnitTest/Tensorflow.UnitTest.csproj
+++ b/test/TensorFlowNET.UnitTest/Tensorflow.UnitTest.csproj
@@ -44,10 +44,10 @@
-
-
+
+
-
+