1. Go to this page and download the library: Download rubix/cifar-10 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rubix / cifar-10 example snippets
use function Rubix\ML\enumerate;
$files = glob('train/*.png');
define('CHUNK_SIZE', 10000);
use Rubix\ML\Transformers\PersistentTransformer;
use Rubix\ML\Transformers\Pipeline;
use Rubix\ML\Transformers\ImageResizer;
use Rubix\ML\Transformers\ImageVectorizer;
use Rubix\ML\Transformers\FloatTypeConverter;
use Rubix\ML\Transformers\ZScaleStandardizer;
use Rubix\ML\Persisters\Filesystem;
$transformer = new PersistentTransformer(
base: new Pipeline([
new ImageResizer(32, 32),
new ImageVectorizer(),
new FloatTypeConverter(),
new ZScaleStandardizer(),
]),
persister: new Filesystem('transformer.rbx', true)
);
use Rubix\ML\Transformers\Pipeline;
use Rubix\ML\Transformers\ImageFlipper;
use Rubix\ML\Transformers\ColorJitter;
$augmenter = new Pipeline([
new ImageFlipper(),
new ColorJitter(
brightness: 0.1,
contrast: 0.1,
saturation: 0.1
),
]);
use Rubix\ML\PersistentModel;
use Rubix\ML\Classifiers\MultilayerPerceptron;
use Rubix\ML\NeuralNet\Layers\Dense;
use Rubix\ML\NeuralNet\Layers\Activation;
use Rubix\ML\NeuralNet\Layers\BatchNorm;
use Rubix\ML\NeuralNet\ActivationFunctions\SiLU;
use Rubix\ML\NeuralNet\Optimizers\Adam;
use Rubix\ML\NeuralNet\Optimizers\Schedulers\Constant;
use Rubix\ML\Persisters\Filesystem;
use Rubix\ML\Loggers\Screen;
$estimator = new PersistentModel(
base: new MultilayerPerceptron(
hiddenLayers: [
new Dense(512),
new Activation(new SiLU()),
new Dense(512, bias: false),
new BatchNorm(),
new Activation(new SiLU()),
new Dense(512),
new Activation(new SiLU()),
new Dense(256, bias: false),
new BatchNorm(),
new Activation(new SiLU()),
new Dense(128),
new Activation(new SiLU()),
new Dense(10),
],
batchSize: 32,
gradientAccumulationSteps: 4,
optimizer: new Adam(new Constant(0.0001)),
maxGradientNorm: 1.0,
evalInterval: 1,
window: 5,
),
persister: new Filesystem('model.rbx', true)
);
$logger = new Screen();
$estimator->setLogger($logger);
use Rubix\ML\Datasets\Labeled;
$samples = $labels = [];
foreach (glob('test/*.png') as $file) {
$samples[] = [imagecreatefrompng($file)];
$labels[] = preg_replace('/[0-9]+_(.*).png/', '$1', basename($file));
}
$testing = new Labeled($samples, $labels);
use Rubix\ML\Datasets\Labeled;
$dataset = new Labeled($samples, $labels);
use Rubix\ML\Transformers\PersistentTransformer;
use Rubix\ML\PersistentModel;
use Rubix\ML\Persisters\Filesystem;
$transformer = PersistentTransformer::load(new Filesystem('transformer.rbx'));
$estimator = PersistentModel::load(new Filesystem('model.rbx'));
$estimator->cleanup();
use Rubix\ML\CrossValidation\Reports\AggregateReport;
use Rubix\ML\CrossValidation\Reports\ConfusionMatrix;
use Rubix\ML\CrossValidation\Reports\MulticlassBreakdown;
$report = new AggregateReport([
new MulticlassBreakdown(),
new ConfusionMatrix(),
]);
$results = $report->generate($predictions, $dataset->labels());