1、Input
keras.Input(shape=None,batch_size=None,dtype=None,sparse=None,batch_shape=None,name=None,tensor=None,
)
參數說明
shape
: 輸入張量的形狀。如果為None
,則可以動態地指定形狀。batch_size
: 批處理大小。如果為None
,則可以動態地指定批處理大小。dtype
: 輸入張量的數據類型。如果為None
,則使用默認的數據類型。sparse
: 是否將輸入視為稀疏張量。如果為True
,則輸入將被轉換為稀疏張量。batch_shape
: 批處理形狀。如果為None
,則可以動態地指定批處理形狀。name
: 輸入層的名稱。如果為None
,則自動生成一個名稱。tensor
: 直接傳遞一個已經存在的張量作為輸入。
示例
#輸入張量的形狀為(32,),表示它包含32個特征
x = Input(shape=(32,))#定義一個全連接層(Dense),全連接層的神經元數量為16
#activation='softmax'表示在輸出層使用softmax激活函數,通常用于多分類問題
y = Dense(16, activation='softmax')(x)#Model函數用于將輸入層和輸出層組合成一個神經網絡模型
model = Model(x, y)
?
2、Dense layer
keras.layers.Dense(units,activation=None,use_bias=True,kernel_initializer="glorot_uniform",bias_initializer="zeros",kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None,**kwargs
)
參數說明?
units
: 輸出空間的維度,即神經元的數量。activation
: 激活函數,用于在輸出上應用非線性變換。默認為None,表示不使用激活函數。use_bias
: 布爾值,表示是否在輸出中添加偏置項。默認為True,表示添加偏置項。kernel_initializer
: 權重矩陣的初始化方法。默認為"glorot_uniform",表示使用Glorot均勻分布進行初始化。bias_initializer
: 偏置向量的初始化方法。默認為"zeros",表示使用零進行初始化。kernel_regularizer
: 權重矩陣的正則化方法。默認為None,表示不使用正則化。bias_regularizer
: 偏置向量的正則化方法。默認為None,表示不使用正則化。activity_regularizer
: 輸出的正則化方法。默認為None,表示不使用正則化。kernel_constraint
: 權重矩陣的約束方法。默認為None,表示不使用約束。bias_constraint
: 偏置向量的約束方法。默認為None,表示不使用約束。**kwargs
: 其他關鍵字參數,可以傳遞給其他函數或方法。
示例
# 創建一個簡單的神經網絡模型
model = Sequential()# 添加一個全連接層,輸入維度為10,輸出維度為5
model.add(Dense(units=5, input_dim=10, activation='relu'))# 編譯模型,設置損失函數、優化器和評估指標
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])# 打印模型結構
model.summary()
?
3、Embedding layer?
keras.layers.Embedding(input_dim,output_dim,embeddings_initializer="uniform",embeddings_regularizer=None,embeddings_constraint=None,mask_zero=False,**kwargs
)
參數說明
- input_dim:整數。詞匯表的大小,即最大整數索引+1
- output_dim:整數。密集嵌入的尺寸
- embeddings_initifier:embeddings矩陣的初始化器
- embeddings_regularizer:應用于嵌入矩陣的正則化函數
- embeddings_constraint:應用于嵌入矩陣的約束函數
- mask_zero:布爾值,無論輸入值0是否為應屏蔽的特殊“填充”值。當使用可能采用可變長度輸入的遞歸層時,這是有用的。如果為True,則模型中的所有后續層都需要支持遮罩,否則將引發異常。因此,如果mask_zero設置為True,則索引0不能在詞匯表中使用(input_dim應等于詞匯表+1的大小)
示例
#創建一個Sequential模型model
model = keras.Sequential()#向模型中添加了一個Embedding層。Embedding層用于將整數編碼轉換為固定大小的向量
#在這個例子中,詞匯表的大小為1000,每個輸入序列的長度為10,所以輸出的向量維度為64
model.add(keras.layers.Embedding(1000, 64, input_length=10))#生成一個隨機整數矩陣作為模型的輸入。
#這個矩陣的形狀為(32, 10),表示有32個樣本,每個樣本的長度為10
input_array = np.random.randint(1000, size=(32, 10))#編譯模型,指定了優化器為RMSProp,損失函數為均方誤差(MSE)
model.compile('rmsprop', 'mse')#使用模型對輸入數據進行預測
output_array = model.predict(input_array)#輸出數組的形狀,即(32, 10, 64)
print(output_array)