Lab 5
Lab 5
問題 1.
(プログラム)
!pip install torchtext==0.17.0
import torch
import torch.nn.functional as F
import torchtext
tokenizer = torchtext.data.utils.get_tokenizer('basic_english')
MODELNAME = "imdb-rnn.model"
EPOCH = 10
BATCHSIZE = 64
LR = 1e-5
print(DEVICE)
for i in range(10):
print(train_data[i])
vocab = {}
for label, tokenlist in train_data:
vocab[token] = 0
vocab[token] += 1
vocabidx = {}
idx = len(vocabidx)
vocablist.append((token, freq))
vocabidx[token] = idx
vocabidx['<unk>'] = 0
vocabidx['<pad>'] = 1
vocabidx['<cls>'] = 2
vocabidx['<eos>'] = 3
rr = []
tkl = ['<cls>']
tkl.append('<eos>')
rr.append((label, tkl))
return rr
print(train_data[i])
bb = []
blabel = []
btokenlist = []
blabel.append(label)
btokenlist.append(tokenlist)
bb.append((btokenlist, blabel))
blabel = []
btokenlist = []
if len(blabel) > 0:
bb.append((btokenlist, blabel))
return bb
for i in range(10):
print(train_data[i])
def padding(bb):
tkl.append('<pad>')
return bb
train_data = padding(train_data)
test_data = padding(test_data)
for i in range(10):
print(train_data[i])
rr = []
id_tokenlists = []
rr.append([id_tokenlists, id_labels])
return rr
for i in range(10):
print(train_data[i])
class MyRNN(torch.nn.Module):
def __init__(self):
super(MyRNN, self).__init__()
vocabsize = len(vocablist)
vocabidx['<pad>'])
self.l2 = torch.nn.Linear(300, 2)
e = self.emb(x)
for i in range(x.size()[0]):
h = F.relu(e[i] + self.l1(h))
return self.l2(h)
def train():
model = MyRNN().to(DEVICE)
loss = 0
1).to(DEVICE)
optimizer.zero_grad()
y = model(tokenlists)
batchloss.backward()
optimizer.step()
torch.save(model.state_dict(), MODELNAME)
def test():
total = 0
correct = 0
model = MyRNN().to(DEVICE)
model.load_state_dict(torch.load(MODELNAME))
model.eval()
total += len(labels)
1).to(DEVICE)
y = model(tokenlists)
pred_labels = y.max(dim=1)[1]
print("correct:", correct.item())
print("total:", total)
train()
test()
(実行結果)