当前位置:网站首页>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)
边栏推荐
- VMware network mode - bridge, host only, NAT network
- Use of generics
- gstreamer ffmpeg avdec解码数据流向分析
- 带你全流程,全方位的了解属于测试的软件事故
- Use of file class
- Jeecg data button permission settings
- pgAdmin 4 v6.11 发布,PostgreSQL 开源图形化管理工具
- Distributed lock
- Hash table, generic
- Realize the reuse of components with different routing parameters and monitor the changes of routing parameters
猜你喜欢

Hash table, generic

C code production YUV420 planar format file

高并发内存池

High concurrency memory pool

Deep learning parameter initialization (I) Xavier initialization with code

File operation serialization recursive copy

为什么说数据服务化是下一代数据中台的方向?

【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5

Store WordPress media content on 4everland to complete decentralized storage

最全SQL与NoSQL优缺点对比
随机推荐
OSI knowledge sorting
7.2刷题两个
LeetCode
【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5
【最詳細】最新最全Redis面試大全(50道)
【已解决】win10找不到本地组策略编辑器解决方法
3311. Longest arithmetic
URL programming
Summary of abnormal mechanism of interview
Qtip2 solves the problem of too many texts
The underlying mechanism of advertising on websites
Responsive MySQL of vertx
Common APIs
Logging log configuration of vertx
PAT甲级真题1166
IPv4 address
Distributed transactions
PgSQL converts string to double type (to_number())
Final, override, polymorphism, abstraction, interface
Various postures of CS without online line