Nous passerons en revue l'idée de produit interne par calcul de table et de covecteur par fonction, et examinerons l'opération logique par Perceptron de ce point de vue. Joindre le calcul par NumPy.
Ceci est une série d'articles.
Cet article a été rédigé dans le but d'aider les livres suivants:
Je republierai l'exemple précédent.
Nom du produit | Prix unitaire(Société A) | Quantité | total |
---|---|---|---|
crayon | 30 | 12 | 360 |
la gomme | 50 | 10 | 500 |
Remarque | 150 | 5 | 750 |
Somme finale | 1,610 |
Si vous réécrivez le prix unitaire et la quantité sous forme de vecteur, il s'agit du calcul du produit intérieur.
\overbrace{\left(\begin{matrix}30 \\ 50 \\150\end{matrix}\right)}^{Prix unitaire}\cdot
\overbrace{\left(\begin{matrix}12 \\ 10 \\ 5\end{matrix}\right)}^{Quantité}
=\overbrace{30×12}^{total}+\overbrace{50×10}^{total}+\overbrace{150×5}^{total}
=\overbrace{1610}^{Somme finale}
NumPy
Voici le calcul dans NumPy.
>>> from numpy import *
>>> dot([30,50,150],[12,10,5])
1610
Ne demandez pas le total à la fois, mais trouvez le sous-total par le produit Adamal.
>>> array([30,50,150])*[12,10,5]
array([360, 500, 750])
Le total des sous-totaux donne le total.
>>> sum(array([30,50,150])*[12,10,5])
1610
En attribuant le prix unitaire de l'entreprise A à un vecteur horizontal (covecteur) appelé «A», prendre le produit interne peut être assimilé à l'évaluation de la fonction.
>>> A=[30,50,150]
>>> dot(A,[12,10,5])
1610
A
\left(\begin{matrix}12 \\ 10 \\ 5\end{matrix}\right)
=\left(\begin{matrix}30 & 50 & 150\end{matrix}\right)
\left(\begin{matrix}12 \\ 10 \\ 5\end{matrix}\right)
=1610
Prenons un cas où le nombre est modifié et comparé.
Nom du produit | Prix unitaire | Quantité ① | Quantité ② | Sous-total ① | Sous-total ② |
---|---|---|---|---|---|
crayon | 30 | 12 | 9 | 360 | 270 |
la gomme | 50 | 10 | 13 | 500 | 650 |
Remarque | 150 | 5 | 4 | 750 | 600 |
Somme finale | 1,610 | 1,520 |
Dans le calcul utilisant covector, vous pouvez calculer en une fois en passant une matrice dans laquelle le vecteur de l'argument est disposé côte à côte.
>>> dot(A,array([[12,10,5],[9,13,4]]).T)
array([1610, 1520])
\begin{align}
A\left(\begin{array}{c|c}12 & 9 \\ 10 & 13 \\ 5 & 4\end{array}\right)
&=\left(\begin{matrix}
A\left(\begin{matrix}12 \\ 10 \\ 5\end{matrix}\right) &
A\left(\begin{matrix} 9 \\ 13 \\ 4\end{matrix}\right)
\end{matrix}\right) \\
&=\left(\begin{matrix}1610 & 1520\end{matrix}\right)
\end{align}
Ceci est la critique.
AND
Considérez ʻAND` comme une opération logique. Affiche la table des produits.
A | B | A&B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
C'est une sorte de calcul qui ne peut être exprimé par covector. Par conséquent, un post-traitement est ajouté.
L'idée est d'ajouter A et B, de savoir s'il est supérieur à 1, et s'il est vrai, il vaut 1.
A | B | A+B | >1 | A&B |
---|---|---|---|---|
0 | 0 | 0 | F | 0 |
0 | 1 | 1 | F | 0 |
1 | 0 | 1 | F | 0 |
1 | 1 | 2 | T | 1 |
La partie où A et B sont ajoutés est représentée par le covecteur «And0», la comparaison de magnitude est ajoutée et zéro est ajouté pour la quantification.
>>> And0=[1,1]
>>> (dot(And0,array([[0,0],[0,1],[1,0],[1,1]]).T)>1)+0
array([0, 0, 0, 1])
Ce covecteur $ (1 \ 1) $ est appelé ** poids ** $ w $, et > 1
$ 1 $ est appelé seuil $ θ $.
Le calcul en poids et en seuil est appelé Perceptron. Définit une fonction de Perceptron.
>>> def perceptron(w, th, x):
... return (dot(w, x) > th) + 0
...
Utilisez ceci pour calculer «ET».
>>> perceptron(And0, 1, [0,1])
0
Comme les covecteurs, il accepte plusieurs arguments.
>>> perceptron(And0, 1, array([[0,0],[0,1],[1,0],[1,1]]).T)
array([0, 0, 0, 1])