Conv2D

@frozen
public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint

یک لایه کانولوشن دو بعدی (به عنوان مثال پیچیدگی فضایی روی تصاویر).

این لایه یک فیلتر کانولوشن ایجاد می کند که با ورودی لایه پیچیده می شود تا یک تانسور خروجی تولید کند.

  • فیلتر کانولوشن 4 بعدی.

    اعلام

    public var filter: Tensor<Scalar>
  • بردار تعصب.

    اعلام

    public var bias: Tensor<Scalar>
  • تابع فعال سازی از نظر عنصر.

    اعلام

    @noDerivative
    public let activation: Activation
  • گام های پنجره کشویی برای ابعاد فضایی.

    اعلام

    @noDerivative
    public let strides: (Int, Int)
  • الگوریتم padding برای کانولوشن.

    اعلام

    @noDerivative
    public let padding: Padding
  • عامل اتساع برای ابعاد فضایی.

    اعلام

    @noDerivative
    public let dilations: (Int, Int)
  • نوع تابع فعال سازی از نظر عنصر.

    اعلام

    public typealias Activation = @differentiable (Tensor<Scalar>) -> Tensor<Scalar>
  • یک لایه Conv2D با فیلتر مشخص شده، بایاس، عملکرد فعال سازی، گام ها، گشاد شدن و بالشتک های مشخص شده ایجاد می کند.

    اعلام

    public init(
      filter: Tensor<Scalar>,
      bias: Tensor<Scalar>? = nil,
      activation: @escaping Activation = identity,
      strides: (Int, Int) = (1, 1),
      padding: Padding = .valid,
      dilations: (Int, Int) = (1, 1)
    )

    مولفه های

    filter

    فیلتر کانولوشن 4 بعدی شکل [ارتفاع فیلتر، عرض فیلتر، تعداد کانال ورودی، تعداد کانال خروجی].

    bias

    بردار بایاس شکل [تعداد کانال خروجی].

    activation

    تابع فعال سازی از نظر عنصر.

    strides

    گام های پنجره کشویی برای ابعاد فضایی، یعنی (ارتفاع گام، عرض گام).

    padding

    الگوریتم padding برای کانولوشن.

    dilations

    عوامل اتساع برای ابعاد فضایی، یعنی (ارتفاع اتساع، عرض اتساع).

  • خروجی به دست آمده از اعمال لایه به ورودی داده شده را برمی گرداند.

    ابعاد فضایی خروجی به صورت زیر محاسبه می شود:

    ارتفاع خروجی = (ارتفاع ورودی + 2 * ارتفاع بالشتک - (ارتفاع گشاد شدن * (ارتفاع فیلتر - 1) + 1)) / ارتفاع گام + 1

    عرض خروجی = (عرض ورودی + 2 * عرض لایه - (عرض گشاد شدن * (عرض فیلتر - 1) + 1)) / عرض گام + 1

    و اندازه بالشتک ها توسط طرح padding تعیین می شود.

    توجه داشته باشید

    اندازه پد هنگام استفاده از .valid برابر با صفر است.

    اعلام

    @differentiable
    public func forward(_ input: Tensor<Scalar>) -> Tensor<Scalar>

    مولفه های

    input

    ورودی لایه شکل [اندازه دسته، ارتفاع ورودی، عرض ورودی، تعداد کانال ورودی].

    ارزش بازگشتی

    خروجی شکل [تعداد دسته ای، ارتفاع خروجی، عرض خروجی، تعداد کانال های خروجی].

  • یک لایه Conv2D با شکل فیلتر مشخص شده، گام‌ها، بالشتک‌ها، اتساع و عملکرد فعال‌سازی از نظر عنصر ایجاد می‌کند.

    اعلام

    public init(
      filterShape: (Int, Int, Int, Int),
      strides: (Int, Int) = (1, 1),
      padding: Padding = .valid,
      dilations: (Int, Int) = (1, 1),
      activation: @escaping Activation = identity,
      useBias: Bool = true,
      filterInitializer: ParameterInitializer<Scalar> = glorotUniform(),
      biasInitializer: ParameterInitializer<Scalar> = zeros()
    )

    مولفه های

    filterShape

    شکل فیلتر کانولوشن 4 بعدی، نشان دهنده (ارتفاع فیلتر، عرض فیلتر، تعداد کانال ورودی، تعداد کانال های خروجی).

    strides

    گام های پنجره کشویی برای ابعاد فضایی، یعنی (ارتفاع گام، عرض گام).

    padding

    الگوریتم padding برای کانولوشن.

    dilations

    عوامل اتساع برای ابعاد فضایی، یعنی (ارتفاع اتساع، عرض اتساع).

    activation

    تابع فعال سازی از نظر عنصر.

    filterInitializer

    آغازگر برای استفاده برای پارامترهای فیلتر.

    biasInitializer

    آغازگر برای استفاده برای پارامترهای بایاس.