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")