File size: 3,081 Bytes
461349d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
"""
Quick demonstration of Algebraic Neural Networks

Run this script to see the basic functionality of algebraic neural networks.
"""

import numpy as np
from algebraic_neural_network import create_sample_network, create_uncomputable_network

def main():
    print("๐Ÿงฎ Algebraic Neural Network Quick Demo")
    print("="*50)
    
    # Create a sample network
    print("1. Creating algebraic neural network...")
    network = create_sample_network()
    print("   โœ“ Network created with polynomial, group theory, and geometric algebra layers")
    
    # Generate sample data
    print("\n2. Generating sample data...")
    np.random.seed(42)  # For reproducible results
    sample_data = np.random.randn(3, 4)
    print(f"   โœ“ Generated {sample_data.shape[0]} samples with {sample_data.shape[1]} features each")
    
    # Make predictions
    print("\n3. Processing data through algebraic transformations...")
    predictions = network.predict(sample_data)
    print(f"   โœ“ Output shape: {predictions.shape}")
    print(f"   โœ“ Output range: [{np.min(predictions):.3f}, {np.max(predictions):.3f}]")
    
    # Show the data
    print("\n4. Results:")
    print("   Input data:")
    for i, sample in enumerate(sample_data):
        print(f"     Sample {i+1}: [{sample[0]:6.3f}, {sample[1]:6.3f}, {sample[2]:6.3f}, {sample[3]:6.3f}]")
    
    print("\n   Algebraic neural network output:")
    for i, output in enumerate(predictions):
        print(f"     Output {i+1}: [{output[0]:8.3f}, {output[1]:8.3f}]")
    
    # Demonstrate determinism
    print("\n5. Demonstrating deterministic behavior...")
    predictions2 = network.predict(sample_data)
    difference = np.linalg.norm(predictions - predictions2)
    print(f"   โœ“ Difference between runs: {difference:.10f} (should be 0)")
    
    print("\n" + "="*50)
    print("โœ… Demo completed! Algebraic neural networks work without training.")
    
    # Bonus: Quick uncomputable network demo
    print("\n๐Ÿ”ฌ Bonus: Uncomputable Neural Network Quick Demo")
    print("="*50)
    
    print("1. Creating uncomputable neural network...")
    uncomputable_network = create_uncomputable_network()
    print("   โœ“ Network created with halting oracle, Kolmogorov complexity, Busy Beaver, and non-recursive layers")
    
    print("\n2. Processing same data through uncomputable transformations...")
    uncomputable_predictions = uncomputable_network.predict(sample_data)
    print(f"   โœ“ Output shape: {uncomputable_predictions.shape}")
    print(f"   โœ“ Output range: [{np.min(uncomputable_predictions):.3f}, {np.max(uncomputable_predictions):.3f}]")
    
    print("\n   Uncomputable neural network output:")
    for i, output in enumerate(uncomputable_predictions):
        print(f"     Output {i+1}: [{output[0]:6.3f}, {output[1]:6.3f}]")
    
    print("\n" + "="*50)
    print("๐ŸŽฏ Both networks operate without training but explore different mathematical domains!")
    print("๐Ÿ“š See theory/ and examples/ directories for more details.")

if __name__ == "__main__":
    main()