Conv3D

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

یک لایه کانولوشن سه بعدی برای پیچیدگی مکانی/مکانی-زمانی روی تصاویر.

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

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

    اعلام

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

    اعلام

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

    اعلام

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

    اعلام

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

    اعلام

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

    اعلام

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

    اعلام

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

    اعلام

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

    مولفه های

    filter

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

    bias

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

    activation

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

    strides

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

    padding

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

    dilations

    عامل اتساع برای ابعاد مکانی/فضایی-زمانی.

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

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

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

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

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

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

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

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

    اعلام

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

    مولفه های

    input

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

    ارزش بازگشتی

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

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

    اعلام

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

    مولفه های

    filterShape

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

    strides

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

    padding

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

    dilations

    عامل اتساع برای ابعاد مکانی/فضایی-زمانی.

    activation

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

    filterInitializer

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

    biasInitializer

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