fixed error for other WIN sizes

This commit is contained in:
2026-06-04 23:19:18 +02:00
parent 06ab8d0166
commit b5a128fb61
+16 -10
View File
@@ -24,16 +24,16 @@ from rbm.train import train
from rbm.status import Status from rbm.status import Status
# ── Hyper-parameters ────────────────────────────────────────────────────────── # ── Hyper-parameters ──────────────────────────────────────────────────────────
TEXT = " HALLO SUPER JENS!" # the character sequence to learn (matches diagram example) TEXT = " HALLO SUPER JENS UND SUPER MAUSI!" # the character sequence to learn (matches diagram example)
WIN = 3 # sliding-window width (= N in the diagram) WIN = 5 # sliding-window width (= N in the diagram)
STRIDE = 1 # sliding-window step size STRIDE = 1 # sliding-window step size
UNITS = 1 UNITS = 1
H_SIZE = 128 # hidden units per RBM cell H_SIZE = 180 # hidden units per RBM cell
NUM_EPOCHS = 1000 NUM_EPOCHS = 100
NUM_ITERATIONS = 1 NUM_ITERATIONS = 10
TRAIN_PARAMS = TrainingParams( TRAIN_PARAMS = TrainingParams(
learning_rate = 0.25, learning_rate = 0.04,
momentum = 0.5, momentum = 0.5,
num_epochs = NUM_EPOCHS, num_epochs = NUM_EPOCHS,
do_rao_blackwell = True, do_rao_blackwell = True,
@@ -125,14 +125,20 @@ if __name__ == "__main__":
model.save() model.save()
# test the model # test the model
seed = str2vec('HA^') seed_str = 'HA^'
v_forward = seed.flatten() seed_padded = ' '*(WIN-len(seed_str)) + seed_str
v_forward = str2vec(seed_padded).flatten()
context = c_train[0] context = c_train[0]
text_predict = ''
for i in range(len(TEXT)+5): for i in range(len(TEXT)+5):
v_mat = v_forward.reshape([WIN, vocab_size()]) v_mat = v_forward.reshape([WIN, vocab_size()])
print(f"Forward {i:02d}: {vec2str(v_mat, axis=1)}") print(f"Forward {i:02d}: {vec2str(v_mat, axis=1)}")
v_predict, context = model.forward_step(v_mat, context) v_predict, context = model.forward_step(v_mat, context)
v_predict_clamp = clamp(v_predict.reshape([WIN, vocab_size()]), axis=1) v_predict_mat = v_predict.reshape([WIN, vocab_size()])
print(f"Predict {i:02d}: {vec2str(v_predict_clamp, axis=1)}") v_predict_clamp = clamp(v_predict_mat, axis=1)
v_predict_str = vec2str(v_predict_clamp, axis=1)
text_predict += v_predict_str[WIN-1]
print(f"Predict {i:02d}: {v_predict_str}")
v_forward = shift_left(v_predict_clamp.reshape([1, WIN*vocab_size()]), vocab_size()) v_forward = shift_left(v_predict_clamp.reshape([1, WIN*vocab_size()]), vocab_size())
print(seed_padded[0:WIN-1] + text_predict)