首页 > 分享 > out = self.fc(inp) return o

out = self.fc(inp) return o

代码

import torch

import torch.nn as nn

import torch.nn.functional as F

import torch.optim as optim

torch.manual_seed(1)

CONTEXT_SIZE = 2

EMBEDDING_DIM = 30

EPOCH = 100

VERVOSE = 5

corpus_text = "This tutorial will walk you through the key ideas of deep learning programming using Pytorch."

" Many of the concepts (such as the computation graph abstraction and autograd) "

"are not unique to Pytorch and are relevant to any deep learning tool kit out there.".split(' ')

class CBOW(nn.Module):

def __init__(self, vocab_size, embedding_size, context_size):

super(CBOW, self).__init__()

self.vocab_size = vocab_size

self.embedding_size = embedding_size

self.context_size = context_size

self.embeddings = nn.Embedding(self.vocab_size, self.embedding_size)

self.lin1 = nn.Linear(self.context_size * 2 * self.embedding_size, 512)

self.lin2 = nn.Linear(512, self.vocab_size)

def forward(self, inp):

out = self.embeddings(inp).view(1, -1)

out = out.view(1, -1)

out = self.lin1(out)

out = F.relu(out)

out = self.lin2(out)

out = F.log_softmax(out, dim=1)

return out

def get_word_vector(self, word_idx):

word = torch.LongTensor([word_idx])

print('self.embeddings = ', next(self.embeddings.parameters()))

return self.embeddings(word).view(1, -1)

def train_cbow(data, unique_vocab, word_to_idx):

cbow = CBOW(len(unique_vocab), EMBEDDING_DIM, CONTEXT_SIZE)

nll_loss = nn.NLLLoss()

optimizer = optim.SGD(cbow.parameters(), lr=0.001)

print(len(data))

for epoch in range(EPOCH):

total_loss = 0

for context, target in data:

inp_var = torch.tensor([word_to_idx[word] for word in context], dtype=torch.long)

target_var = torch.tensor([word_to_idx[target]], dtype=torch.long)

cbow.zero_grad()

log_prob = cbow(inp_var)

loss = nll_loss(log_prob, target_var)

loss.backward()

optimizer.step()

total_loss += loss.data

if epoch % VERVOSE == 0:

loss_avg = float(total_loss / len(data))

print("{}/{} loss {:.2f}".format(epoch, EPOCH, loss_avg))

return cbow

def main():

data = list()

for i in range(CONTEXT_SIZE, len(corpus_text) - CONTEXT_SIZE):

data_context = list()

for j in range(CONTEXT_SIZE):

data_context.append(corpus_text[i-CONTEXT_SIZE+j])

for j in range(1, CONTEXT_SIZE+1):

data_context.append(corpus_text[i+j])

data_target = corpus_text[i]

data.append((data_context, data_target))

print("some data: ", data[:3])

unique_vocab = list(set(corpus_text))

word_to_idx = {w:i for i, w in enumerate(unique_vocab)}

print('word_to_idx: ', word_to_idx)

cbow = train_cbow(data, unique_vocab, word_to_idx)

if __name__ == "__main__":

main()

结果

some data: [(['This', 'tutorial', 'walk', 'you'], 'will'), (['tutorial', 'will', 'you', 'through'], 'walk'), (['will', 'walk', 'through', 'the'], 'you')]

word_to_idx: {'using': 0, 'relevant': 1, 'unique': 2, 'tutorial': 3, 'concepts': 4, 'graph': 5, 'Many': 6, 'the': 7, 'are': 8, 'deep': 9, 'key': 10, 'ideas': 11, 'there.': 12, 'out': 13, 'Pytorch': 14, 'learning': 15, 'of': 16, 'not': 17, 'autograd)': 18, 'tool': 19, 'will': 20, '(such': 21, 'you': 22, 'This': 23, 'through': 24, 'Pytorch.': 25, 'as': 26, 'kit': 27, 'any': 28, 'computation': 29, 'and': 30, 'to': 31, 'abstraction': 32, 'programming': 33, 'walk': 34}

39

0/100 loss 3.60

5/100 loss 3.14

10/100 loss 2.73

15/100 loss 2.33

20/100 loss 1.97

25/100 loss 1.65

30/100 loss 1.36

35/100 loss 1.11

40/100 loss 0.91

45/100 loss 0.74

50/100 loss 0.61

55/100 loss 0.51

60/100 loss 0.42

65/100 loss 0.36

70/100 loss 0.31

75/100 loss 0.27

80/100 loss 0.24

85/100 loss 0.21

90/100 loss 0.19

95/100 loss 0.17

Process finished with exit code 0

相关知识

pytorch中x = x.view(x.size(0),
pytorch分类和回归:阿里天池宠物年龄预测
阿里天池比赛
np.unique(ar, return
玩转Kaggle:Dog Breed Identification【识别狗的类别】
Is material also carrying out prevention
使用PyTorch实现鸟类音频检测卷积网络模型
书店管理系统
Dogs love to get out and
yii\base\ErrorException

网址: out = self.fc(inp) return o https://m.mcbbbk.com/newsview578479.html

所属分类:萌宠日常
上一篇: 为博人眼球主人让土狗学泰迪两条腿
下一篇: up主xq,b站刷到一个视频,u