FizzBuzz
FizzBuzz是一个简单的小游戏。游戏规则如下:从1开始往上数数,当遇到3的倍数的时候,说fizz,当遇到5的倍数,说buzz,当遇到15的倍数,就说fizzbuzz,其他情况下则正常数数。
我们可以写一个简单的小程序决定要返回正常数值还是fizz,buzz或者fizzbuzz。
def fizz_buzz_encode(i):
if i % 15 == 0: return 3
elif i % 5 == 0: return 2
elif i % 3 ==0: return 1
else: return 0
def fizz_buzz_decode(i,prediction):
return [str(i), "fizz", "buzz", "fizzbuzz"][prediction]
def helper(i):
print(fizz_buzz_decode(i,fizz_buzz_encode(i)))
for i in range(1,16):
helper(i)
Output
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
我们首先定义模型的输入与输出(训练数据)
import numpy as np
import torch
NUM_DIGITS = 10
def binary_encode(i,num_digits):
return np.array([i >> d & 1 for d in range(num_digits)][::-1])
trX = torch.Tensor([binary_encode(i, NUM_DIGITS) for i in range(101, 2 ** NUM_DIGITS)])
trY = torch.LongTensor([fizz_buzz_encode(i) for i in range(101, 2 ** NUM_DIGITS)])
然后我们用PyTorch定义模型
NUM_HIDDEN = 100
model = torch.nn.Sequential(
torch