← Python · tijolo 02
espremer para 0 e 1
O tijolo 1 terminava com um buraco: a continha do neurônio deu 0.7, mas
podia ter dado 15 ou -3. Não tem limite. A sigmoid é a peça que
espreme qualquer número para dentro da faixa 0 a 1.
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
sigmoid(-10) -> 0.0000
sigmoid(-2) -> 0.1192
sigmoid(-0.7) -> 0.3318
sigmoid(0) -> 0.5000
sigmoid(0.7) -> 0.6682
sigmoid(2) -> 0.8808
sigmoid(10) -> 1.0000
Três coisas para reparar nessa tabela:
sigmoid(-0.7) e sigmoid(0.7) somam 1 (0.3318 + 0.6682).bruto = neuronio([1, 0], [0.5, 0.8], 0.2)
print("Neurônio:", bruto)
print("Sigmoid do neurônio:", sigmoid(bruto))
Neurônio: 0.7
Sigmoid do neurônio: 0.6681877721681662
O neurônio fez a conta e deu 0.7; a sigmoid disse "este neurônio está
67% aceso". 0.6681877... é o mesmo 0.6682 da tabela, só que sem
arredondar — round(numero, 4) corta.
É esse par que se repete um monte de vezes para formar a rede: o neurônio faz a conta, a sigmoid decide o quanto acende.
~/Área de trabalho/estudo_ia.py — o arquivo de estudo limpo, com o
tijolo 1 e o tijolo 2 um embaixo do outro e os testes no fim.
Livraria do Neon · estante redes-neurais · o texto e o código são do João; o que entra de novo aqui é a arrumação para a web