เทนเซอร์โฟลว์:: ปฏิบัติการ:: Conv2D
#include <nn_ops.h>
คำนวณการบิดแบบ 2 มิติโดยรับ input
4 มิติและเทนเซอร์ filter
สรุป
เมื่อพิจารณาเทนเซอร์อินพุตของรูปร่าง [batch, in_height, in_width, in_channels]
และตัวกรอง / เทนเซอร์เคอร์เนลของรูปร่าง [filter_height, filter_width, in_channels, out_channels]
op นี้จะดำเนินการต่อไปนี้:
- ทำให้ตัวกรองเรียบเป็นเมทริกซ์ 2 มิติที่มีรูปร่าง
[filter_height * filter_width * in_channels, output_channels]
- แยกแพตช์รูปภาพจากเทนเซอร์อินพุตเพื่อสร้างเทนเซอร์ เสมือนจริง ของรูปร่าง
[batch, out_height, out_width, filter_height * filter_width * in_channels]
- สำหรับแต่ละแพตช์ ให้คูณขวากับเมทริกซ์ตัวกรองและเวกเตอร์แพตช์รูปภาพ
โดยละเอียดด้วยรูปแบบ NHWC เริ่มต้น
output[b, i, j, k] =
sum_{di, dj, q} input[b, strides[1] * i + di, strides[2] * j + dj, q] *
filter[di, dj, q, k]
ต้องมี strides[0] = strides[3] = 1
สำหรับกรณีที่พบบ่อยที่สุดของการก้าวในแนวนอนและจุดยอดเดียวกัน strides = [1, stride, stride, 1]
ข้อโต้แย้ง:
- ขอบเขต: วัตถุ ขอบเขต
- อินพุต: เทนเซอร์ 4-D ลำดับมิติได้รับการตีความตามค่าของ
data_format
โปรดดูรายละเอียดด้านล่าง - ตัวกรอง: เทนเซอร์ 4 มิติของรูปร่าง
[filter_height, filter_width, in_channels, out_channels]
- ความก้าวหน้า: เมตริกซ์ 1-D ที่มีความยาว 4 ก้าวของหน้าต่างบานเลื่อนสำหรับแต่ละมิติของ
input
ลำดับมิติถูกกำหนดโดยค่าของdata_format
โปรดดูรายละเอียดด้านล่าง - padding: ประเภทของอัลกอริธึมการเติมที่จะใช้
แอ็ตทริบิวต์ทางเลือก (ดู Attrs
):
- explic_paddings: หาก
padding
คือ"EXPLICIT"
รายการของจำนวนช่องว่างภายในที่ชัดเจน สำหรับมิติที่ 8 จำนวนช่องว่างภายในที่แทรกก่อนและหลังมิติคือexplicit_paddings[2 * i]
และexplicit_paddings[2 * i + 1]
ตามลำดับ หากpadding
ไม่ใช่"EXPLICIT"
แสดงว่าexplicit_paddings
จะต้องเว้นว่างไว้ - data_format: ระบุรูปแบบข้อมูลของข้อมูลอินพุตและเอาต์พุต ด้วยรูปแบบเริ่มต้น "NHWC" ข้อมูลจะถูกจัดเก็บตามลำดับ: [แบทช์ ความสูง ความกว้าง ช่อง] หรืออีกทางหนึ่ง รูปแบบอาจเป็น "NCHW" ซึ่งเป็นลำดับการจัดเก็บข้อมูลเป็น: [แบทช์ ช่อง ความสูง ความกว้าง]
- การขยาย: เทนเซอร์ 1-D ที่มีความยาว 4. ปัจจัยการขยายสำหรับแต่ละมิติของ
input
หากตั้งค่าเป็น k > 1 จะมีเซลล์ที่ข้าม k-1 ระหว่างองค์ประกอบตัวกรองแต่ละรายการในมิตินั้น ลำดับมิติถูกกำหนดโดยค่าของdata_format
โปรดดูรายละเอียดด้านบน การขยายขนาดแบทช์และความลึกต้องเป็น 1
ผลตอบแทน:
-
Output
: เทนเซอร์ 4-D ลำดับมิติถูกกำหนดโดยค่าของdata_format
โปรดดูรายละเอียดด้านล่าง
ตัวสร้างและผู้ทำลาย | |
---|---|
Conv2D (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding) | |
Conv2D (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding, const Conv2D::Attrs & attrs) |
คุณลักษณะสาธารณะ | |
---|---|
operation | |
output |
งานสาธารณะ | |
---|---|
node () const | ::tensorflow::Node * |
operator::tensorflow::Input () const | |
operator::tensorflow::Output () const |
ฟังก์ชันคงที่สาธารณะ | |
---|---|
DataFormat (StringPiece x) | |
Dilations (const gtl::ArraySlice< int > & x) | |
ExplicitPaddings (const gtl::ArraySlice< int > & x) | |
UseCudnnOnGpu (bool x) |
โครงสร้าง | |
---|---|
เทนเซอร์โฟลว์ :: ops :: Conv2D :: Attrs | ตัวตั้งค่าแอตทริบิวต์เพิ่มเติมสำหรับ Conv2D |
คุณลักษณะสาธารณะ
การดำเนินการ
Operation operation
เอาท์พุท
::tensorflow::Output output
งานสาธารณะ
Conv2D
Conv2D( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding )
Conv2D
Conv2D( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input filter, const gtl::ArraySlice< int > & strides, StringPiece padding, const Conv2D::Attrs & attrs )
โหนด
::tensorflow::Node * node() const
ตัวดำเนินการ::tensorflow::อินพุต
operator::tensorflow::Input() const
ตัวดำเนินการ::tensorflow::เอาต์พุต
operator::tensorflow::Output() const
ฟังก์ชันคงที่สาธารณะ
รูปแบบข้อมูล
Attrs DataFormat( StringPiece x )
การขยาย
Attrs Dilations( const gtl::ArraySlice< int > & x )
Paddings ที่ชัดเจน
Attrs ExplicitPaddings( const gtl::ArraySlice< int > & x )
ใช้ CudnnOnGpu
Attrs UseCudnnOnGpu( bool x )