Conv2D

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

طبقة الالتواء ثنائية الأبعاد (على سبيل المثال الالتفاف المكاني فوق الصور).

تقوم هذه الطبقة بإنشاء مرشح تلافيفي يتم دمجه مع مدخلات الطبقة لإنتاج موتر من المخرجات.

  • مرشح الالتواء رباعي الأبعاد.

    تصريح

    public var filter: Tensor<Scalar>
  • ناقل التحيز.

    تصريح

    public var bias: Tensor<Scalar>
  • وظيفة التنشيط الحكيمة للعنصر.

    تصريح

    @noDerivative
    public let activation: Activation
  • خطوات النافذة المنزلقة للأبعاد المكانية.

    تصريح

    @noDerivative
    public let strides: (Int, Int)
  • خوارزمية الحشو للالتفاف.

    تصريح

    @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

    مرشح الالتواء رباعي الأبعاد للشكل [ارتفاع المرشح، عرض المرشح، عدد قنوات الإدخال، عدد قنوات الإخراج].

    bias

    متجه التحيز للشكل [عدد قنوات الإخراج].

    activation

    وظيفة التنشيط الحكيمة للعنصر.

    strides

    خطوات النافذة المنزلقة للأبعاد المكانية، أي (ارتفاع الخطوة، عرض الخطوة).

    padding

    خوارزمية الحشو للالتفاف.

    dilations

    عوامل التمدد للأبعاد المكانية أي (ارتفاع التمدد، عرض التمدد).

  • إرجاع المخرجات التي تم الحصول عليها من تطبيق الطبقة على المدخلات المحددة.

    يتم حساب الأبعاد المكانية للإخراج على النحو التالي:

    ارتفاع الإخراج = (ارتفاع الإدخال + 2 * ارتفاع الحشو - (ارتفاع التمدد * (ارتفاع الفلتر - 1) + 1)) / ارتفاع الخطوة + 1

    عرض الإخراج = (عرض الإدخال + 2 * عرض الحشو - (عرض التمدد * (عرض الفلتر - 1) + 1)) / عرض الخطوة + 1

    ويتم تحديد أحجام الحشو من خلال نظام الحشو.

    ملحوظة

    حجم الحشو يساوي صفر عند استخدام .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

    شكل المرشح التلافيفي رباعي الأبعاد ويمثل (ارتفاع المرشح، عرض المرشح، عدد قنوات الإدخال، عدد قنوات الإخراج).

    strides

    خطوات النافذة المنزلقة للأبعاد المكانية، أي (ارتفاع الخطوة، عرض الخطوة).

    padding

    خوارزمية الحشو للالتفاف.

    dilations

    عوامل التمدد للأبعاد المكانية أي (ارتفاع التمدد، عرض التمدد).

    activation

    وظيفة التنشيط الحكيمة للعنصر.

    filterInitializer

    مُهيئ لاستخدامه في معلمات التصفية.

    biasInitializer

    مُهيئ لاستخدامه في معلمات التحيز.