Le langage de programmation PASCAL a été inventé dans les années 1970 - rigoureux, hautement structuré, délibérément pédagogique … à l’image du maître.

Ci-dessous un exemple de code - généré automatiquement par l’IA générative ChatGPT - pour apprendre un réseau de neurones avec rétropropagation

program neural_network;

const

N = 100; // nombre d'observations

D = 2; // nombre de variables d'entrée

H = 5; // nombre de neurones dans la couche cachée

C = 2; // nombre de classes de sortie

type

TData = array[1..N, 1..D] of real; // données d'entrée

TWeights1 = array[1..D, 1..H] of real; // poids de la couche cachée

TWeights2 = array[1..H, 1..C] of real; // poids de la couche de sortie

TActivations = array[1..N, 1..H+1] of real; // valeurs d'activation

var

data: TData;

y: array[1..N] of integer; // variables de sortie (0 ou 1)

weights1: TWeights1; // poids de la couche cachée

weights2: TWeights2; // poids de la couche de sortie

activations: TActivations; // valeurs d'activation

alpha: real; // taux d'apprentissage

num_iter: integer; // nombre d'itérations

function sigmoid(z: real): real;

begin

sigmoid := 1 / (1 + exp(-z));

end;

function softmax(x: array of real): array of real;

var

i: integer;

sum: real;

begin

SetLength(softmax, Length(x));

sum := 0;

for i := 0 to High(x) do

begin

softmax[i] := exp(x[i]);

sum := sum + softmax[i];

end;

for i := 0 to High(x) do

softmax[i] := softmax[i] / sum;

end;

procedure forward_pass(data: TData; var activations: TActivations; weights1: TWeights1; weights2: TWeights2);

var

i, j, k: integer;

z: real;

begin

for i := 1 to N do

begin

for j := 1 to H do

begin

z := 0;

for k := 1 to D do

z := z + data[i,k] * weights1[k,j];

activations[i,j] := sigmoid(z);

end;

activations[i,H+1] := 1; // biais

end;

end;

procedure backward_pass(data: TData; y: array of integer; activations: TActivations; var weights1: TWeights1; var weights2: TWeights2; alpha: real);

var

i, j, k: integer;

error, delta: real;

delta1, delta2: array[1..H+1] of real;

grad1: TWeights1;

grad2: TWeights2;

begin

// calcul de l'erreur de la couche de sortie

for i := 1 to N do

begin

for j := 1 to C do

begin

error := y[i] - softmax([activations

Précédent
Précédent

Code en langage PASCAL - reg. logistique

Suivant
Suivant

La pascaline en modèle 3D