| /** | |
| * main.js | |
| * Minimalistic Three.js scene with JSON-based initialization | |
| */ | |
| // Initialize when DOM is loaded | |
| document.addEventListener('DOMContentLoaded', () => { | |
| (async () => { | |
| window.sceneManager = new SceneManager(); | |
| const figureOptions = { | |
| layerSpacing: 10, | |
| neuronSpacing: 2, | |
| neuronRadius: 0.5, | |
| inputColor: '#ff6b6b', | |
| hiddenColor: '#ffd93d', | |
| outputColor: '#4ecdc4', | |
| weightThreshold: 0.1, | |
| lineWidth: 0.1, | |
| opacity: 0.1 | |
| }; | |
| // preprocess MNIST data | |
| const { trainingData, testData } = await preprocessMNISTData(); | |
| console.log('✓ MNIST data preprocessed'); | |
| //model: | |
| //create model network: | |
| const network = new Network([784, 16, 16, 10]); // example architecture | |
| // Train the network | |
| //network.SGD(trainingData, 1, 10, 0.5, testData); | |
| //testing: | |
| // const network = new Network([784, 1, 1, 1]); | |
| // Visualizer instance (non-static class) | |
| const visualizer = new NetworkToDisplay(network, sceneManager, figureOptions); | |
| // Build spheres and initial connections directly in the scene | |
| visualizer.initialGeneration(); | |
| const visualizer_function = () => { | |
| visualizer.updateConnections(); | |
| console.log('✓ Visualization updated'); | |
| }; | |
| // Initialize epoch counter | |
| let epochCount = 0; | |
| //attach epoch training to button | |
| const trainEpochButton = document.getElementById('epochButton'); | |
| if (trainEpochButton) { | |
| trainEpochButton.addEventListener('click', () => { | |
| network.SGD_single_epoch(trainingData, 100, 0.5, testData, visualizer_function); | |
| // Increment and update epoch counter display | |
| epochCount++; | |
| const epochCounterDiv = document.getElementById('epochCounter'); | |
| if (epochCounterDiv) { | |
| epochCounterDiv.textContent = `Epoch: ${epochCount}`; | |
| } | |
| }); | |
| } | |
| })(); | |
| // sceneManager.loadFromJSON({ | |
| // spheres: [ | |
| // { name: 'A', radius: 1.5, color: '#ff0000', position: { x: -5, y: 0, z: 0 } }, | |
| // { name: 'B', radius: 1.5, color: '#00ff00', position: { x: 5, y: 0, z: 0 } } | |
| // ], | |
| // connections: [ | |
| // { id: 'AB', from: 'A', to: 'B', color: '#ffffff', lineWidth: 2 } | |
| // ] | |
| // }); | |
| // Example: Uncomment to add initial demo spheres | |
| // sceneManager.addMultipleSpheres(5); | |
| // sceneManager.connectSphereChain(['Sphere_0', 'Sphere_1', 'Sphere_2', 'Sphere_3', 'Sphere_4']); | |
| }); | |