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

การฝังเลเยอร์

ดำเนินการฝังในชั้นอินพุต