หนาแน่น

@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

    การเริ่มต้นที่จะใช้สำหรับ weight

    biasInitializer

    การเริ่มต้นที่จะใช้สำหรับ bias