Pytorch Tutorial #6 - Das Netz lernen lassen

preview_player
Показать описание
In diesem Tutorial geht es um den Backpropagation-Algorithmus, mit dem wir unser Netz trainieren. Dazu nutzen wir einen Optimizer und ein Loss-Kriterium.

_Discord:_

_Unterstützt mich - Danke!:_
Рекомендации по теме
Комментарии
Автор

Für alle, die evtl. auch die bei 11:40 auch diesen Fehler bekommen: RuntimeError: expected scalar type Float but found Long
Bei mir hat es geholfen den input mit '.float()' und target ebenfalls mit '.float()' in den selben Typen umzuwandeln.

ImmortalCookie
Автор

Cooles Video !! Ich kann jetzt mein Programm sagen lassen was bei Schere, Stein, Papier gewinnt :'D

banner
Автор

Danke, heute schaue mir weiter ;), ja, in diesem Video habe kommen die ersten "nicht schaue mir deine anderen " NN-Tutorials

CraftsEasy
Автор

wie kann ich eig mehr inputs als outputs haben damit das genaueren output hat? weil ich hab schon zb nn.linear(64, 32) versucht aber da kommt "RuntimeError: mat1 and mat2 shapes cannot be multiplied (64x32 and 64x32)" raus.


und noch ne andere frage:
wie kann ich das netz auch testen mit ungesehenen daten?
zb das netz ist drauf trainiert die bits umzudrehen, hat aber noch nie den input 11010110 gehabt, da kam aber der letzte output raus also wenn das letzte input 01101001 und der output dann 10010110 war kommt statt 00101001 eben der output raus was schon davor rausgegeben wurde also 10010110

datkeks
Автор

Warum muss man die Funktion zero_grad() selbst ausführen? Gibt es Ansätze, bei denen man will, dass sich der Gradient aufsummiert, um z.B. konsekutiv die Schrittweite (so nenne ich es mal) zu erhöhen? Oder um eine Mischung aus Gradienten der vorhergenden Schritte, um eine noch bessere Optimierung zu erzielen?

lukasb
Автор

Also durch das Durchfüttern mit Tensoren, gebe ich immer einzelne 10er Vektoren durch, derren Output dann wieder im Tensor zusammengefasst wird? Woher weiß der loss welches Netz gemeint ist (siehe loss.backward) ?

GamesFeeder
Автор

erklärst du irgendwo was genau SGD oder MSE usw ist? weil ich hab grade kurz in der anderen playlist reingeschaut aber da hab ich irgendwie nur "komplizierte" mathematik gefunden.

dominikzander
Автор

Es passt zwar nicht zum Thema aber ich wollte dich mal was fragen wenn man whonix benutzt auf kali linux und dann mit der konsole über xerxes jemanden ddost oder etwas testet sieht man doch immernoch die ip also müsste man doch KaliLinux als 2. Betriebssystem benutzen und da dann parrot oder tails installieren oder?

Toxic-fjpd
Автор

Wie sieht es eigentlich aus? Kannst du eine 2. Staffel zu C++ machen würde mich TOTAL freuen :D

niko
Автор

Werden die Gewichte automatisch intern in der Klasse „MeinNetz“ generiert?

leko
Автор

Echt gut Tutorial Reihe.
Ein Nachweis für die korrekte Funktionsweise des Netzwerks wäre allerdings noch schön. Ein kleiner Fehler ist zwar gut, aber noch kein Beweis.

raffael
Автор

Mit den nicht zufälligen Daten müsste das Ergebnis doch bei mir gleich sein, oder? Weil bei mir kommt
tensor(0.5908, grad_fn=<MseLossBackward>)
.
.
.
tensor(3.5800e-07, grad_fn=<MseLossBackward>)
Also andere Fehler als bei dir :thinking:

friedsoftunity
Автор

Ich versteh nicht viel haha. Kannst du die passenden theorie videos in der beschreibung verlinken für die videos hier? Ich will nicht einfach immar alles angucken ^^

danieldaschle
Автор

Wie kommt es, dass bei dir der Fehler so ausgeben wird und bei mir immer nur die Werte bsp: tensor(0.6281, grad_fn=<MseLossBackward>) da stehen?

bongandre
Автор

Warum braucht man die Ableitung von der Funktion? Was ist der Grund?

dmitrysavkin
Автор

Wo finde ich den Code, ohne ihn abtippen zu müssen?

lgnator
Автор

Verdammt, gerade habe ich meinen Fehler gesucht und der Fehler war im Endeffekt in der klasse bei der Definition von forward ein return vergessen habe... Ahh das hat lange gedauert den Fehler zu finden.

oliverszk
Автор

Hey ich hab bei 11:45 das Problem, dass dort nicht die Fehler sondern ein Error kommt.. naja hier ist der Code, und darunter der Output. Wäre sehr cool wenn du mir helfen könntest :D




Code:
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import torch.optim as optim

class MeinNetz(nn.Module):
def __init__(self):
super(MeinNetz, self).__init__()
self.lin1 = nn.Linear(10, 10)
self.lin2 = nn.Linear(10, 10)

def forward(self, x):
x = F.relu (self.lin1(x))
x = self.lin1(x)
return x

def num_flat_features(self, x):
size = x.size()[1:]
num = 1
for i in size:
num *= i
return num

netz = MeinNetz()

for i in range(100):
x = [1, 0, 0, 0, 1, 0, 0, 0, 1, 1]
target = Variable(torch.Tensor([x for _ in range(10)]))

out = netz(input)

x = [0, 1, 1, 1, 0, 1, 1, 1, 0, 0]
target = Variable(torch.Tensor([x for _ in range(10)]))
critierion = nn.MSELoss()
loss = critierion(out, target)
print(loss)

netz.zero_grad()
loss.backward()
optimizer = optim.SGD(netz.parameters(), lr=0.01)
optimizer.step()




Output:

Traceback (most recent call last):
File "/Users/zensiert/PycharmProjects/PyTorch/pytorch.py", line 31, in <module>
out = netz(input)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
result = self.forward(*input, **kwargs)
File "/Users/zensiert/PycharmProjects/PyTorch/pytorch.py", line 14, in forward
x = F.relu (self.lin1(x))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
result = self.forward(*input, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/torch/nn/modules/linear.py", line 55, in forward
return F.linear(input, self.weight, self.bias)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/torch/nn/functional.py", line 833, in linear
if input.dim() == 2 and bias is not None:
AttributeError: 'builtin_function_or_method' object has no attribute 'dim'

Process finished with exit code 1


Schonmal jetzt vielen Dank
- Noah

Noah-fvzq
Автор

Wie sollte man als Informatiker lernen um up to date zu sein ?

zion
Автор

Ich habe aus irgendeinem Grund nen syntax error beim criterion siehe bitte Code:
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.lin1 = nn.Linear(10, 10)
self.lin2 = nn.Linear(10, 10)

def forward(self, x):
x = F.relu(self.lin1(x))
x = self.lin2
return x

def num_flat_features(self, x):
size = x.size()[1:]
num = 1
for i in size:
num *= I
return num


netz = NeuralNetwork()

input = x
x = torch.Tensor(10, 10)

x = [0, 1, 0, 0, 1, 1, 0, 0, 1, 1]
target = torch.Tensor([x for _ in range(10)]




criterion = nn.MSELoss()
loss = criterion(out, target)
print(loss)


out = netz(input)
print(out)

robertschumann