当前位置:网站首页>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)
边栏推荐
- [untitled]
- [cmake] cmake link SQLite Library
- Vertx's responsive redis client
- Chrome 98 Private Network Access problem w/ disabled web security: Request had no target IP address
- Logging log configuration of vertx
- Mail sending of vertx
- II. D3.js draw a simple figure -- circle
- PAT甲级真题1166
- Common APIs
- C代码生产YUV420 planar格式文件
猜你喜欢

4279. Cartesian tree

4279. 笛卡尔树

Leetcode 213: 打家劫舍 II

VMWare网络模式-桥接,Host-Only,NAT网络

Deep learning parameter initialization (I) Xavier initialization with code

SecureCRT password to cancel session recording

Map interface and method

691. 立方体IV

Summary of Arduino serial functions related to print read

Common problems in io streams
随机推荐
《指環王:力量之戒》新劇照 力量之戒鑄造者亮相
论文学习——鄱阳湖星子站水位时间序列相似度研究
[solved] sqlexception: invalid value for getint() - 'Tian Peng‘
The babbage industrial policy forum
IP home online query platform
Comparison of advantages and disadvantages between most complete SQL and NoSQL
Hisat2 - stringtie - deseq2 pipeline for bulk RNA seq
PAT甲级真题1166
New stills of Lord of the rings: the ring of strength: the caster of the ring of strength appears
[untitled]
Deep learning parameter initialization (I) Xavier initialization with code
[HCAI] learning summary OSI model
pgAdmin 4 v6.11 发布,PostgreSQL 开源图形化管理工具
URL programming
1. E-commerce tool cefsharp autojs MySQL Alibaba cloud react C RPA automated script, open source log
4EVERLAND:IPFS 上的 Web3 开发者中心,部署了超过 30,000 个 Dapp!
7.2刷题两个
3311. 最长算术
Longest common prefix and
OSI knowledge sorting