@frozen
public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
เลเยอร์การบิดแบบ 2 มิติ (เช่น การบิดแบบเชิงพื้นที่เหนือรูปภาพ)
เลเยอร์นี้สร้างตัวกรองการบิดที่เชื่อมโยงกับอินพุตเลเยอร์เพื่อสร้างเทนเซอร์ของเอาท์พุต
ตัวกรองการบิดแบบ 4 มิติ
คำประกาศ
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)
สร้างเลเยอร์
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
ตัวกรองแบบหมุนวน 4 มิติของรูปร่าง [ความสูงของตัวกรอง ความกว้างของตัวกรอง จำนวนช่องอินพุต จำนวนช่องสัญญาณเอาต์พุต]
bias
เวกเตอร์อคติของรูปร่าง [จำนวนช่องสัญญาณออก]
activation
ฟังก์ชั่นการเปิดใช้งานตามองค์ประกอบ
strides
ก้าวของหน้าต่างบานเลื่อนสำหรับมิติเชิงพื้นที่ เช่น (ความสูงก้าว ความกว้างก้าว)
padding
อัลกอริธึมการเติมสำหรับการบิด
dilations
ปัจจัยการขยายสำหรับมิติเชิงพื้นที่ เช่น (ความสูงของการขยาย ความกว้างของการขยาย)
ส่งกลับผลลัพธ์ที่ได้จากการใช้เลเยอร์กับอินพุตที่กำหนด
มิติเชิงพื้นที่เอาต์พุตคำนวณได้ดังนี้:
ความสูงเอาท์พุต = (ความสูงอินพุต + 2 * ความสูงของการเสริม - (ความสูงการขยาย * (ความสูงของตัวกรอง - 1) + 1)) / ความสูงก้าวย่าง + 1
ความกว้างเอาต์พุต = (ความกว้างอินพุต + 2 * ความกว้างของช่องว่างภายใน - (ความกว้างของการขยาย * (ความกว้างของตัวกรอง - 1) + 1)) / ความกว้างก้าว + 1
และขนาดการเสริมจะถูกกำหนดโดยโครงร่างการเสริม
บันทึก
ขนาดช่องว่างภายในเท่ากับศูนย์เมื่อใช้
.valid
validพารามิเตอร์
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
รูปร่างของตัวกรองแบบหมุนวน 4 มิติ ซึ่งเป็นตัวแทน (ความสูงของตัวกรอง ความกว้างของตัวกรอง จำนวนช่องสัญญาณอินพุต จำนวนช่องสัญญาณเอาต์พุต)
strides
ก้าวของหน้าต่างบานเลื่อนสำหรับมิติเชิงพื้นที่ เช่น (ความสูงก้าว ความกว้างก้าว)
padding
อัลกอริธึมการเติมสำหรับการบิด
dilations
ปัจจัยการขยายสำหรับมิติเชิงพื้นที่ เช่น (ความสูงของการขยาย ความกว้างของการขยาย)
activation
ฟังก์ชั่นการเปิดใช้งานตามองค์ประกอบ
filterInitializer
Initializer ที่จะใช้สำหรับพารามิเตอร์ตัวกรอง
biasInitializer
Initializer ที่จะใช้สำหรับพารามิเตอร์ไบแอส