NeuCF源码中用到的模块(函数)
论文:《Neural Collaborative Filtering》源码中用到的模块(函数)
from keras.layers import Embedding, Input, Dense, merge, Reshape, Merge, Flatten
(1)Input():用于实例化 Keras 张量
keras.engine.input_layer.Input()
参数:
-
shape: 一个尺寸元组(整数),不包含批量大小。 例如,shape=(32,) 表明期望的输入是按批次的 32 维向量。
-
batch_shape: 一个尺寸元组(整数),包含批量大小。 例如,batch_shape=(10, 32)表明期望的输入是 10 个 32 维向量。 batch_shape=(None, 32) 表明任意批次大小的 32 维向量。
-
name: 一个可选的层的名称的字符串。 在一个模型中应该是唯一的(不可以重用一个名字两次)。 如未提供,将自动生成。
-
dtype: 输入所期望的数据类型,字符串表示 (float32, float64, int32...)
-
sparse: 一个布尔值,指明需要创建的占位符是否是稀疏的。
-
tensor: 可选的可封装到 Input 层的现有张量。 如果设定了,那么这个层将不会创建占位符张量。
返回:一个张量。
(2)Embedding(): 将正整数(索引值)转换为固定尺寸的稠密向量。 例如: [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]。 该层只能用作模型中的第一层。
参数:
-
input_dim: int > 0。词汇表大小, 即,最大整数 index + 1。
-
output_dim: int >= 0。词向量的维度。
-
embeddings_initializer: embeddings 矩阵的初始化方法 (详见 initializers)。
-
embeddings_regularizer: embeddings matrix 的正则化方法 (详见 regularizer)。
-
embeddings_constraint: embeddings matrix 的约束函数 (详见 constraints)。
-
mask_zero: 是否把 0 看作为一个应该被遮蔽的特殊的 "padding" 值。 这对于可变长的 循环神经网络层 十分有用。 如果设定为 True,那么接下来的所有层都必须支持 masking,否则就会抛出异常。 如果 mask_zero 为 True,作为结果,索引 0 就不能被用于词汇表中 (input_dim 应该与 vocabulary + 1 大小相同)。
-
input_length: 输入序列的长度,当它是固定的时。 如果你需要连接 Flatten 和 Dense 层,则这个参数是必须的 (没有它,dense 层的输出尺寸就无法计算)。
输入尺寸: 尺寸为 (batch_size, sequence_length) 的 2D 张量。
输出尺寸: 尺寸为 (batch_size, sequence_length, output_dim) 的 3D 张量。
(3)Flatten(): 将输入展平。不影响批量大小。
参数
-
data_format:一个字符串,其值为 channels_last(默认值)或者 channels_first。它表明输入的维度的顺序。此参数的目的是当模型从一种数据格式切换到另一种数据格式时保留权重顺序。channels_last 对应着尺寸为 (batch, ..., channels) 的输入,而 channels_first 对应着尺寸为 (batch, channels, ...) 的输入。默认为 image_data_format 的值,你可以在 Keras 的配置文件 ~/.keras/keras.json 中找到它。如果你从未设置过它,那么它将是 channels_last
(4)Dense(): 就是常用的全连接层。
Dense 实现以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。
-
注意: 如果该层的输入的秩大于2,那么它首先被展平然后 再计算与 kernel 的点乘。
参数
-
units: 正整数,输出空间维度。
-
activation: 激活函数 (详见 activations)。 若不指定,则不使用激活函数 (即,「线性」激活: a(x) = x)。
-
use_bias: 布尔值,该层是否使用偏置向量。
-
kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
-
bias_initializer: 偏置向量的初始化器 (see initializers).
-
kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
-
bias_regularizer: 运用到偏置向的的正则化函数 (详见 regularizer)。
-
activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。 (详见 regularizer)。
-
kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
-
bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
输入尺寸: nD 张量,尺寸: (batch_size, ..., input_dim)。 最常见的情况是一个尺寸为 (batch_size, input_dim) 的 2D 输入。
输出尺寸: nD 张量,尺寸: (batch_size, ..., units)。 例如,对于尺寸为 (batch_size, input_dim) 的 2D 输入, 输出的尺寸为 (batch_size, units)。
(5)compile():用于配置训练模型
compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
参数:
-
optimizer: 字符串(优化器名)或者优化器实例。 详见 optimizers。
-
loss: 字符串(目标函数名)或目标函数。 详见 losses。 如果模型具有多个输出,则可以通过传递损失函数的字典或列表,在每个输出上使用不同的损失。 模型将最小化的损失值将是所有单个损失的总和。
-
metrics: 在训练和测试期间的模型评估标准。 通常你会使用 metrics = ['accuracy']。 要为多输出模型的不同输出指定不同的评估标准, 还可以传递一个字典,如 metrics = {'output_a':'accuracy'}。
-
loss_weights: 可选的指定标量系数(Python 浮点数)的列表或字典, 用以衡量损失函数对不同的模型输出的贡献。 模型将最小化的误差值是由 loss_weights 系数加权的加权总和误差。 如果是列表,那么它应该是与模型输出相对应的 1:1 映射。 如果是张量,那么应该把输出的名称(字符串)映到标量系数。
-
sample_weight_mode: 如果你需要执行按时间步采样权重(2D 权重),请将其设置为 temporal。 默认为 None,为采样权重(1D)。 如果模型有多个输出,则可以通过传递 mode 的字典或列表,以在每个输出上使用不同的 sample_weight_mode。
-
weighted_metrics: 在训练和测试期间,由 sample_weight 或 class_weight 评估和加权的度量标准列表。
-
target_tensors: 默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。 相反,如果你想使用自己的目标张量(反过来说,Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据), 您可以通过 target_tensors 参数指定它们。 它可以是单个张量(单输出模型),张量列表,或一个映射输出名称到目标张量的字典。
-
**kwargs: 当使用 Theano/CNTK 后端时,这些参数被传入 K.function。 当使用 TensorFlow 后端时,这些参数被传递到 tf.Session.run。
【Reference】
1、Docs »Layers »核心网络层: https://keras.io/zh/layers/core/
2、Docs »模型 »函数式 API:https://keras.io/zh/models/model/#compile
posted on 2019-07-10 12:01 CuriousZero 阅读(509) 评论(0) 编辑 收藏 举报