Documentacion

Terminologias del mini-framework T-Tensor

Explora, Aprende, Entrena. Utiliza el panel izquierdo para navegar por el ecosistema de T-Tensor. A la derecha, encontrarás la guía definitiva de cada módulo con ejemplos prácticos diseñados para arrancar tu próximo gran proyecto de Deep Learning sin fricciones.

Device

Enumera para seleccionar donde se ejecutan tensores y operaciones.

Opciones: Device.CPU, Device.GPU
Ejemplo 1: crear tensor en GPU.
from ttensor import Device, Tensor
x = Tensor(2, 2, Device.GPU, True)
Ejemplo 2: mover tensor entre dispositivos.
x = Tensor(2, 2, Device.CPU, False)
x.fill(1.0)
x = x.to_gpu()
x = x.to_cpu()

DeviceManager

Gestiona GPU activa, informacion de hardware y disponibilidad de VRAM.

Metodos principales: initialize(preferred_device_id=0), set_device(device_id), device_count(), get_info(), has_enough_vram(required_bytes), print_report()
Ejemplo 1: inicializar y mostrar reporte.
from ttensor import DeviceManager

DeviceManager.initialize()
DeviceManager.print_report()
info = DeviceManager.get_info()
print(info.name)
Ejemplo 2: seleccionar GPU y validar VRAM.
DeviceManager.initialize(preferred_device_id=0)
DeviceManager.set_device(0)
ok = DeviceManager.has_enough_vram(256 * 1024 * 1024)
print("VRAM suficiente:", ok)

Tensor

Estructura base para datos y autograd dinamico en CPU/GPU.

Parametros comunes: Tensor(rows, cols, device=Device.GPU, requires_grad=False)
Ejemplo 1: crear tensores y multiplicar matrices.
from ttensor import Tensor, Device

a = Tensor.from_list([1, 2, 3, 4], rows=2, cols=2, device=Device.CPU, requires_grad=True)
b = Tensor.from_list([5, 6, 7, 8], rows=2, cols=2, device=Device.CPU, requires_grad=True)
c = a @ b
c.print()
Ejemplo 2: operaciones y backward.
x = Tensor(2, 2, Device.GPU, True)
x.fill_random(-0.1, 0.1)
z = Tensor.relu(x)
loss = Tensor.mean(z)
loss.backward()
print("grad listo:", x.grad is not None)

Module

Clase base para capas y modelos. Define la interfaz comun de entrenamiento.

API: forward(input), __call__(input), parameters(), zero_grad(), save(path), load(path)
Ejemplo 1: crear una capa personalizada.
# Se usa como base al crear capas personalizadas
class MyLayer(Module):
    def forward(self, input):
        return input
Ejemplo 2: guardar y cargar un modelo.
model.save("mi_modelo.tt")
        model.load("mi_modelo.tt")
        model.zero_grad()
        

Linear

Capa densa que aplica transformacion lineal X @ W + b.

Parametros: Linear(in_features, out_features, device=Device.GPU)
Ejemplo 1: capa densa individual.
from ttensor import Linear, Device

fc1 = Linear(16, 32, device=Device.GPU)
output = fc1(input_tensor)
Ejemplo 2: dos capas densas en secuencia.
fc1 = Linear(4, 16)
fc2 = Linear(16, 3)
h = fc1(x)
y = fc2(h)

ReLU / Sigmoid / Softmax

Funciones de activacion para no linealidad y salida de clasificacion.

Uso: ReLU() para capas ocultas, Sigmoid() para binaria, Softmax() para multiclase.
Ejemplo 1: instanciar activaciones.
from ttensor import ReLU, Sigmoid, Softmax

act1 = ReLU()
act2 = Sigmoid()
act3 = Softmax()
Ejemplo 2: activaciones dentro del flujo.
h = ReLU()(hidden)
prob_bin = Sigmoid()(logit_bin)
prob_multi = Softmax()(logits_multi)

Sequential

Encadena capas en orden para construir una red de forma rapida.

Parametro: Sequential([lista_de_capas])
Ejemplo 1: red binaria simple.
from ttensor import Sequential, Linear, ReLU, Sigmoid

model = Sequential([
    Linear(2, 16),
    ReLU(),
    Linear(16, 1),
    Sigmoid(),
])
Ejemplo 2: clasificacion multiclase.
from ttensor import Softmax

        model_cls = Sequential([
          Linear(4, 32),
          ReLU(),
          Linear(32, 3),
          Softmax(),
        ])
        

SGD

Optimizador clasico de descenso por gradiente estocastico.

Parametros: SGD(params, lr)
Ejemplo 1: inicializar y ejecutar paso.
from ttensor import SGD

optimizer = SGD(model.parameters(), lr=0.01)
optimizer.zero_grad()
optimizer.step()
Ejemplo 2: ciclo mini de entrenamiento con SGD.
pred = model(x)
loss = criterion.forward(pred, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()

Adam

Optimizador adaptativo recomendado para la mayoria de tareas iniciales.

Parametros: Adam(params, lr, beta1=0.9, beta2=0.999, eps=1e-8)
Ejemplo 1: inicializar Adam y actualizar.
from ttensor import Adam

optimizer = Adam(model.parameters(), lr=0.001)
optimizer.zero_grad()
optimizer.step()
Ejemplo 2: Adam con lr mas bajo.
optimizer = Adam(model.parameters(), lr=0.0005)
        for _ in range(10):
          pred = model(x)
          loss = criterion.forward(pred, y)
          optimizer.zero_grad()
          loss.backward()
          optimizer.step()
        

MSELoss

Funcion de perdida para problemas de regresion.

Uso: loss = MSELoss().forward(pred, target)
Ejemplo 1: calcular perdida MSE.
from ttensor import MSELoss

criterion = MSELoss()
loss = criterion.forward(pred, y)
Ejemplo 2: regresion simple.
pred = model(x_reg)
target = y_reg
criterion = MSELoss()
loss = criterion.forward(pred, target)

CrossEntropyLoss

Funcion de perdida para clasificacion multiclase con objetivo one-hot.

Uso: loss = CrossEntropyLoss().forward(logits_or_probs, target_one_hot)
Ejemplo 1: calcular perdida de clasificacion.
from ttensor import CrossEntropyLoss

criterion = CrossEntropyLoss()
loss = criterion.forward(pred, y_one_hot)
Ejemplo 2: clasificacion 3 clases.
criterion = CrossEntropyLoss()
pred = model(x_batch)        # salida softmax/logits
loss = criterion.forward(pred, y3_one_hot)

CSVDataset

Carga datasets desde CSV indicando columnas de etiqueta.

Parametros: CSVDataset(path, label_cols, device=Device.GPU)
Ejemplo 1: cargar dataset con 1 etiqueta.
from ttensor import CSVDataset, Device

dataset = CSVDataset("data/train.csv", label_cols=1, device=Device.GPU)
Ejemplo 2: dataset con dos columnas de etiqueta.
dataset2 = CSVDataset("data/multilabel.csv", label_cols=2, device=Device.CPU)

DataLoader

Itera mini-batches para entrenamiento con opcion de barajado.

Parametros: DataLoader(dataset, batch_size, shuffle=True)
Ejemplo 1: iterar batches de entrenamiento.
from ttensor import DataLoader

loader = DataLoader(dataset, batch_size=32, shuffle=True)
loader.reset()
while loader.has_next():
    xb, yb = loader.next_batch()
Ejemplo 2: sin barajado para evaluacion.
val_loader = DataLoader(dataset, batch_size=64, shuffle=False)
        val_loader.reset()
        while val_loader.has_next():
          xv, yv = val_loader.next_batch()
        

Loop de entrenamiento

Flujo base recomendado: forward, perdida, zero_grad, backward y step.

Plantilla: reutilizable para MLP, clasificacion y regresion.
Ejemplo 1: loop base por epocas.
for epoch in range(num_epochs):
    pred = model(x)
    loss = criterion.forward(pred, y)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
Ejemplo 2: loop con DataLoader.
for epoch in range(num_epochs):
          loader.reset()
          while loader.has_next():
            xb, yb = loader.next_batch()
            pred = model(xb)
            loss = criterion.forward(pred, yb)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
        

Ejemplo completo en Python (terminologias principales)

Script base de puesta en marcha usando DeviceManager, Tensor, Sequential, Linear, ReLU, Softmax, CrossEntropyLoss, Adam, y flujo de entrenamiento completo.

Nota: adapta nombres/metodos si tu build local expone una API ligeramente distinta.
from ttensor import (
    Device,
    DeviceManager,
    Tensor,
    Sequential,
    Linear,
    ReLU,
    Softmax,
    CrossEntropyLoss,
    Adam,
)

# 1) Inicializar dispositivo (CPU/GPU)
DeviceManager.initialize(preferred_device_id=0)
DeviceManager.print_report()
device = Device.GPU

# 2) Crear datos de ejemplo (X: 4x2, y one-hot: 4x2)
X = Tensor.from_list([
    0.0, 0.0,
    0.0, 1.0,
    1.0, 0.0,
    1.0, 1.0,
], rows=4, cols=2, device=device, requires_grad=False)

y = Tensor.from_list([
    1.0, 0.0,
    0.0, 1.0,
    0.0, 1.0,
    1.0, 0.0,
], rows=4, cols=2, device=device, requires_grad=False)

# 3) Definir modelo (Module/Sequential + capas nn)
model = Sequential([
    Linear(2, 8, device=device),
    ReLU(),
    Linear(8, 2, device=device),
    Softmax(),
])

# 4) Definir perdida y optimizador
criterion = CrossEntropyLoss()
optimizer = Adam(model.parameters(), lr=0.01)

# 5) Entrenamiento
num_epochs = 500
for epoch in range(num_epochs):
    pred = model(X)                       # forward
    loss = criterion.forward(pred, y)     # loss

    optimizer.zero_grad()                 # limpiar gradientes
    loss.backward()                       # backward autograd
    optimizer.step()                      # actualizar pesos

    if epoch % 100 == 0:
        print(f"epoch={epoch} loss={loss.item():.6f}")

# 6) Inferencia
pred_final = model(X)
print("Predicciones:", pred_final.tolist())

# 7) Opcional: guardar/cargar modelo
model.save("modelo_demo.tt")
# model.load("modelo_demo.tt")