You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Layers.Convolution.Test.cs 3.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using NumSharp;
  3. using Tensorflow;
  4. using static Tensorflow.KerasApi;
  5. namespace TensorFlowNET.Keras.UnitTest
  6. {
  7. [TestClass]
  8. public class LayersConvolutionTest : EagerModeTestBase
  9. {
  10. [TestMethod]
  11. public void BasicConv2D()
  12. {
  13. var filters = 8;
  14. var conv = keras.layers.Conv2D(filters, activation: "linear");
  15. var x = np.arange(256.0f).reshape(1,8,8,4);
  16. var y = conv.Apply(x);
  17. Assert.AreEqual(4, y.shape.ndim);
  18. Assert.AreEqual(x.shape[0], y.shape[0]);
  19. Assert.AreEqual(x.shape[1] - 4, y.shape[1]);
  20. Assert.AreEqual(x.shape[2] - 4, y.shape[2]);
  21. Assert.AreEqual(filters, y.shape[3]);
  22. }
  23. [TestMethod]
  24. public void BasicConv2D_ksize()
  25. {
  26. var filters = 8;
  27. var conv = keras.layers.Conv2D(filters, kernel_size: 3, activation: "linear");
  28. var x = np.arange(256.0f).reshape(1, 8, 8, 4);
  29. var y = conv.Apply(x);
  30. Assert.AreEqual(4, y.shape.ndim);
  31. Assert.AreEqual(x.shape[0], y.shape[0]);
  32. Assert.AreEqual(x.shape[1] - 2, y.shape[1]);
  33. Assert.AreEqual(x.shape[2] - 2, y.shape[2]);
  34. Assert.AreEqual(filters, y.shape[3]);
  35. }
  36. [TestMethod]
  37. public void BasicConv2D_ksize_same()
  38. {
  39. var filters = 8;
  40. var conv = keras.layers.Conv2D(filters, kernel_size: 3, padding: "same", activation: "linear");
  41. var x = np.arange(256.0f).reshape(1, 8, 8, 4);
  42. var y = conv.Apply(x);
  43. Assert.AreEqual(4, y.shape.ndim);
  44. Assert.AreEqual(x.shape[0], y.shape[0]);
  45. Assert.AreEqual(x.shape[1], y.shape[1]);
  46. Assert.AreEqual(x.shape[2], y.shape[2]);
  47. Assert.AreEqual(filters, y.shape[3]);
  48. }
  49. [TestMethod]
  50. public void BasicConv2D_ksize_strides()
  51. {
  52. var filters = 8;
  53. var conv = keras.layers.Conv2D(filters, kernel_size: 3, strides: 2, activation: "linear");
  54. var x = np.arange(256.0f).reshape(1, 8, 8, 4);
  55. var y = conv.Apply(x);
  56. Assert.AreEqual(4, y.shape.ndim);
  57. Assert.AreEqual(x.shape[0], y.shape[0]);
  58. Assert.AreEqual(x.shape[1] - 5, y.shape[1]);
  59. Assert.AreEqual(x.shape[2] - 5, y.shape[2]);
  60. Assert.AreEqual(filters, y.shape[3]);
  61. }
  62. [TestMethod]
  63. public void BasicConv2D_ksize_dilation()
  64. {
  65. var filters = 8;
  66. var conv = keras.layers.Conv2D(filters, kernel_size: 3, dilation_rate: 2, activation: "linear");
  67. var x = np.arange(256.0f).reshape(1, 8, 8, 4);
  68. var y = conv.Apply(x);
  69. Assert.AreEqual(4, y.shape.ndim);
  70. Assert.AreEqual(x.shape[0], y.shape[0]);
  71. Assert.AreEqual(x.shape[1] - 4, y.shape[1]);
  72. Assert.AreEqual(x.shape[2] - 4, y.shape[2]);
  73. Assert.AreEqual(filters, y.shape[3]);
  74. }
  75. [TestMethod]
  76. public void BasicConv2D_ksize_dilation_same()
  77. {
  78. var filters = 8;
  79. var conv = keras.layers.Conv2D(filters, kernel_size: 3, dilation_rate: 2, padding: "same", activation: "linear");
  80. var x = np.arange(256.0f).reshape(1, 8, 8, 4);
  81. var y = conv.Apply(x);
  82. Assert.AreEqual(4, y.shape.ndim);
  83. Assert.AreEqual(x.shape[0], y.shape[0]);
  84. Assert.AreEqual(x.shape[1], y.shape[1]);
  85. Assert.AreEqual(x.shape[2], y.shape[2]);
  86. Assert.AreEqual(filters, y.shape[3]);
  87. }
  88. }
  89. }