@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
สร้างอินสแตนซ์จากน้ำหนักที่กำหนด อคติเสริม และฟังก์ชันการเปิดใช้งาน
บันทึก
ในปัจจุบันweight
เป็นเพียงพารามิเตอร์ของความแตกต่างเท่านั้นbias
สามารถสร้างพารามิเตอร์ความแตกต่างได้หลังจากที่Optional
สอดคล้องกับเงื่อนไขDifferentiable
: TF-499คำประกาศ
@differentiable(wrt: weight) public init( weight: Tensor<Scalar>, bias: Tensor<Scalar>? = nil, activation: @escaping Activation )
สร้างเลเยอร์
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