From a293fc31a0aa853ba1bfe4fdc9eccde8e94fa2ec Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 19 Dec 2025 12:25:17 +0100 Subject: [PATCH] added layertest notebook --- layer_test.ipynb | 275 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 layer_test.ipynb diff --git a/layer_test.ipynb b/layer_test.ipynb new file mode 100644 index 0000000..6c54d97 --- /dev/null +++ b/layer_test.ipynb @@ -0,0 +1,275 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d2a402ac-ec71-4cf5-b802-bd758a603ef7", + "metadata": {}, + "outputs": [], + "source": [ + "from rbm.params import EntityParams\n", + "from rbm.layer import Layer\n", + "from rbm.status import Status\n", + "from rbm.train import train\n", + "from rbm.matrix import Mat, np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "976e0d6b-34b3-4745-92df-14416e043661", + "metadata": {}, + "outputs": [], + "source": [ + "params = EntityParams()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c926b611-bb14-47b9-b870-b95cb5480fca", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'learning_rate': 0.1,\n", + " 'momentum': 0.5,\n", + " 'weight_decay': 0,\n", + " 'num_epochs': 1000,\n", + " 'mini_batch_size': 0,\n", + " 'do_rao_blackwell': False,\n", + " 'do_gibbs_sample_visible': False,\n", + " 'do_gibbs_sample_hidden': False,\n", + " 'do_batch_sample': False,\n", + " 'num_gibbs_samples': 1,\n", + " 'do_gaussian_visible': False,\n", + " 'do_gaussian_hidden': False}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1ad7ae45-6daf-4f89-a5b4-b6b790c4f76c", + "metadata": {}, + "outputs": [], + "source": [ + "params.do_rao_blackwell = True\n", + "params.num_gibbs_samples = 3" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f7ca5d0c-687a-40f9-942a-012583efe7c8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'learning_rate': 0.1,\n", + " 'momentum': 0.5,\n", + " 'weight_decay': 0,\n", + " 'num_epochs': 1000,\n", + " 'mini_batch_size': 0,\n", + " 'do_rao_blackwell': True,\n", + " 'do_gibbs_sample_visible': False,\n", + " 'do_gibbs_sample_hidden': False,\n", + " 'do_batch_sample': False,\n", + " 'num_gibbs_samples': 3,\n", + " 'do_gaussian_visible': False,\n", + " 'do_gaussian_hidden': False}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "params.__dict__" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "30aff23e-6603-426b-aeb6-000fc70e109f", + "metadata": {}, + "outputs": [], + "source": [ + "layer = Layer(\"Layer_0\", (3, 1, 0, 16), params)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "510322fa-c74d-4493-b81c-a4c9cb650078", + "metadata": {}, + "outputs": [], + "source": [ + "layer.init(0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "aa1bdd0e-a298-46c2-8bff-1f614be8fa51", + "metadata": {}, + "outputs": [], + "source": [ + "layer.load()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "dc92799d-2b53-402a-a51d-285c4f51126a", + "metadata": {}, + "outputs": [], + "source": [ + "training_batch = Mat([[0,1,1], [0,0,0], [1,1,0], [1,0,1]], dtype=np.float64)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "1d027847-7362-46b5-b75a-b9de09f10602", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-------------------------------------------\n", + "progress : 0%\n", + "err_rms : 0.24999708676779586\n", + "-------------------------------------------\n", + "progress : 10%\n", + "err_rms : 0.24995450907424\n", + "-------------------------------------------\n", + "progress : 20%\n", + "err_rms : 0.24948447203582114\n", + "-------------------------------------------\n", + "progress : 30%\n", + "err_rms : 0.24412963558981704\n", + "-------------------------------------------\n", + "progress : 40%\n", + "err_rms : 0.1949812378035757\n", + "-------------------------------------------\n", + "progress : 50%\n", + "err_rms : 0.048675091786564394\n", + "-------------------------------------------\n", + "progress : 60%\n", + "err_rms : 0.00301183842639605\n", + "-------------------------------------------\n", + "progress : 70%\n", + "err_rms : 0.0006911957660915791\n", + "-------------------------------------------\n", + "progress : 80%\n", + "err_rms : 0.000293184530139503\n", + "-------------------------------------------\n", + "progress : 90%\n", + "err_rms : 0.0001607680838909887\n", + "-------------------------------------------\n", + "progress : 100%\n", + "err_rms : 0.00010079934874358073\n", + "-------------------------------------------\n", + "progress : 100%\n", + "err_rms_total : 9.954453566455675e-05\n" + ] + } + ], + "source": [ + "train(layer.entity, training_batch, Status())" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fb4c4488-2137-440c-98b6-d07e73356a0a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P[0. 0. 0.] : [[0.01017997 0.01309764 0.01289942]]\n", + "P[0. 1. 0.] : [[0.01382953 0.99673111 0.0121298 ]]\n", + "P[1. 0. 0.] : [[0.99411057 0.03544156 0.02632994]]\n", + "P[1. 1. 0.] : [[0.99256076 0.98906099 0.00948805]]\n" + ] + } + ], + "source": [ + "# Test with test data\n", + "test_batch = Mat([[0,0,0], [0,1,0], [1,0,0], [1,1,0]], dtype=np.float64)\n", + "for pattern in test_batch:\n", + "\th = layer.entity.gibbs_v_to_h(pattern)\n", + "\tv = layer.entity.gibbs_h_to_v(h)\n", + "\tprint(f\"P{pattern} : {v}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a9502c36-894d-4b33-90f0-a5a3ea9fcc4e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0.],\n", + " [0., 1., 0.],\n", + " [1., 0., 0.],\n", + " [1., 1., 0.]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_batch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "39dcac95-a132-40f9-9dfc-cb8161e7f881", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}