 @frozen
 public struct AvgPool2D<Scalar: TensorFlowFloatingPoint>: ParameterlessLayer {
     /// The size of the sliding reduction window for pooling.
-    @noDerivative let poolSize: (Int, Int, Int, Int)
+    @noDerivative public let poolSize: (Int, Int, Int, Int)
     /// The strides of the sliding window for each dimension of a 4-D input.
     /// Strides in non-spatial dimensions must be `1`.
-    @noDerivative let strides: (Int, Int, Int, Int)
-    /// The padding algorithm for pooling.
-    @noDerivative let padding: Padding
+    @noDerivative public let strides: (Int, Int, Int, Int)
+    /// The padding algorithm for pooling.
+    @noDerivative public let padding: Padding
 
     /// Creates an average pooling layer.
     public init(poolSize: (Int, Int, Int, Int), strides: (Int, Int, Int, Int), padding: Padding) {

@frozen
public struct MaxPool1D<Scalar: TensorFlowFloatingPoint>: ParameterlessLayer {
    /// The size of the sliding reduction window for pooling.
    @noDerivative let poolSize: Int
    /// The stride of the sliding window for temporal dimension.
    @noDerivative let stride: Int
    /// The padding algorithm for pooling.
    @noDerivative let padding: Padding

    /// Creates a max pooling layer.
    ///

@frozen
public struct AvgPool1D<Scalar: TensorFlowFloatingPoint>: ParameterlessLayer {
    /// The size of the sliding reduction window for pooling.
    @noDerivative public let poolSize: Int
    /// The stride of the sliding window for temporal dimension.
    @noDerivative public let stride: Int
    /// The padding algorithm for pooling.
    @noDerivative public let padding: Padding

    /// Creates an average pooling layer.
    ///
