Во многих библиотеках нейронных сетей есть «встраиваемые слои», как в Keras или Lasagne .
Я не уверен, что понимаю его функцию, несмотря на чтение документации. Например, в документации Keras говорится:
Превратить натуральные числа (индексы) в векторы denses фиксированного размера, например. [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Может ли знающий человек объяснить, что он делает и когда вы его используете?
РЕДАКТИРОВАТЬ: Что касается вставки в документацию, там не так много, чтобы вставить из документации, поэтому мой вопрос. Я не понимаю преобразование, которое это делает, и почему это должно использоваться.
Во всяком случае, это объясняется в Керасе:
Встраивание
keras.layers.embeddings.Embedding (input_dim, output_dim, init = 'равномерное', input_length = None, весовые коэффициенты = None, W_regularizer = None, W_constraint = None, mask_zero = False) Превращать натуральные числа (индексы) в векторы денсов фиксированного размера например [[4], [20]] -> [[0,25, 0,1], [0,6, -0,2]]
Форма ввода: 2D-тензор с формой: (nb_samples, sequence_length). Форма вывода: 3D-тензор с формой: (nb_samples, sequence_length, output_dim). Аргументы:
input_dim: int> = 0. Размер словаря, т.е. 1 + максимальный целочисленный индекс, встречающийся во входных данных. output_dim: int> = 0. Размер плотного вложения
И вот как это объясняется в лазаньи:
Слой для встраивания слов. На входе должна быть переменная Tensor целочисленного типа.
Параметры: входящий: экземпляр слоя или кортеж
Слой, подающий в этот слой, или ожидаемая входная форма.
input_size: int
Количество различных вложений. Последнее вложение будет иметь индекс input_size - 1.
output_size: int
Размер каждого вложения.
W: общая переменная Theano, выражение, массив numpe или вызываемый
Начальное значение, выражение или инициализатор для матрицы встраивания. Это должна быть матрица с формой (input_size, output_size). Смотрите lasagne.utils.create_param () для получения дополнительной информации.
Примеры
>>> from lasagne.layers import EmbeddingLayer, InputLayer, get_output >>> import theano >>> x = T.imatrix() >>> l_in = InputLayer((3, )) >>> W = np.arange(3*5).reshape((3, 5)).astype('float32') >>> l1 = EmbeddingLayer(l_in, input_size=3, output_size=5, W=W) >>> output = get_output(l1, x) >>> f = theano.function([x], output) >>> x_test = np.array([[0, 2], [1, 2]]).astype('int32') >>> f(x_test) array([[[ 0., 1., 2., 3., 4.], [ 10., 11., 12., 13., 14.]], [[ 5., 6., 7., 8., 9.], [ 10., 11., 12., 13., 14.]]], dtype=float32)