Skip to main content

A deep learning library for advanced neural network layers.

Project description

Mombai

Mombai es una librería de aprendizaje profundo diseñada para implementar y experimentar con capas de redes neuronales avanzadas, basada en investigaciones recientes. Esta librería incluye implementaciones de Kolmogorov-Arnold Networks (KANs) y modelos innovadores como WAFNet y MAXNet, los cuales exploran nuevas formas de combinar y seleccionar funciones de activación dinámicamente.

Motivación

El proyecto Mombai nace de la necesidad de explorar y llevar a la práctica conceptos avanzados de redes neuronales presentados en papers de investigación recientes. La librería está en sus primeras fases de desarrollo y busca proporcionar herramientas para experimentar con activaciones híbridas y mecanismos de atención.

A futuro, se espera mejorar la eficiencia de estas implementaciones e incorporar nuevas capas basadas en experimentos innovadores en inteligencia artificial.

Instalación

Puedes instalar la librería directamente desde PyPI usando pip:

pip install mombai

Uso

1. Uso de KANLayer

Ejemplo de cómo usar la capa KANLayer para entrenar un modelo simple que ajuste la función y = 3x + 2:

import tensorflow as tf
from mombai.layers.kan import KANLayer

class KANModel(tf.keras.Model):
    def __init__(self, units=1):
        super(KANModel, self).__init__()
        self.kan_layer = KANLayer(units=units, G=5, k=3)
        self.output_layer = tf.keras.layers.Dense(1)

    def call(self, inputs):
        x = self.kan_layer(inputs)
        return self.output_layer(x)

# Generación de datos
x_train = tf.random.uniform((1000, 1), -1, 1)
y_train = 3 * x_train + 2

# Crear y entrenar el modelo
model = KANModel(units=10)
model.compile(optimizer='adam', loss='mse')
model.fit(x_train, y_train, epochs=10, batch_size=32)

# Probar el modelo
x_test = tf.constant([[0.5]], dtype=tf.float32)
y_pred = model.predict(x_test)
print(f"Predicción para x=0.5: {y_pred}")

2. Uso de WAFLayer

WAFLayer es una capa que permite combinar múltiples funciones de activación en una sola transformación de los datos. Se pueden sumar o promediar las activaciones antes de aplicarlas.

Ejemplo de uso en una red densa:

import tensorflow as tf
from mombai.layers.waf import WAFLayer

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, input_shape=(10,)),
    WAFLayer(units=32, activations=['relu', 'swish', 'gelu'], compressor="sum"),
    tf.keras.layers.Dense(1)
])

model.compile(optimizer='adam', loss='mse')
model.summary()

Ejemplo de uso después de una capa convolucional:

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    tf.keras.layers.MaxPooling2D((2, 2)),
    WAFLayer(units=64, activations=['relu', 'swish', 'elu']),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.summary()

3. Uso de MAXLayerWithAttention

Esta capa permite que la red seleccione dinámicamente qué funciones de activación usar en cada entrada mediante un mecanismo de atención.

Ejemplo de uso en una red:

import tensorflow as tf
from mombai.layers.max import MAXLayerWithAttention

model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, input_shape=(10,)),
    MAXLayerWithAttention(units=32, activations=['relu', 'swish', 'gelu']),
    tf.keras.layers.Dense(1)
])

model.compile(optimizer='adam', loss='mse')
model.summary()

4. Uso de MAXLayerWithSelfAttention

En esta variante, la capa usa autoatención para ajustar la combinación de activaciones en función del contexto de la entrada.

Ejemplo en un modelo LSTM para clasificación de texto:

import tensorflow as tf
from tensorflow.keras.layers import Embedding, LSTM, Dense
from mombai.layers.max import MAXLayerWithSelfAttention

model = tf.keras.Sequential([
    Embedding(input_dim=5000, output_dim=128, input_length=100),
    LSTM(64, return_sequences=True),
    MAXLayerWithSelfAttention(units=32, activations=['relu', 'swish', 'gelu']),
    Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()

Estado del Proyecto

Actualmente, Mombai se encuentra en una fase inicial de desarrollo, y las implementaciones están orientadas a experimentar con funciones de activación avanzadas y mecanismos de atención. A futuro, planeamos optimizar el rendimiento y añadir nuevas capas.

Si encuentras problemas o tienes sugerencias, no dudes en abrir un issue o contribuir al proyecto.

Contribuciones

Las contribuciones son bienvenidas. Si quieres contribuir, revisa CONTRIBUTING.md (próximamente) y asegúrate de que tus cambios se alineen con la dirección general del proyecto.

Licencia

Este proyecto está licenciado bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mombai-2.0.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mombai-2.0.1-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file mombai-2.0.1.tar.gz.

File metadata

  • Download URL: mombai-2.0.1.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.1

File hashes

Hashes for mombai-2.0.1.tar.gz
Algorithm Hash digest
SHA256 886396c0d21eb873141ba64022ea40600faf6511c961b2f4bbeea4c3ed644558
MD5 5a37e0c476f6f7ac59e808bae35fbea7
BLAKE2b-256 e9e05866b4313484ba8609e0d22bb57b5cf3f3e48d649147d8a9abcd503d175a

See more details on using hashes here.

File details

Details for the file mombai-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: mombai-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.1

File hashes

Hashes for mombai-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fbc54ebc52414aa92d0fc8893a26ee5582a558e8f8c4303de5abbe2c42c8aa57
MD5 4cba0e0b421cace5329d1e5f73a74d1f
BLAKE2b-256 20778c95a1081d371fa69b4b9cd28e3e3fbed97dbb767ee90150f38b68751c0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page