หนาแน่น

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

เลเยอร์โครงข่ายประสาทเทียมที่เชื่อมต่ออย่างหนาแน่น

Dense ดำเนิน activation(matmul(input, weight) + bias) โดยที่ weight คือเมทริกซ์น้ำหนัก bias คือเวกเตอร์อคติ และ activation เป็นฟังก์ชันการเปิดใช้งานตามองค์ประกอบ

เลเยอร์นี้ยังรองรับเทนเซอร์น้ำหนัก 3 มิติที่มีเมทริกซ์อคติ 2 มิติ ในกรณีนี้ มิติแรกของทั้งสองจะถือเป็นขนาดแบทช์ที่สอดคล้องกับมิติแรกของ input และใช้ชุดตัวแปรของการดำเนินการ matmul(_:_:) ดังนั้นการใช้น้ำหนักและความลำเอียงที่แตกต่างกันสำหรับแต่ละองค์ประกอบ ในชุดอินพุต

  • เมทริกซ์น้ำหนัก

    คำประกาศ

    public var weight: Tensor<Scalar>
  • เวกเตอร์อคติ

    คำประกาศ

    public var bias: Tensor<Scalar>
  • ฟังก์ชั่นการเปิดใช้งานตามองค์ประกอบ

    คำประกาศ

    @noDerivative
    public let activation: Activation
  • ประเภทฟังก์ชันการเปิดใช้งานตามองค์ประกอบ

    คำประกาศ

    public typealias Activation = @differentiable (Tensor<Scalar>) -> Tensor<Scalar>
  • สร้างอินสแตนซ์จากน้ำหนักที่กำหนด อคติเสริม และฟังก์ชันการเปิดใช้งาน

    บันทึก

    ในปัจจุบัน weight เป็นเพียงพารามิเตอร์ของความแตกต่างเท่านั้น bias สามารถสร้างพารามิเตอร์ความแตกต่างได้หลังจากที่ Optional สอดคล้องกับเงื่อนไข Differentiable : TF-499

    คำประกาศ

    @differentiable(wrt: weight)
    public init(
      weight: Tensor<Scalar>,
      bias: Tensor<Scalar>? = nil,
      activation: @escaping Activation
    )
  • ส่งกลับผลลัพธ์ที่ได้จากการใช้เลเยอร์กับอินพุตที่กำหนด

    คำประกาศ

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

    พารามิเตอร์

    input

    อินพุตไปยังเลเยอร์

    ค่าส่งคืน

    เอาท์พุท

  • สร้างเลเยอร์ Dense ด้วยขนาดอินพุต ขนาดเอาต์พุต และฟังก์ชันการเปิดใช้งานตามองค์ประกอบที่ระบุ เมทริกซ์น้ำหนักถูกสร้างขึ้นด้วยรูปร่าง [inputSize, outputSize] และเวกเตอร์อคติถูกสร้างขึ้นด้วยรูปร่าง [outputSize]

    คำประกาศ

    public init(
      inputSize: Int,
      outputSize: Int,
      activation: @escaping Activation = identity,
      useBias: Bool = true,
      weightInitializer: ParameterInitializer<Scalar> = glorotUniform(),
      biasInitializer: ParameterInitializer<Scalar> = zeros()
    )

    พารามิเตอร์

    inputSize

    มิติของพื้นที่อินพุต

    outputSize

    มิติของพื้นที่เอาต์พุต

    activation

    ฟังก์ชั่นการเปิดใช้งานที่จะใช้ ค่าเริ่มต้นคือ identity(_:)

    weightInitializer

    Initializer ที่จะใช้สำหรับ weight

    biasInitializer

    Initializer เพื่อใช้สำหรับ bias