<?php 
include_once("../../CLASSES/Headers.php"); 
use NameSpaceNumpyLight\NumpyLight; 
use NameSpaceRandomGenerator\RandomGenerator; 
use NameSpaceActivationRelu\Activation_Relu; 
 
// Manually set X and y 
$X = array( 
    array(0.1, 0.2), 
    array(0.3, 0.4), 
    array(0.5, 0.6), 
    array(0.7, 0.8), 
    array(0.9, 1.0), 
    array(-0.1, -0.2), 
    array(-0.3, -0.4), 
    array(-0.5, -0.6), 
    array(-0.7, -0.8), 
    array(-0.9, -1.0) 
); 
$y = array(0, 1, 2, 0, 1, 2, 0, 1, 2, 0); 
 
$dense1 = new Layer_Dense(2,3); 
$activation1 = new Activation_ReLU(); 
$dense2 = new Layer_Dense(3,3); 
 
// Manually setting weights and biases 
$dense1->weights = array( 
    array(0.1, -0.2, 0.3), 
    array(0.4, 0.5, -0.6) 
); 
$dense1->biases = array(array(0.1, -0.2, 0.3)); 
 
$dense2->weights = array( 
    array(-0.1, 0.2, -0.3), 
    array(0.4, -0.5, 0.6), 
    array(-0.7, 0.8, -0.9) 
); 
$dense2->biases = array(array(-0.1, 0.2, -0.3)); 
 
$loss_activation = new Activation_Softmax_Loss_CategoricalCrossentropy(); 
$dense1->forward($X); 
$activation1->forward($dense1->output); 
$dense2->forward($activation1->output); 
$loss = $loss_activation->forward($dense2->output,$y); 
$acc = NumpyLight::accuracy($loss_activation->output, $y); 
 
NumpyLight::displayMatrix($loss_activation->output); 
 
echo "\nloss: $loss\n"; 
echo "\nacc: $acc\n"; 
 
$loss_activation->backward($loss_activation->output, $y); 
$dense2->backward($loss_activation->dinputs); 
$activation1->backward($dense2->dinputs); 
$dense1->backward($activation1->dinputs); 
// Print gradients 
NumpyLight::displayMatrix($dense1->dweights); 
echo "\n\n"; 
NumpyLight::displayMatrix($dense1->dbiases); 
echo "\n"; 
NumpyLight::displayMatrix($dense2->dweights); 
echo "\n"; 
NumpyLight::displayMatrix($dense2->dbiases); 
?> 
 
 |