Source code for deepr.examples.movielens.layers.transformer
# pylint: disable=unexpected-keyword-arg,no-value-for-parameter
"""Transformer Model."""
import tensorflow as tf
import numpy as np
import deepr
[docs]def TransformerModel(vocab_size: int, dim: int, **kwargs):
"""Transformer Model."""
return deepr.layers.DAG(
deepr.layers.Select(inputs=("inputPositives", "inputMask")),
deepr.layers.Embedding(
inputs="inputPositives",
outputs="inputEmbeddings",
variable_name="embeddings",
shape=(vocab_size, dim),
initializer=tf.random_normal_initializer(mean=0.0, stddev=np.sqrt(1 / dim)),
),
deepr.layers.Transformer(inputs=("inputEmbeddings", "inputMask"), outputs="userEmbeddings", dim=dim, **kwargs),
Logits(inputs="userEmbeddings", outputs="logits"),
deepr.layers.Select(inputs=("userEmbeddings", "logits")),
)
[docs]@deepr.layers.layer(n_in=1, n_out=1)
def Logits(tensors: tf.Tensor, vocab_size: int, dim: int):
embeddings = tf.get_variable(name="embeddings", shape=(vocab_size, dim), reuse=True)
biases = tf.get_variable(name="biases", shape=(vocab_size,), initializer=tf.zeros_initializer())
logits = tf.linalg.matmul(tensors, embeddings, transpose_b=True) + tf.expand_dims(biases, axis=0)
return logits