diff --git a/src/TensorFlowNET.Keras/Layers/LayersApi.cs b/src/TensorFlowNET.Keras/Layers/LayersApi.cs index dff9ff1b..6c3e3556 100644 --- a/src/TensorFlowNET.Keras/Layers/LayersApi.cs +++ b/src/TensorFlowNET.Keras/Layers/LayersApi.cs @@ -66,7 +66,7 @@ namespace Tensorflow.Keras.Layers Trainable = trainable, Name = name }); -#if false + /// /// 2D convolution layer (e.g. spatial convolution over images). /// This layer creates a convolution kernel that is convolved with the layer input to produce a tensor of outputs. @@ -119,7 +119,6 @@ namespace Tensorflow.Keras.Layers ActivityRegularizer = activity_regularizer, Activation = activation ?? keras.activations.Linear }); -#endif /// /// 2D convolution layer (e.g. spatial convolution over images). diff --git a/test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Convolution.Test.cs b/test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Convolution.Test.cs index b24b214a..5e71ece6 100644 --- a/test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Convolution.Test.cs +++ b/test/TensorFlowNET.Keras.UnitTest/Layers/Layers.Convolution.Test.cs @@ -12,7 +12,7 @@ namespace TensorFlowNET.Keras.UnitTest public void BasicConv2D() { var filters = 8; - var conv = keras.layers.Conv2D(filters); + var conv = keras.layers.Conv2D(filters, activation: "linear"); var x = np.arange(256.0f).reshape(1,8,8,4); var y = conv.Apply(x); @@ -28,7 +28,7 @@ namespace TensorFlowNET.Keras.UnitTest public void BasicConv2D_ksize() { var filters = 8; - var conv = keras.layers.Conv2D(filters, kernel_size: 3); + var conv = keras.layers.Conv2D(filters, kernel_size: 3, activation: "linear"); var x = np.arange(256.0f).reshape(1, 8, 8, 4); var y = conv.Apply(x); @@ -44,7 +44,7 @@ namespace TensorFlowNET.Keras.UnitTest public void BasicConv2D_ksize_same() { var filters = 8; - var conv = keras.layers.Conv2D(filters, kernel_size: 3, padding: "same"); + var conv = keras.layers.Conv2D(filters, kernel_size: 3, padding: "same", activation: "linear"); var x = np.arange(256.0f).reshape(1, 8, 8, 4); var y = conv.Apply(x); @@ -60,7 +60,7 @@ namespace TensorFlowNET.Keras.UnitTest public void BasicConv2D_ksize_strides() { var filters = 8; - var conv = keras.layers.Conv2D(filters, kernel_size: 3, strides: 2); + var conv = keras.layers.Conv2D(filters, kernel_size: 3, strides: 2, activation: "linear"); var x = np.arange(256.0f).reshape(1, 8, 8, 4); var y = conv.Apply(x); @@ -76,7 +76,7 @@ namespace TensorFlowNET.Keras.UnitTest public void BasicConv2D_ksize_dilation() { var filters = 8; - var conv = keras.layers.Conv2D(filters, kernel_size: 3, dilation_rate: 2); + var conv = keras.layers.Conv2D(filters, kernel_size: 3, dilation_rate: 2, activation: "linear"); var x = np.arange(256.0f).reshape(1, 8, 8, 4); var y = conv.Apply(x); @@ -87,5 +87,21 @@ namespace TensorFlowNET.Keras.UnitTest Assert.AreEqual(x.shape[2] - 4, y.shape[2]); Assert.AreEqual(filters, y.shape[3]); } + + [TestMethod] + public void BasicConv2D_ksize_dilation_same() + { + var filters = 8; + var conv = keras.layers.Conv2D(filters, kernel_size: 3, dilation_rate: 2, padding: "same", activation: "linear"); + + var x = np.arange(256.0f).reshape(1, 8, 8, 4); + var y = conv.Apply(x); + + Assert.AreEqual(4, y.shape.ndim); + Assert.AreEqual(x.shape[0], y.shape[0]); + Assert.AreEqual(x.shape[1], y.shape[1]); + Assert.AreEqual(x.shape[2], y.shape[2]); + Assert.AreEqual(filters, y.shape[3]); + } } }