Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
deeplearningzerotoall
GitHub Repository: deeplearningzerotoall/PyTorch
Path: blob/master/RNN/2-hihello.py
618 views
1
import torch
2
import torch.optim as optim
3
import numpy as np
4
5
# Random seed to make results deterministic and reproducible
6
torch.manual_seed(0)
7
8
char_set = ['h', 'i', 'e', 'l', 'o']
9
10
# hyper parameters
11
input_size = len(char_set)
12
hidden_size = len(char_set)
13
learning_rate = 0.1
14
15
# data setting
16
x_data = [[0, 1, 0, 2, 3, 3]]
17
x_one_hot = [[[1, 0, 0, 0, 0],
18
[0, 1, 0, 0, 0],
19
[1, 0, 0, 0, 0],
20
[0, 0, 1, 0, 0],
21
[0, 0, 0, 1, 0],
22
[0, 0, 0, 1, 0]]]
23
y_data = [[1, 0, 2, 3, 3, 4]]
24
25
# transform as torch tensor variable
26
X = torch.FloatTensor(x_one_hot)
27
Y = torch.LongTensor(y_data)
28
29
# declare RNN
30
rnn = torch.nn.RNN(input_size, hidden_size, batch_first=True) # batch_first guarantees the order of output = (B, S, F)
31
32
# loss & optimizer setting
33
criterion = torch.nn.CrossEntropyLoss()
34
optimizer = optim.Adam(rnn.parameters(), learning_rate)
35
36
# start training
37
for i in range(100):
38
optimizer.zero_grad()
39
outputs, _status = rnn(X)
40
loss = criterion(outputs.view(-1, input_size), Y.view(-1))
41
loss.backward()
42
optimizer.step()
43
44
result = outputs.data.numpy().argmax(axis=2)
45
result_str = ''.join([char_set[c] for c in np.squeeze(result)])
46
print(i, "loss: ", loss.item(), "prediction: ", result, "true Y: ", y_data, "prediction str: ", result_str)
47
48