Lâun des fondements de lâintelligence artificielle est le rĂ©seau de neurones, qui est composĂ© dâunitĂ©s interconnectĂ©es appelĂ©es neurones.
Un perceptron est le modĂšle le plus simple de neurone.
Chaque neurone contient :
inputs
weights
bias
f
output
Le calcul de la sortie se fait selon la formule :
output = f(ÎŁ(inputs[i] * weights[i]) + bias)
Ensuite, on applique une fonction dâarrondi spĂ©ciale pour respecter les contraintes de sortie.
Fonction | Nom dans lâentrĂ©e | Description |
---|---|---|
Identité | identity |
f(x) = x |
SigmoĂŻde | sigmoid |
f(x) = 1 / (1 + exp(-x)) |
Heaviside | heaviside |
f(x) = 0 si x < 0, sinon 1 |
Tanh | tanh |
f(x) = tanh(x) |
ReLU | relu |
f(x) = max(0, x) |
Afin de coller aux contraintes du sujet, les sorties doivent ĂȘtre :
3.00
devient 3
)0.0009
), retourner 0
Entrée | Sortie attendue |
---|---|
1.158696 | 1.16 |
2.0000 | 2 |
-1.9999 | -2 |
0.00092 | 0 |
3.10 | 3.1 |
n â nombre de tests
m â taille des vecteurs input et weight
inputs (m) â m entiers
weights (m) â m entiers
bias â entier
f â nom de la fonction dâactivation
(recommencer pour n tests)
Un entier ou réel arrondi selon les rÚgles, pour chaque test.
2
3
1 1 1
1 2 3
1
identity
2
5 6
-2 1
1
relu
7
0
import math
def Round(x):
if x == int(x) or int(x)*100 == int(x*100):
return int(x)
if (x*10) == int(x*10):
return round(x, 1)
return round(x, 2)
def perceptron(inputs, weight, bias, f, m):
o = bias
for i in range(m):
o += inputs[i] * weight[i]
if f == "sigmoid":
return Round(1 / (1 + math.exp(-o)))
if f == "tanh":
return Round(math.tanh(o))
if f == "heaviside":
return 0 if o < 0 else 1
if f == "relu":
return Round(max(0, o))
return Round(o)
if __name__ == "__main__":
n = int(input())
for _ in range(n):
m = int(input())
inputs = list(map(int, input().split()))
weights = list(map(int, input().split()))
bias = int(input())
f = input().strip().lower()
print(perceptron(inputs, weights, bias, f, m))
đ ⏠Retour Ă la liste des challenges