Keras - เลเยอร์
ดังที่ได้เรียนไปก่อนหน้านี้เลเยอร์ Keras เป็นส่วนประกอบหลักของโมเดล Keras แต่ละเลเยอร์จะรับข้อมูลอินพุตทำการคำนวณบางอย่างและสุดท้ายส่งออกข้อมูลที่แปลงแล้ว เอาต์พุตของเลเยอร์หนึ่งจะไหลไปยังเลเยอร์ถัดไปเป็นอินพุต ให้เราเรียนรู้รายละเอียดทั้งหมดเกี่ยวกับเลเยอร์ในบทนี้
บทนำ
ต้องการเลเยอร์ Keras shape of the input (input_shape) เพื่อทำความเข้าใจโครงสร้างของข้อมูลอินพุต initializerเพื่อกำหนดน้ำหนักสำหรับแต่ละอินพุตและในที่สุดตัวกระตุ้นจะแปลงเอาต์พุตเพื่อให้ไม่เป็นเชิงเส้น ในระหว่างนั้นข้อ จำกัด จะ จำกัด และระบุช่วงที่น้ำหนักของข้อมูลอินพุตที่จะสร้างขึ้นและตัวควบคุมจะพยายามเพิ่มประสิทธิภาพเลเยอร์ (และโมเดล) โดยการใช้บทลงโทษกับน้ำหนักแบบไดนามิกในระหว่างขั้นตอนการเพิ่มประสิทธิภาพ
สรุปได้ว่าเลเยอร์ Keras ต้องการรายละเอียดขั้นต่ำด้านล่างเพื่อสร้างเลเยอร์ที่สมบูรณ์
- รูปร่างของข้อมูลอินพุต
- จำนวนเซลล์ประสาท / หน่วยในชั้น
- Initializers
- Regularizers
- Constraints
- Activations
ให้เราเข้าใจแนวคิดพื้นฐานในบทถัดไป ก่อนที่จะทำความเข้าใจแนวคิดพื้นฐานให้เราสร้างเลเยอร์ Keras อย่างง่ายโดยใช้ Sequential model API เพื่อรับแนวคิดว่าโมเดลและเลเยอร์ของ Keras ทำงานอย่างไร
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
from keras import regularizers
from keras import constraints
model = Sequential()
model.add(Dense(32, input_shape=(16,), kernel_initializer = 'he_uniform',
kernel_regularizer = None, kernel_constraint = 'MaxNorm', activation = 'relu'))
model.add(Dense(16, activation = 'relu'))
model.add(Dense(8))
ที่ไหน
Line 1-5 นำเข้าโมดูลที่จำเป็น
Line 7 สร้างโมเดลใหม่โดยใช้ Sequential API
Line 9 สร้างไฟล์ Dense เลเยอร์และเพิ่มลงในโมเดล Denseเป็นชั้นเริ่มต้นที่ Keras จัดเตรียมไว้ซึ่งยอมรับจำนวนเซลล์ประสาทหรือหน่วย (32) เป็นพารามิเตอร์ที่ต้องการ หากเลเยอร์เป็นเลเยอร์แรกเราจำเป็นต้องจัดเตรียมInput Shape, (16,)เช่นกัน. มิฉะนั้นเอาต์พุตของเลเยอร์ก่อนหน้าจะถูกใช้เป็นอินพุตของเลเยอร์ถัดไป พารามิเตอร์อื่น ๆ ทั้งหมดเป็นทางเลือก
พารามิเตอร์แรกแสดงถึงจำนวนหน่วย (เซลล์ประสาท)
input_shape แสดงถึงรูปร่างของข้อมูลอินพุต
kernel_initializer เป็นตัวแทนของ initializer ที่จะใช้ he_uniform ฟังก์ชันถูกกำหนดเป็นค่า
kernel_regularizer แทน regularizerที่จะใช้ ไม่มีการตั้งค่าเป็นค่า
kernel_constraint แสดงถึงข้อ จำกัด ที่จะใช้ MaxNorm ฟังก์ชันถูกกำหนดเป็นค่า
activationแสดงถึงการเปิดใช้งานที่จะใช้ ฟังก์ชัน relu ถูกตั้งค่าเป็นค่า
Line 10 สร้างวินาที Dense ชั้นที่มี 16 หน่วยและชุด relu เป็นฟังก์ชันการเปิดใช้งาน
Line 11 สร้างเลเยอร์ Dense ขั้นสุดท้ายด้วย 8 หน่วย
แนวคิดพื้นฐานของเลเยอร์
ให้เราเข้าใจแนวคิดพื้นฐานของเลเยอร์รวมถึงวิธีที่ Keras สนับสนุนแนวคิดแต่ละอย่าง
รูปร่างอินพุต
ในแมชชีนเลิร์นนิงข้อมูลอินพุตทุกประเภทเช่นข้อความรูปภาพหรือวิดีโอจะถูกแปลงเป็นอาร์เรย์ของตัวเลขก่อนแล้วจึงป้อนเข้าในอัลกอริทึม ตัวเลขอินพุตอาจเป็นอาร์เรย์มิติเดียวอาร์เรย์สองมิติ (เมทริกซ์) หรืออาร์เรย์หลายมิติ เราสามารถระบุข้อมูลมิติโดยใช้shapeทูเพิลของจำนวนเต็ม ตัวอย่างเช่น,(4,2) แสดงเมทริกซ์ด้วยสี่แถวและสองคอลัมน์
>>> import numpy as np
>>> shape = (4, 2)
>>> input = np.zeros(shape)
>>> print(input)
[
[0. 0.]
[0. 0.]
[0. 0.]
[0. 0.]
]
>>>
ในทำนองเดียวกัน (3,4,2) เมทริกซ์สามมิติที่มีเมทริกซ์ 4x2 สามคอลเลกชัน (สองแถวและสี่คอลัมน์)
>>> import numpy as np
>>> shape = (3, 4, 2)
>>> input = np.zeros(shape)
>>> print(input)
[
[[0. 0.] [0. 0.] [0. 0.] [0. 0.]]
[[0. 0.] [0. 0.] [0. 0.] [0. 0.]]
[[0. 0.] [0. 0.] [0. 0.] [0. 0.]]
]
>>>
ในการสร้างเลเยอร์แรกของโมเดล (หรือชั้นอินพุตของโมเดล) ควรระบุรูปร่างของข้อมูลอินพุต
ตัวเริ่มต้น
ใน Machine Learning น้ำหนักจะถูกกำหนดให้กับข้อมูลอินพุตทั้งหมด Initializersโมดูลมีฟังก์ชันที่แตกต่างกันเพื่อกำหนดน้ำหนักเริ่มต้นเหล่านี้ บางส่วนของKeras Initializer ฟังก์ชั่นมีดังนี้ -
เลขศูนย์
สร้าง 0 สำหรับข้อมูลอินพุตทั้งหมด
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Zeros()
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
ที่ไหน kernel_initializer เป็นตัวแทนของ initializer สำหรับเคอร์เนลของโมเดล
คน
สร้าง 1 สำหรับข้อมูลอินพุตทั้งหมด
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Ones()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
คงที่
สร้างค่าคงที่ (พูดว่า 5) ระบุโดยผู้ใช้สำหรับข้อมูลอินพุตทั้งหมด
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Constant(value = 0) model.add(
Dense(512, activation = 'relu', input_shape = (784,), kernel_initializer = my_init)
)
ที่ไหน value แทนค่าคงที่
สุ่ม
สร้างค่าโดยใช้การกระจายปกติของข้อมูลอินพุต
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.RandomNormal(mean=0.0,
stddev = 0.05, seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
ที่ไหน
mean แสดงถึงค่าเฉลี่ยของค่าสุ่มที่จะสร้าง
stddev แทนค่าเบี่ยงเบนมาตรฐานของค่าสุ่มที่จะสร้าง
seed แทนค่าเพื่อสร้างตัวเลขสุ่ม
RandomUniform
สร้างค่าโดยใช้การกระจายข้อมูลอินพุตอย่างสม่ำเสมอ
from keras import initializers
my_init = initializers.RandomUniform(minval = -0.05, maxval = 0.05, seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
ที่ไหน
minval แสดงขอบเขตล่างของค่าสุ่มที่จะสร้าง
maxval แสดงขอบเขตบนของค่าสุ่มที่จะสร้าง
ปกติ
สร้างค่าโดยใช้การแจกแจงข้อมูลอินพุตแบบปกติที่ถูกตัดทอน
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.TruncatedNormal(mean = 0.0, stddev = 0.05, seed = None
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
ความแปรปรวน
สร้างค่าตามรูปร่างอินพุตและรูปร่างเอาต์พุตของเลเยอร์พร้อมกับมาตราส่วนที่ระบุ
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.VarianceScaling(
scale = 1.0, mode = 'fan_in', distribution = 'normal', seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
skernel_initializer = my_init))
ที่ไหน
scale แสดงถึงปัจจัยการปรับขนาด
mode เป็นตัวแทนของคนใดคนหนึ่ง fan_in, fan_out และ fan_avg ค่า
distribution เป็นตัวแทนของ normal หรือ uniform
ความแปรปรวน
พบไฟล์ stddev ค่าสำหรับการแจกแจงปกติโดยใช้สูตรด้านล่างจากนั้นหาน้ำหนักโดยใช้การแจกแจงปกติ
stddev = sqrt(scale / n)
ที่ไหน n แทน,
จำนวนหน่วยอินพุตสำหรับโหมด = fan_in
จำนวนหน่วยออกสำหรับโหมด = fan_out
จำนวนหน่วยอินพุตและเอาต์พุตโดยเฉลี่ยสำหรับโหมด = fan_avg
ในทำนองเดียวกันพบขีด จำกัดสำหรับการแจกแจงแบบสม่ำเสมอโดยใช้สูตรด้านล่างจากนั้นหาน้ำหนักโดยใช้การแจกแจงแบบสม่ำเสมอ
limit = sqrt(3 * scale / n)
lecun_normal
สร้างค่าโดยใช้การแจกแจงแบบปกติของข้อมูลอินพุต
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.RandomUniform(minval = -0.05, maxval = 0.05, seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
พบไฟล์ stddev โดยใช้สูตรด้านล่างแล้วใช้การแจกแจงแบบปกติ
stddev = sqrt(1 / fan_in)
ที่ไหน fan_in แทนจำนวนหน่วยอินพุต
lecun_uniform
สร้างค่าโดยใช้การกระจายข้อมูลอินพุตที่สม่ำเสมอของ lecun
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.lecun_uniform(seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
พบไฟล์ limit ใช้สูตรด้านล่างแล้วใช้การกระจายสม่ำเสมอ
limit = sqrt(3 / fan_in)
ที่ไหน
fan_in แสดงถึงจำนวนหน่วยอินพุต
fan_out แสดงถึงจำนวนหน่วยเอาต์พุต
glorot_normal
สร้างค่าโดยใช้การกระจายข้อมูลอินพุตแบบปกติของ glorot
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.glorot_normal(seed=None) model.add(
Dense(512, activation = 'relu', input_shape = (784,), kernel_initializer = my_init)
)
พบไฟล์ stddev โดยใช้สูตรด้านล่างแล้วใช้การแจกแจงแบบปกติ
stddev = sqrt(2 / (fan_in + fan_out))
ที่ไหน
fan_in แสดงถึงจำนวนหน่วยอินพุต
fan_out แสดงถึงจำนวนหน่วยเอาต์พุต
glorot_uniform
สร้างมูลค่าโดยใช้การกระจายข้อมูลอินพุตที่สม่ำเสมอของ glorot
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.glorot_uniform(seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
พบไฟล์ limit ใช้สูตรด้านล่างแล้วใช้การกระจายสม่ำเสมอ
limit = sqrt(6 / (fan_in + fan_out))
ที่ไหน
fan_in แทนจำนวนหน่วยอินพุต
fan_out แสดงถึงจำนวนหน่วยเอาต์พุต
he_normal
สร้างมูลค่าโดยใช้การกระจายข้อมูลอินพุตตามปกติ
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.RandomUniform(minval = -0.05, maxval = 0.05, seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
พบstddevโดยใช้สูตรด้านล่างจากนั้นใช้การแจกแจงแบบปกติ
stddev = sqrt(2 / fan_in)
ที่ไหน fan_in แทนจำนวนหน่วยอินพุต
he_uniform
สร้างมูลค่าโดยใช้การกระจายข้อมูลอินพุตอย่างสม่ำเสมอ
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.he_normal(seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
พบไฟล์ limit ใช้สูตรด้านล่างแล้วใช้การกระจายสม่ำเสมอ
limit = sqrt(6 / fan_in)
ที่ไหน fan_in แทนจำนวนหน่วยอินพุต
มุมฉาก
สร้างเมทริกซ์มุมฉากแบบสุ่ม
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Orthogonal(gain = 1.0, seed = None)
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init))
ที่ไหน gain แทนตัวคูณการคูณของเมทริกซ์
เอกลักษณ์
สร้างเมทริกซ์เอกลักษณ์
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Identity(gain = 1.0) model.add(
Dense(512, activation = 'relu', input_shape = (784,), kernel_initializer = my_init)
)
ข้อ จำกัด
ในแมชชีนเลิร์นนิงจะมีการกำหนดข้อ จำกัด ให้กับพารามิเตอร์ (น้ำหนัก) ในระหว่างขั้นตอนการเพิ่มประสิทธิภาพ <> โมดูลข้อ จำกัด มีฟังก์ชันต่างๆในการตั้งค่าข้อ จำกัด บนเลเยอร์ ฟังก์ชันข้อ จำกัด บางประการมีดังนี้
NonNeg
จำกัด น้ำหนักให้ไม่เป็นลบ
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import initializers
my_init = initializers.Identity(gain = 1.0) model.add(
Dense(512, activation = 'relu', input_shape = (784,),
kernel_initializer = my_init)
)
ที่ไหน kernel_constraint แสดงถึงข้อ จำกัด ที่จะใช้ในเลเยอร์
UnitNorm
จำกัด น้ำหนักให้เป็นบรรทัดฐานของหน่วย
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import constraints
my_constrain = constraints.UnitNorm(axis = 0)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_constraint = my_constrain))
MaxNorm
จำกัด น้ำหนักให้เป็นบรรทัดฐานน้อยกว่าหรือเท่ากับค่าที่กำหนด
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import constraints
my_constrain = constraints.MaxNorm(max_value = 2, axis = 0)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_constraint = my_constrain))
ที่ไหน
max_value แสดงขอบเขตบน
แกนแสดงถึงมิติที่จะใช้ข้อ จำกัด เช่นใน Shape (2,3,4) แกน 0 หมายถึงมิติแรก 1 หมายถึงมิติที่สองและ 2 หมายถึงมิติที่สาม
MinMaxNorm
จำกัด น้ำหนักให้เป็นบรรทัดฐานระหว่างค่าต่ำสุดและค่าสูงสุดที่ระบุ
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import constraints
my_constrain = constraints.MinMaxNorm(min_value = 0.0, max_value = 1.0, rate = 1.0, axis = 0)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_constraint = my_constrain))
ที่ไหน rate แสดงถึงอัตราที่ใช้ข้อ จำกัด ด้านน้ำหนัก
Regularizers
ในแมชชีนเลิร์นนิงจะใช้ตัวควบคุมปกติในขั้นตอนการเพิ่มประสิทธิภาพ ใช้บทลงโทษบางอย่างกับพารามิเตอร์เลเยอร์ระหว่างการปรับให้เหมาะสม โมดูลการทำให้เป็นมาตรฐาน Keras มีฟังก์ชันด้านล่างเพื่อกำหนดบทลงโทษบนเลเยอร์ การทำให้เป็นมาตรฐานใช้ต่อชั้นเท่านั้น
L1 Regularizer
ให้การทำให้เป็นมาตรฐานตาม L1
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import regularizers
my_regularizer = regularizers.l1(0.)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_regularizer = my_regularizer))
ที่ไหน kernel_regularizer แสดงถึงอัตราที่ใช้ข้อ จำกัด ด้านน้ำหนัก
L2 Regularizer
ให้การกำหนดมาตรฐานตาม L2
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import regularizers
my_regularizer = regularizers.l2(0.)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_regularizer = my_regularizer))
L1 และ L2 Regularizer
มีทั้งการกำหนดมาตรฐานตาม L1 และ L2
from keras.models import Sequential
from keras.layers import Activation, Dense
from keras import regularizers
my_regularizer = regularizers.l2(0.)
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,),
kernel_regularizer = my_regularizer))
การเปิดใช้งาน
ในการเรียนรู้ของเครื่องฟังก์ชันการเปิดใช้งานเป็นฟังก์ชันพิเศษที่ใช้เพื่อค้นหาว่าเซลล์ประสาทเฉพาะถูกเปิดใช้งานหรือไม่ โดยพื้นฐานแล้วฟังก์ชั่นการกระตุ้นจะทำการเปลี่ยนแปลงข้อมูลอินพุตแบบไม่เชิงเส้นและทำให้เซลล์ประสาทเรียนรู้ได้ดีขึ้น ผลลัพธ์ของเซลล์ประสาทขึ้นอยู่กับฟังก์ชันการกระตุ้น
ในขณะที่คุณนึกถึงแนวคิดของการรับรู้เดี่ยวผลลัพธ์ของ perceptron (เซลล์ประสาท) เป็นเพียงผลจากฟังก์ชันกระตุ้นซึ่งยอมรับการรวมของอินพุตทั้งหมดคูณด้วยน้ำหนักที่สอดคล้องกันบวกอคติโดยรวมหากมี
result = Activation(SUMOF(input * weight) + bias)
ดังนั้นฟังก์ชันการเปิดใช้งานจึงมีบทบาทสำคัญในการเรียนรู้โมเดลที่ประสบความสำเร็จ Keras มีฟังก์ชันการเปิดใช้งานจำนวนมากในโมดูลการเปิดใช้งาน ให้เราเรียนรู้การเปิดใช้งานทั้งหมดที่มีอยู่ในโมดูล
เชิงเส้น
ใช้ฟังก์ชัน Linear ไม่ทำอะไรเลย
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'linear', input_shape = (784,)))
ที่ไหน activationหมายถึงฟังก์ชันการเปิดใช้งานของเลเยอร์ สามารถระบุได้ง่ายๆด้วยชื่อของฟังก์ชันและเลเยอร์จะใช้ตัวกระตุ้นที่เกี่ยวข้อง
elu
ใช้หน่วยเชิงเส้นเอกซ์โปเนนเชียล
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'elu', input_shape = (784,)))
Selu
ใช้หน่วยเชิงเส้นเลขชี้กำลังที่ปรับขนาด
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'selu', input_shape = (784,)))
relu
ใช้ Rectified Linear Unit
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'relu', input_shape = (784,)))
ซอฟต์แม็กซ์
ใช้ฟังก์ชัน Softmax
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'softmax', input_shape = (784,)))
ซอฟท์พลัส
ใช้ฟังก์ชัน Softplus
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'softplus', input_shape = (784,)))
softsign
ใช้ฟังก์ชัน Softsign
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'softsign', input_shape = (784,)))
Tanh
ใช้ฟังก์ชันไฮเพอร์โบลิกแทนเจนต์
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'tanh', input_shape = (784,)))
ซิกมอยด์
ใช้ฟังก์ชัน Sigmoid
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'sigmoid', input_shape = (784,)))
hard_sigmoid
ใช้ฟังก์ชัน Hard Sigmoid
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'hard_sigmoid', input_shape = (784,)))
เลขชี้กำลัง
ใช้ฟังก์ชันเอกซ์โพเนนเชียล
from keras.models import Sequential
from keras.layers import Activation, Dense
model = Sequential()
model.add(Dense(512, activation = 'exponential', input_shape = (784,)))
ซีเนียร์ No | เลเยอร์และคำอธิบาย |
---|---|
1 | เลเยอร์หนาแน่น Dense layer เป็นชั้นเครือข่ายประสาทเทียมที่เชื่อมต่อกันอย่างลึกซึ้งปกติ |
2 | เลเยอร์กลางคัน Dropout เป็นแนวคิดที่สำคัญอย่างหนึ่งในการเรียนรู้ของเครื่อง |
3 | แบนเลเยอร์ Flatten ใช้เพื่อทำให้อินพุตแบนราบ |
4 | ปรับรูปร่างเลเยอร์ Reshape ใช้เพื่อเปลี่ยนรูปร่างของอินพุต |
5 | ชั้นอนุญาต Permute ยังใช้เพื่อเปลี่ยนรูปร่างของอินพุตโดยใช้รูปแบบ |
6 | RepeatVector เลเยอร์ RepeatVector ใช้เพื่อป้อนข้อมูลซ้ำสำหรับจำนวนชุด n ครั้ง |
7 | แลมบ์ดาเลเยอร์ Lambda ใช้เพื่อแปลงข้อมูลอินพุตโดยใช้นิพจน์หรือฟังก์ชัน |
8 | เลเยอร์ Convolution Keras มีจำนวนมากของชั้นสำหรับการสร้างบิดตาม ANN นิยมเรียกกันว่าเป็นบิดโครงข่ายประสาทเทียม (ซีเอ็นเอ็น) |
9 | การรวมเลเยอร์ ใช้เพื่อดำเนินการรวมสูงสุดกับข้อมูลชั่วคราว |
10 | เลเยอร์ที่เชื่อมต่อภายใน เลเยอร์ที่เชื่อมต่อภายในนั้นคล้ายกับเลเยอร์ Conv1D แต่ความแตกต่างคือน้ำหนักของเลเยอร์ Conv1D จะถูกแชร์ แต่ที่นี่จะไม่แชร์น้ำหนัก |
11 | ผสานเลเยอร์ ใช้เพื่อรวมรายการอินพุต |
12 | การฝังเลเยอร์ ดำเนินการฝังในชั้นอินพุต |