From 3d22c883f09d3b309cf2aa661f97fe354e683608 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Sat, 6 Aug 2022 14:29:34 +0200 Subject: [PATCH] Update. --- mlp.pdf | Bin 10644 -> 10038 bytes mlp.py | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/mlp.pdf b/mlp.pdf index 0a7b85860554c5a6da9dfe32bae50b71638bc0a6..3fc616afcb23a80ab973e9ee061e857b8f1ec78d 100644 GIT binary patch delta 8582 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�M5Sh_Kw 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 delta 9199 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 diff --git a/mlp.py b/mlp.py index 21d166b..4bf5841 100755 --- a/mlp.py +++ b/mlp.py @@ -19,30 +19,32 @@ import subprocess +import torch from torch import nn -from torch.nn import functional as fn -from torch import Tensor from torch.nn import Module import agtree2dot class MLP(Module): def __init__(self, input_dim, hidden_dim, output_dim): - super(MLP, self).__init__() + super().__init__() self.fc1 = nn.Linear(input_dim, hidden_dim) self.fc2 = nn.Linear(hidden_dim, output_dim) def forward(self, x): x = self.fc1(x) - x = fn.tanh(x) + x = torch.tanh(x) x = self.fc2(x) return x mlp = MLP(10, 20, 1) -input = Tensor(100, 10).normal_() -target = Tensor(100, 1).normal_() -output = mlp(input) criterion = nn.MSELoss() + +input = torch.randn(100, 10) +target = torch.randn(100, 1) + +output = mlp(input) + loss = criterion(output, target) agtree2dot.save_dot(loss, -- 2.20.1