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)