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.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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);
  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);
  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");
  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);
  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);
  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. }
  76. }