- removed Optimizer
- refactored training - use static seed for random (for better comparison) - simplified StackDeep.train
This commit is contained in:
+3
-19
@@ -1,34 +1,18 @@
|
||||
from .status import Status
|
||||
from .train import train, Optimizer
|
||||
from .train import train
|
||||
from .stack import Stack, StackType
|
||||
from .matrix import Mat, np
|
||||
|
||||
USE_OPTIMIZER = False
|
||||
|
||||
class StackDeep(Stack):
|
||||
def __init__(self, name: str, work_dir: str = '.'):
|
||||
Stack.__init__(self, StackType.Deep, name, work_dir)
|
||||
|
||||
def batch_from(self, batch: Mat, from_layer_id: int = 0):
|
||||
_batch = np.copy(batch)
|
||||
for index, layer in enumerate(self.layers):
|
||||
if index == from_layer_id:
|
||||
break
|
||||
_batch = layer.entity.forward(_batch)
|
||||
|
||||
return _batch
|
||||
|
||||
def train(self, batch: Mat, status=Status()):
|
||||
_batch = np.copy(batch)
|
||||
for index, layer in enumerate(self.layers):
|
||||
print(f"Train layer {index} for {layer.training_params.num_epochs} epochs")
|
||||
if USE_OPTIMIZER:
|
||||
optim = Optimizer(layer.entity, layer.training_params)
|
||||
_batch = optim(_batch, status=status)
|
||||
else:
|
||||
_batch = self.batch_from(batch, index)
|
||||
train(layer.entity, _batch, layer.training_params, status=status)
|
||||
|
||||
train(layer.entity, _batch, layer.training_params, status=status)
|
||||
_batch = layer.entity.forward(_batch)
|
||||
|
||||
def pass_up(self, visible: Mat, from_layer_id: int = 0):
|
||||
h = np.copy(visible)
|
||||
|
||||
Reference in New Issue
Block a user