Files
pyRBM/src/rbm/stack.py
T
2025-12-17 11:31:13 +01:00

48 lines
1.0 KiB
Python

from enum import Enum
from layer import Layer
class StackType(Enum):
Deep = "Deep",
Rnn = "Rnn"
class StackException(Exception):
pass
class Stack:
def __init__(self, stack_type: StackType, name: str):
self.stack_type = stack_type
self.name = name
self.layers: list[Layer] = []
def num_layers(self):
return len(self.layers)
def append(self, layer: Layer):
self.layers.append(layer)
return self.num_layers()-1
def remove(self, layer: Layer):
for index, lay in enumerate(self.layers):
if lay == layer:
del(self.layers[index])
return
raise StackException(f"Layer \"{layer.name}\" does not exist")
def from_index(self, index : int) -> Layer:
result = self.layers[index]
return result
def from_name(self, name: str):
for layer in self.layers:
if layer.name in name:
return layer
return None
def init(self, std: float):
for layer in self.layers:
layer.init(std)
def state_save(self):
for index, layer in enumerate(self.layers):
layer.save(f"{self.name}-{index}-state.npz")