def FeedForward( inputs: str, outputs: str, units_inner: int, units_readout: int, dim: int, dropout_rate: float, ): """FeedForward Layer.""" if inputs == "_x": raise ValueError( "Cannot use name '_x' for inputs (used as intermediary node).") return Sequential( Select(inputs=inputs, outputs="_x"), Dropout(inputs="_x", outputs="_x", dropout_rate=dropout_rate), Conv1d(inputs="_x", outputs="_x", filters=units_inner, kernel_size=1, activation=tf.nn.relu, use_bias=True), Dropout(inputs="_x", outputs="_x", dropout_rate=dropout_rate), Conv1d(inputs="_x", outputs="_x", filters=units_readout, kernel_size=1, activation=None, use_bias=True), Dropout(inputs="_x", outputs="_x", dropout_rate=dropout_rate), Dense(inputs="_x", outputs="_x", units=dim), Add(inputs=(inputs, "_x"), outputs=outputs), )
def CombineEmbeddings(tensors, mode, output_dim, project=True): """Combine Embeddings Layers""" embedding = tf.concat(tensors, axis=-1) if project: embedding = Dense(units=output_dim)(embedding, mode=mode) return embedding