当前位置:网站首页>Reconnaissance et détection d'images - Notes
Reconnaissance et détection d'images - Notes
2022-07-03 07:27:00 【Des cerfs et de l'herbe.】
Reconnaissance et détection d'images
1.Variable
In Torch Dans Variable C'est un endroit pour stocker des valeurs qui changent(Panier). Les valeurs changent constamment. Valeur à l'intérieur,C'estTensorTenseur(Oeufs).
import torch
from torch.autograd import Variable # torch Moyenne Variable Module
# Préparer les œufs
tensor = torch.FloatTensor([[1,2],[3,4]])
# Mets les œufs dans le panier, requires_gradEst de participer ou non à la Rétropropagation des erreurs, Voulez - vous calculer le gradient
variable = Variable(tensor, requires_grad=True)
print("Tensor:\n" + str(tensor))
print("\n")
print("Variable:\n" + str(variable))
2. Variable Calcul, Gradient
t_out = torch.mean(tensor*tensor) # x^2
v_out = torch.mean(variable*variable) # x^2
print(t_out)
print(v_out)
Jusqu'à présent, On ne voit pas la différence. , Mais rappelez - vous toujours , Variable Au moment du calcul, Il construit un énorme système derrière le rideau de fond. , Appelé diagramme de calcul , computational graph. À quoi sert cette image? ? Il s'est avéré que toutes les étapes de calcul (Noeud) Tout est connecté. , La dernière fois que l'erreur est inversée, Une fois pour toutes variable Plage de modification à l'intérieur (Gradient) Tout est calculé, Et tensor Ce n'est pas possible. .
v_out = torch.mean(variable*variable)# Est une étape de calcul ajoutée au diagramme de calcul , Il a été crédité d'avoir calculé le transfert inverse des erreurs , Prenons un exemple. :
v_out.backward() # Simulation v_out Erreur de transfert inverse
# v_out = torch.mean(variable*variable) C'est la définition
# v_out = 1/4 * sum(variable*variable) C'est ce qui se trouve dans le graphique de calcul v_out Formule mathématique réelle pour
# Pour v_out Le gradient de:
# d(v_out)/d(variable) = 1/4*2*variable = variable/2
print("variable.grad:\n")
print(variable.grad) # Initial Variable Le gradient de
3. Accès Variable Les données à l'intérieur
Directprint(variable)Seulement la sortie Variable Données sous forme de, Ça ne marche pas souvent. ( Comme essayer d'utiliser plt Dessin), Donc nous devons changer , Et le transformer en tensor Forme
print(variable) # Variable Forme
print(variable.data) # tensor Forme
print(variable.data.numpy()) # numpy Forme
4. Fonction d'excitation (Activation)
Fonction d'excitation commune:Relu, Sigmoid, Tanh, Softplus
import torch
import torch.nn.functional as F # Les fonctions d'excitation sont là.
from torch.autograd import Variable
x = torch.linspace(-5, 5, 200) # x data (tensor), shape=(100, 1)
x = Variable(x)
print(x.shape)
import matplotlib.pyplot as plt
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')
plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')
plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')
plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')
plt.show()
5. Regression
import torch
import torch.nn.functional as F # Les fonctions d'excitation sont là.
import matplotlib.pyplot as plt
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) # x data (tensor), shape=(100, 1)
y = x.pow(2) + 0.2*torch.rand(x.size()) # noisy y data (tensor), shape=(100, 1)
# Dessin
plt.scatter(x.data.numpy(), y.data.numpy())
plt.show()
torch.unsqueeze(input, dim, out=None) Action:Dimension étendue Renvoie un nouveau tenseur,Insérer une dimension à l'emplacement prévu de l'entrée 1 Attention!: Mémoire partagée entre le tenseur de retour et le tenseur d'entrée,Donc changer le contenu de l'un change l'autre
torch.linspace(start, end, steps=100, out=None) Retour à un1Tenseur dimensionnel,Inclus dans la SectionstartEtendEspacé uniformémentstepUn point.La longueur du tenseur de sortie est déterminée parstepsDécide que.
Paramètres: start (float) - Point de départ de l'intervalle end (float) - Fin de l'intervalle steps (int) - InstartEtendNombre d'échantillons générés entre out (Tensor, optional) - Tenseur de résultat
torch.rand(*sizes, out=None) → Tensor Renvoie un tenseur,Inclus à partir de l'intervalle[0,1)Un ensemble de nombres aléatoires tirés d'une distribution uniforme de,Forme par paramètre variablesizes Définition.
Paramètres: sizes (int…) – Séquence entière,Forme de sortie définie out (Tensor, optinal) - Tenseur de résultat
6. Mise en place d'un réseau neuronal
class Net(torch.nn.Module): # Succession torch De Module
def __init__(self, n_feature, n_hidden, n_output):
super(Net, self).__init__() # Succession __init__ Fonction
# Définir la forme de chaque couche
self.hidden = torch.nn.Linear(n_feature, n_hidden) # Sortie linéaire de la couche cachée
self.predict = torch.nn.Linear(n_hidden, n_output) # Sortie linéaire de la couche de sortie
def forward(self, x): # Et c'est aussi Module Dans forward Fonction
# Valeur d'entrée de propagation vers l'avant , Analyse de la valeur de sortie du réseau neuronal
x = F.relu(self.hidden(x)) # Fonction d'excitation( Masquer les valeurs linéaires des couches )
x = self.predict(x) # Valeur de sortie
return x
net = Net(n_feature=1, n_hidden=10, n_output=1)
print(net)
net2 = torch.nn.Sequential(
torch.nn.Linear(1, 10),
torch.nn.ReLU(),
torch.nn.Linear(10, 1)
)
print(net2)
7. Réseau de formation
# optimizer C'est un outil d'entraînement.
optimizer = torch.optim.SGD(net.parameters(), lr=0.2) # Entrée net Tous les paramètres de, Taux d'apprentissage
loss_func = torch.nn.MSELoss() # Formules de calcul des erreurs pour les valeurs prédites et réelles (Variance carrée moyenne)
epochs = 200
plt.ion() # Dessin
plt.show()
for t in range(epochs):
prediction = net(x) # Tiens. net Données sur la formation x, Prévisions de sortie
loss = loss_func(prediction, y) # Calculer l'erreur entre les deux
optimizer.zero_grad() # Effacer les valeurs résiduelles des paramètres de mise à jour de l'étape précédente
loss.backward() # Erreur de Rétropropagation, Calculer les valeurs de mise à jour des paramètres
optimizer.step() # Appliquer la valeur de mise à jour du paramètre à net De parameters Allez.
#Dessin
if t % 5 == 0:
# plot and show learning process
plt.cla()
plt.scatter(x.data.numpy(), y.data.numpy())
plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5)
plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={
'size': 20, 'color': 'red'})
plt.pause(0.1)
边栏推荐
- Advanced APL (realize group chat room)
- [cmake] cmake link SQLite Library
- C code production YUV420 planar format file
- 【无标题】
- JS monitors empty objects and empty references
- Wireshark software usage
- [most detailed] latest and complete redis interview book (50)
- Lombok -- simplify code
- The babbage industrial policy forum
- Some basic operations of reflection
猜你喜欢
Custom generic structure
高并发内存池
3311. 最长算术
3311. Longest arithmetic
Discussion on some problems of array
Deep learning parameter initialization (I) Xavier initialization with code
[solved] sqlexception: invalid value for getint() - 'Tian Peng‘
【已解决】SQLException: Invalid value for getInt() - ‘田鹏‘
691. 立方体IV
Leetcode 198: 打家劫舍
随机推荐
你开发数据API最快多长时间?我1分钟就足够了
Circuit, packet and message exchange
Advanced API (use of file class)
论文学习——鄱阳湖星子站水位时间序列相似度研究
How long is the fastest time you can develop data API? One minute is enough for me
Docker builds MySQL: the specified path of version 5.7 cannot be mounted.
Logging log configuration of vertx
树莓派更新工具链
Visit Google homepage to display this page, which cannot be displayed
Spa single page application
VMware virtual machine installation
【已解决】Unknown error 1146
1. E-commerce tool cefsharp autojs MySQL Alibaba cloud react C RPA automated script, open source log
II. D3.js draw a simple figure -- circle
PgSQL converts string to double type (to_number())
docker建立mysql:5.7版本指定路径挂载不上。
Advanced API (UDP connection & map set & collection set)
Common methods of file class
[most detailed] latest and complete redis interview book (50)
Deep learning parameter initialization (I) Xavier initialization with code