
Italian: 
L'ultima volta abbiamo creato la nostra NN su carta
stavolta lo implementeremo nel linguaggio di programmazione Python
costruiremo la nostra NN come una classe Python e il il nostro metodo "init" si prenderà cura di inizializzare costanti e variabili
faremo si che ognuno di questi parametri sia accessibile all'intera classe mettendo "self." davanti a ogni nome di variabile.
abbiamo 2 input, 3 hidden units e 1 output
questi sono HYPER PARAMETERS
questi sono delle costanti che influenzano la struttura e comportamento della NN
ma rimangono appunto costanti nella fase di training
Il nostro algoritmo di learning non è capace
per esempio, di decidere di aver bisogno di un'altra hidden unit
questo deve essere deciso prima di iniziare il trainig
quello che viene imparato invece sono i coefficienti
ovvero i pesi(w) sulle sinapsi (archi)
Ora ci occuperemo di passare i dati alla nostra classe, in un metodo chiamato forward
anziché passare gli input uno alla volta
useremo delle matrici e ne passeremo più alla volta

Ukrainian: 
Минулого разу ми створили нашу нейронну мережу
на папері. На цей раз ми реалізуємо її
За допомогою мови програмування Python.
Ми будемо будувати нашу мережу, як клас пітона
В нашому методі ініціалізації ми подбаємо, про важливу константу і змінні.
Ми зробимо ці значення доступними
на весь клас, помістивши самостійну точку
в кожному імені змінної. Наша мережа має два входи
три прихованих блоків і один вихід. це
приклади гіперпараметрів.
Гіперпараметри константи,
Встановлюють структуру і поведінку нашої мережі
Але не оновлюються, коли ми навчаємо мережу.
наш
алгоритм навчання не здатний наприклад
вирішити, що вона потребує іншого прихованого шару.
Це те, про що ми повинні подбати
перед тренуванням.
Що нейронні мережі дійсно вчаться на
параметри, зокрема, в масі
на синапсах. Ми подбаємо про рух
наших даних через нашу мережу і метод називається
зворотнім. Замість того, щоб пройти через входи мережі один в той час,
ми будемо використовувати матриці для передачі
через кілька входів одночасно.

English: 
Last time we set up our neural network
on paper. This time we'll implement it
the programming language Python.
We'll build our network as a Python class. In our init method we'll take care of
instantiating important constants and variables.
We'll make these values accessible
to the whole class by placing a "self."
in front each variable name. Our network has two inputs,
three hidden units, and one output. These are
examples of hyperparameters.
Hyperparameters are constants that
establish the structure and behaviour
of our network. But are not
updated as we train the network. Our
learning algorithm is not capable of
for example
deciding that it needs another hidden unit.
This is something that we must decide on
before training.
What neural networks do learn on the
parameters, specifically in the weight
on the synapses. We'll take care of moving
our data through our network and the method called
forward. Rather than pass inputs through the network one at a time
we're going to use matrices to pass
through multiple inputs at once.

Hungarian: 
Legutóbb létrehoztuk a neurális hálózatunkat 
papíron. Most meg fogjuk valósítani
Python programozási nyelven.
A hálózatot egy Python osztályként építjük fel. Az init eljárásban figyeljünk
a fontos állandók és változók létrehozására.
Ezen értékeket az osztályban hozzáférhetővé
tesszük a "self." karaktersor
minden változó neve elé illesztésével. Hálózatunknak két bejövő értéke,
három rejtett eleme (neuron), és egy kimenete van. 
Ezek a példa hyperparaméterei.
A hyperparaméterek a szerkezetet és
viselkedést meghatározó állandói
hálózatunknak. De ezek nem
módosulnak a hálózat tanítása során.
A tanítási algoritmusunk nem képes
például
eldönteni, hogy szükség van mégegy rejtett egységre.
Ez olyan valami amit el kell döntenünk
a tanítás megkezdése előtt.
Amit a neurális háló tanul a paramétereken,
leginkább a súlyozásban,
a szinapszisokon jelenik meg. Figyelnünk kell
az adatok hálózaton való mozgatására és
a 'forward' eljárásra. Jobb, ha nem egyenként adjuk át az adatokat,
használjunk inkább mátrixokat több bemeneti 
érték egyszerre történő áteresztésére.

Portuguese: 
Da última vez,
nós configuramos a nossa rede neural
em um papel.
Desta vez nós vamos implementá-la
em uma linguagem de programação chamada Python,
vamos construir nossa rede
como uma classe de Python
e nosso método “init”
vai instanciar
constantes e variáveis importantes.
Faremos esses valores acessíveis a todas as classes,
escrevendo “self.” antes do nome de cada variável.
Nossa rede tem duas entradas,
três unidades escondidas
e uma saída.
Estes são exemplos de hiper parâmetros.
Hiper parâmetros são constantes
que estabelecem a estrutura e o comportamento
da nossa rede,
mas não são atualizados
conforme nós treinamos a rede.
Nosso algoritmo de aprendizagem
não é capaz de,  por exemplo,
decidir que ele precisa
de uma outra unidade escondida.
Isto é algo que devemos decidir
antes de treina-lo.
O que as redes neurais aprendem
são os parâmetros,
especificamente o pesos sobre as sinapses.
Vamos mover nossos dados através da nossa rede
com um método chamado “forward”.
Em vez de inserir os dados de entrada
através da rede um por vez,
nós vamos usar matrizes
para fazer múltiplas inserções de uma só vez.

Hungarian: 
Ezek használata lehetővé teszi nagyobb
sebesség elérését, különösen ha olyan eszközöket
használunk, mint a MATLAB és a NumPy.
A bemeneti adatok 'X' mátrixa
3-szor 2 dimenziójú,
mert három db két dimenziós mintánk van.
A kapcsolódó kimeneti adatmátrix
az 'Y' 3-szor 1 dimenziós.
Az 'X' mátrix minden értékét, vagy elemét
meg kell szorozni a
kapcsolódó súllyal
majd össze kell adni a többi értékkel
minden egyes neuron esetében.
Ez egy bonyolult művelet, de ha vesszük a 
három kimeneti értéket -keressük őket
egy egy soros mátrixként-,
és minden egyedi súlyt elhelyezünk 
a súlyok mátrixában
előidézhetjük a megfelelő viselkedést, minek
után összeszorozható
a bemeneti adatok mátrixa a súlyok mátrixával. A
mátrixok szorzása lehetővé teszi
több bemeneti érték egyszerre átadását
újabb sorok 'X' mátrixhoz adásával. Innét kezdve
hivatkozzunk ezekre a mátrixokra, mint
'X', 'W1', és 'Z2'
ahol 'Z2' a második réteg válasza (aktivitás).

Ukrainian: 
Робити це дозволяє велика 
швидкість обчислювальних злетів, особливо при використанні інструментів
Таких як MATLAB чи NumPy.
Наш вхід йде матриця даних X, що являє собою масив
3 до 2
тому що у нас є три двовимірні
приклади. Наш відповідний висновок даних
Y являє собою вимір 3 на 1.
Кожне значення вхідного або елемента в матриці X
має бути, помножене на
потрібну вагу
і потім додаватися разом з усіма
іншими результати для кожного нейрона.
Це складна операція, але якщо
брати три виходи
Ми бачимо, що воно
має вигляд одного рядка матриці
і розмістити свої індивідуальні ваги в
матриці як брати і сестри
ми можемо створити точну поведінку, яку нам потрібно,
шляхом множення наших
матричних вхідних даних за допомогою вагової матриці. Використання магії
множення дозволяє передавати
через кілька входів  відразу
шляхом простого додавання рядків матриці X. Звідси
далі ми будемо ставитися до цих матриць
X W1 і Z2
де Z2 є активність нашого другого шару.

Portuguese: 
Isso nos permite uma velocidade computacional enorme,
especialmente quando usamos ferramentas como
MATLAB ou NumPy.
Nossa matriz de dados de entrada X
tem a dimensão de três por dois,
porque nós temos três exemplos bidimensionais.
Nosso dado de saída correspondente Y,
tem a dimensão de três por um.
Cada valor de entrada ou elemento na matriz X
precisa ser multiplicado
por um peso correspondente
e adicionado a todos os outros resultados
para cada neurônio.
Esta é uma operação complicada,
mas se tomarmos a três saídas
que estamos procurando
como uma única fileira da matriz
e colocar todos os nossos pesos individuais
em uma matriz com os pesos,
podemos criar o comportamento exato que precisamos
multiplicando os dados da nossa matriz de entradas
pela nossa matriz W.
A multiplicações das matrizes nos permite
passar múltiplas entradas de uma só vez
simplesmente adicionando fileiras à matriz X.
Daqui em diante
vamos nos referir a estas matrizes como
X, W(1) e Z(2),
onde Z(2) é a atividade
da nossa segunda camada.
Note que cada entrada em Z

Italian: 
facendo così potremmo avere degli speed up in esecuzione
specialmente se si usano tool come Matlab e NumPI
La nostra matrice degli input X è di dimensione 3x2
perché abbiamo 3 esempi a 2 dimensioni
la corrispondente matrice degli output Y ha dimensioni 3x1
Ogni input o elemento in X deve essere moltiplicato
per il suo corrispondente coefficiente o peso(w) e sommato ai risultati precedenti per ogni neurone
questa operazione è complicata
ma se osservate i tre  output
come una singola riga di matrice
posizionado ogni w in una matrice di coefficenti
possiamo avere lo stesso risultato
moltiplicando la matrice X degli input con la matrice dei coefficienti
L'uso del prodotto di matrice
ci permette di passare tutti gli input in una volta
semplicemente aggiungendo righe alla matrice X
D'ora in poi ci riferiremo a X, la matrice degli inputs
W1 e Z2, la matrice delle attività delle sinapsi del secondo layer
Nota che ogni riga di Z2

English: 
Doing this allows for big computational
speed ups, especially when using tools
like MATLAB or NumPy.
Our input data matrix X is a dimension
3 by 2
because we have three two-dimensional
examples. Our corresponding output data
Y is a dimension 3 by 1.
Each input value or element in matrix X
needs to be multiplied by a
corresponding weight
and then added together with all the
other results for each neuron.
This is a complicated operation, but if
we take the three outputs we're looking for
as a single row of the matrix
and place all our individual weights into a
matrix of weights
we can create the exact behavior we need
by multiplying our
input data matrix by our weight matrix. Using matrix
multiplication allows us to pass
multiple inputs through at once
by simply adding rows to the matrix X. From here
on out will refer to these matrices
X, W1, and Z2
where Z2 is the activity of our second layer.

Italian: 
è una somma pesata di input
una somma  per neurone
Z2 è 3x3
una riga per esempio
e una colonna per ogni neurone
Abbiamo la nostra prima formula ufficiale
Z2 = XW1
la notazione matriciale è utile in questo caso
perché comprende tutto il processo grafico in una linea
Adesso che abbiamo l'attività del secondo layer Z2
dobbiamo applicare la funzione di attivazione
la funzione verrà applicata indipendentemente ad ogni valore della matrice Z2
usando un metodo Python chiamato Sigmoid come la funzione che vogliamo applicare
Usare NumPi è molto utile in questo caso
perchè possiamo passare uno scalare, un vettore o una matrice
NumPI mapperà la funzione su ogni elemento
e ritornerà un elemento della stessa dimensione dell'input
Abbiamo la seconda formula per la FORWARD PROPAGATION
usando una f come funzione di attivazione possiamo scrivere che a2
ovvero l'attività del secondo layer

Ukrainian: 
Помічено, що кожен запис в Z є деяким вводимим
Z являє собою розмір три на три: один рядок для кожного прикладу
і один стовпець для кожного прихованого блоку. Тепер у нас є наш перший офіційний
Формула: z2 = XW1.
Чарівні нотатки тут є добрими, бо дозволяють нам висловити
Основний комплекс процесів
в одному рядку. Тепер, коли ми бачимо, що в діяльність нашого другого шару, z2,
ми повинні застосувати
функцію. Яку Ми будемо самостійно застосовувати
функцію кожному нейрону
вхід в основному Престолі за допомогою методу пітона
для цього званого сигналу
тому що ми використовуємо сигмовидної як нашу
функцію активації.
Вона дуже добре тут підходить
тому що ми можемо пройти в векторі масштабування
або велике число та застосовувати
функцію активації
елементів що лежать і повертають результат і
такі ж розміриїї як це було дано.
...

Hungarian: 
Fontos, hogy 'Z2' minden eleme a súlyozott bemenetek neurononkénti összege.
'Z' 3x3-as méretű: egy sor minden mintához
és egy oszlop minden rejtett egységhez. Már ismerjük is az első tuti
képletünket: Z2 = X * W1.
A mátrix jelölés valóban kellemes itt,
mert egyszerűen kifejezhetővé teszi az
összetett háttérfolyamatot
egyetlen sorban. Most tehát ismerjük a
válaszait a második rétegünknek: 'Z2'
amire alkalmaznunk szükséges az aktivációs
függvényt. Külön-külön hajtjuk végre
a függvényt minden
tételre a 'Z' mátrixban, a 'szigmoid' nevű
Python eljárás felhasználásával,
mivel a 'szigmoid'-ot használjuk aktivációs 
függvényként. A NumPy modul használata
nagyon klassz itt
mert értékeinket átadhatjuk számként, vektorként
vagy mátrixként. A NumPy úgy alkalmazza
az aktivációs fügvényt,
hogy a bemeneti elemmel megegyező dimenzióban 
adja vissza az eredményt.
Így mi rendelkezünk a 'forward propagation' második képletével
Használuk 'f'-et az aktivációs függvény elnevezésére.
Felírhatjuk, hogy 'a2' (a második réteg válasza)
a2 = f(Z2)

Portuguese: 
é uma soma das entradas
que foram pesadas para cada neurônio.
Z é do tamanho de três por três,
uma fileira para cada exemplo
e uma coluna para cada unidade escondida.
Agora temos o nossa primeira fórmula oficial
Z(2) é igual a X vezes W(1).
A notação matricial é muito boa
porque nos permite expressar este processo complexo
em uma única linha.
Agora que temos as atividades da nossa segunda camada, Z2,
precisamos aplicar a função de activação.
Nós vamos aplicar a função, independentemente,
a cada entrada na matriz Z
usando um método de Python chamado sigmóide,
porque estamos usando um sigmóide 
como função de ativação.
É muito bom usar o numPy para isto
porque podemos passar em um vetor escalar ou matriz.
NumPy vai aplicar a função de ativação
elemento a elemento
e retornar um resultado
da mesma dimensão que foi dado.
Agora temos a nossa segunda fórmula 
para a propagação “forward”.
Usando uma aplicação
para denotar a função de ativação,
podemos escrever que A(2)
nossa segunda camada de actividade
é igual a f de Z(2).

English: 
Notice that each entry in Z is a sum of weighted inputs to each neuron.
Z is a size of three by three: one row for each example
and one column for each hidden unit. We now have our first official
formula: Z2 = X * W1.
Matrix notation is really nice here
because it allows us to express the
complex underlying process
in a single line. Now that we have the
activities of our second layer, Z2,
we need to apply the activation
function. We'll independently apply the
function to each
entry in matrix Z using a Python method
for this called sigmoid
because we using a sigmoid as our
activation function. Using NumPy is
really nice here
because we can pass in a scalar, vector
or matrix. NumPy will apply the
activation function
element-wise and returns a result and the
same dimensions as it was given.
We now have our second formula for forward propagation
Using f to denote our activation function,
We can write that a2 (our second layer activity)
is equal to f(Z2).

Portuguese: 
A(2) vai ter uma matriz do mesmo tamanho que Z(2),
neste caso, três por três.
Para terminar a propagação “forward”
precisamos propagar A(2)
por todo o caminho 
até a nossa saída Y chapéu.
Já fizemos o trabalho pesado
em nossa camada anterior.
Então tudo o que temos que fazer agora
é multiplicar A(2)
pela nossa segunda camada de pessos W(2)
e aplicar mais uma função de ativação.
W(2) é de tamanho de três por um,
um peso para cada sinapse.
Multiplicando A(2) por 3 por 3
e W(2) a 3 por 1
resulta em uma matriz 3 por 1
Z(3)
A atividade da terceira camada.
Z(3) tem 3 atividades de valores,
uma para cada exemplo.
Por último mas não menos importante,
vamos aplicar a nossa função de ativação para Z3
produzindo nossa estimativa oficial do teste
de pontuação Y chapéu.
Precisamos implementar nossas fórmulas de propagação “forward” em Python.
Primeiro vamos inicializar os coeficientes da matriz W
através do método "init”.
Como valores iniciais
vamos usar números aleatórios
Vamos implementar a propagação “forward”,
em seguida o método “forward”

Italian: 
è uguale a f(Z2)
a2 avrà le stesse dimensioni di Z2
in questo caso 3x3
per finire la forward propagation
dobbiamo ripropagare a2 fino a y hat
Abbiamo già fatto le operazioni pesanti nel layer precedente
tutto quello che c'è da fare adesso
è moltiplicare a2 per la matrice dei coefficienti W2 e applicare un'ultima volta la funzione di attivazione
W2 ha dimensioni 3x1, un coefficiente per ogni sinapsi
moltiplicando a2 una matrice 3x3 con W2 la cui dimensione è 3x1
otteniamo una matrice 3x1, Z3
l'attività del 3° layer
Z3 ha tre valori
uno per ogni esempio
alla fine applicheremo la funzione di attivazione a Z3
calcolando la nostra prima stima ufficiale dello score del test: y hat.
Dobbiamo implementare le formule della forward propagation in Python
Prima inizializzeremo la matrice dei coefficienti W nel metodo "init".
per i valori dei coefficenti iniziali, useremo numeri casuali
implementeremo la forward propagation in un metodo forward

Hungarian: 
'a2' ugyanolyan méretű mátrix, mint 'Z2'.
Esetünkben: 3x3
A 'forward propagation' (előre terjedés) befejezéséhez
előre kell adnunk 'a2'-t a kimeneti "kalapos" 'y' létrehozásához.
Már az előző rétegben megcsináltuk a munka nehezét
így mindaz amit tennünk kell az 'a2' szorzása
a második réteghez adott súlyokkal 'W2'
és egy másik aktivációs függvény alkalmazása.
'W2' mérete 3x1
egy súly minden szinapszishoz
multiplying a2 (a 3x3)
'a2' szorzása egy 3x3-as
a 'W2' egy 3x1-es
az eredmény egy 3x1-es mátrix: 'Z3'
Az harmadik réteg válasza (aktivitása).
'Z3' három válasz értékkel rendelkezik,
egy-egy minden mintához.
végül, de nem utolsó sorban alkalmaznunk kell
az aktivációs függvényünket a 'z3'-ra
megadva a hivatalos becslésünket a teszt találatra (kalapos y)
Meg kell valósítanunk a 'forward 
propagation' képletet Python-ban
Elsőként inícializálni kell a 
súlymátrixot az 'init' metódusban.
Kezdő értéknek random számot használunk.
A 'forward propagation'-t implementálása 
során elkészítjük a 'forward' metódust

English: 
a2 will be a matrix the same size as Z2.
in this case 3x3
To finish forward propagation
we need to propagate a2 all the way to our output y-hat.
We've already done the heavy lifting in our previous layer
So all we have to do now is to multiply a2
by our second layer weights W2
and apply one more activation function.
W2 is of size 3x1
one weight for each synapse
multiplying a2 (a 3x3)
by W2, a 3x1
results in a 3x1 matrix Z3
(the activity of our third layer).
Z3 has 3 activity values,
one for each example.
Last but not least we'll apply our activation function to Z3
yeilding our official estimate of test scores:
ŷ
We need to implement our forward propagation formulas in Python.
First we'll initialize our weight matrices within our __init__ method.
For starting values, we'll use random numbers.
We'll implement forward propagation in our Forward method

Ukrainian: 
-

Hungarian: 
a NumPy beépített, mátrix szorzásra használt
'dot' metódusának felhasználásával
és a saját 'sigmoid' metódust.
Ekkor rendelkezésedre áll egy Python
osztály a teszt eredmények becslésére
megadva, hány órát alszol és hány órát pihensz.
Beadhatjuk a saját adatainkat és valós kimenetet kapunk.
Megjegyezheted, hogy a becsléseink nagyon szörnyűek...
Ez azért van, mert még nem tanítottuk a hálónkat.
Ez az amit a következő alkalommal csinálni fogunk.

Portuguese: 
usando a função .method embutida no numPy
para a multiplicação de matrizes
e o nosso próprio método sigmóide.
E aí está, uma classe de Python
capaz de estimar sua pontuação do teste
dado quantas horas você dorme
e quantas horas você estuda.
Podemos passar nossos próprios dados de entrada
e obter resultados de reais.
Agora, você deve notar
que nossas estimativas são bem ruins.
Isso acontece é porque 
 nós ainda não treinamos nossa rede
e é isso que vamos fazer da a seguir.

Italian: 
usando il prodotto "dot" per matrici di NumPi e il nostro metodo Sigmoid
ed eccolo qua!
Una classe Python capace di stimare gli score di un test
basato su quante ore hai dormito e quante ore hai studiato
possiamo passare i dati
e ottenere risultati reali
notate che le stime sono abbastanza terribili...
questo accade perché non abbiamo ancora effettivamente imparato nulla (training)
questo è quello che faremo la prossima volta.

English: 
using numpy built-in dot method for matrix multiplication and our own sigmoid method.
And there you have it.
A Python class
capable of estimating your test score
given how many hours you sleep and how
many hours you study.
We can pass in our own input data and get real output,
now you may be noticing that our estimates are quite terrible.
That's because we
have not yet trained our network
and that's what we're going to work on next time.
