|
|
|
|
|
""" |
|
|
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) |
|
|
|
|
|
|
|
|
print("1. Creating algebraic neural network...") |
|
|
network = create_sample_network() |
|
|
print(" โ Network created with polynomial, group theory, and geometric algebra layers") |
|
|
|
|
|
|
|
|
print("\n2. Generating sample data...") |
|
|
np.random.seed(42) |
|
|
sample_data = np.random.randn(3, 4) |
|
|
print(f" โ Generated {sample_data.shape[0]} samples with {sample_data.shape[1]} features each") |
|
|
|
|
|
|
|
|
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}]") |
|
|
|
|
|
|
|
|
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}]") |
|
|
|
|
|
|
|
|
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.") |
|
|
|
|
|
|
|
|
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() |