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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
886396c0d21eb873141ba64022ea40600faf6511c961b2f4bbeea4c3ed644558
|
|
| MD5 |
5a37e0c476f6f7ac59e808bae35fbea7
|
|
| BLAKE2b-256 |
e9e05866b4313484ba8609e0d22bb57b5cf3f3e48d649147d8a9abcd503d175a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbc54ebc52414aa92d0fc8893a26ee5582a558e8f8c4303de5abbe2c42c8aa57
|
|
| MD5 |
4cba0e0b421cace5329d1e5f73a74d1f
|
|
| BLAKE2b-256 |
20778c95a1081d371fa69b4b9cd28e3e3fbed97dbb767ee90150f38b68751c0a
|