From 3d22c883f09d3b309cf2aa661f97fe354e683608 Mon Sep 17 00:00:00 2001
From: Francois Fleuret <francois@fleuret.org>
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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

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.39.5