softmax回归模型——pytroch版

发布时间 2023-07-29 09:17:11作者: 不像话
import torch
from IPython import display
from d2l import torch as d2l
# from d2l.mxnet import Accumulator

batch_size = 256
# 每次读256张图片,返回训练iter和测试iter
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

num_inputs = 784
num_outputs = 10
w = torch.normal(0,0.01,size=(num_inputs,num_outputs),requires_grad=True)
b = torch.zeros(num_outputs,requires_grad=True)

def softmax(x):
    x_exp = torch.exp(x)
    # 按行加和,保持维度不变
    partition = x_exp.sum(1,keepdim=True)
    # 应用广播机制
    return x_exp/partition

# 实现softmax回归模型
def net(x):
    return softmax(torch.matmul(x.reshape((-1,w.shape[0])),w)+b)

y = torch.tensor([0, 2])
y_hat = torch.tensor([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])
# 实现交叉熵损失函数
def cross_entropy(y_hat,y):
    print(len(y_hat))
    print(range(len(y_hat)))
    return -torch.log(y_hat[range(len(y_hat)),y])

cross_entropy(y_hat,y)

def accuracy(y_hat,y):
    """计算机预测正确的数量"""
    if len(y_hat.shape)>1 and y_hat.shape[1]>1:
        # 取概率最大的值,也就是最可能的预测
        y_hat = y_hat.argmax(axis=1)
    # 将y_hat的数据类型转成y的数据类型,再作比较
    cmp = y_hat.type(y.dtype) == y
    return float(cmp.type(y.dtype).sum())
# 找出预测正确的样本数/样本的总数得到正确的概率
right_lr = accuracy(y_hat,y) / len(y)
print(right_lr)

# Accumulator实例中创建了2个变量,用于分别存储正确预测的数量和预测的总数量
class Accumulator:
    """在n个变量上累加"""
    def __init__(self,n):
        self.data = [0.0]*n
    def add(self,*args):
        self.data = [a+float(b) for a,b in zip(self.data,args)]
    def reset(self):
        self.data = [0.0] * len(self.data)
    def __getitem__(self, idx):
        return self.data[idx]

# 评估任意模型net的准确率
def evaluate_accuracy(net,data_iter):
    """计算在指定数据集上模型的精度"""
    if isinstance(net,torch.nn.Module):
        net.eval() #将模型设置为评估模式
    metric = Accumulator(2) #正确预测数 预测总数,迭代器
    for x,y in data_iter:
        # 把数据放到迭代器中
        metric.add(accuracy(net(x),y),y.numel())
    return metric[0]/metric[1]

# if __name__ == '__main__':
#     # 预测值
#     evl = evaluate_accuracy(net,test_iter)
#     print(evl)


def train_epoch_ch3(net, train_iter, loss, updater):
    # 将模型设置为训练模式
    if isinstance(net, torch.nn.Module):
        net.train()
    # 训练损失总和、训练准确度总和、样本数
    metric = Accumulator(3)
    for X, y in train_iter:
        # 计算梯度并更新参数
        y_hat = net(X)
        l = loss(y_hat, y)
        if isinstance(updater, torch.optim.Optimizer):
            # 使用PyTorch内置的优化器和损失函数
            updater.zero_grad()
            l.mean().backward()
            updater.step()
        else:
            # 使用定制的优化器和损失函数
            l.sum().backward()
            updater(X.shape[0])
        metric.add(float(l.sum()), accuracy(y_hat, y), y.numel())
    # 返回训练损失和训练精度
    return metric[0] / metric[2], metric[1] / metric[2]

"""
class Animator:
    # 在动画中绘制数据
    def __init__(self, xlabel=None, ylabel=None, legend=None, xlim=None,
                 ylim=None, xscale='linear', yscale='linear',
                 fmts=('-', 'm--', 'g-.', 'r:'), nrows=1, ncols=1,
                 figsize=(3.5, 2.5)):
        # 增量地绘制多条线
        if legend is None:
            legend = []
        d2l.use_svg_display()
        self.fig, self.axes = d2l.plt.subplots(nrows, ncols, figsize=figsize)
        if nrows * ncols == 1:
            self.axes = [self.axes, ]
        # 使用lambda函数捕获参数
        self.config_axes = lambda: d2l.set_axes(
            self.axes[0], xlabel, ylabel, xlim, ylim, xscale, yscale, legend)
        self.X, self.Y, self.fmts = None, None, fmts

    def add(self, x, y):
        # 向图表中添加多个数据点
        if not hasattr(y, "__len__"):
            y = [y]
        n = len(y)
        if not hasattr(x, "__len__"):
            x = [x] * n
        if not self.X:
            self.X = [[] for _ in range(n)]
        if not self.Y:
            self.Y = [[] for _ in range(n)]
        for i, (a, b) in enumerate(zip(x, y)):
            if a is not None and b is not None:
                self.X[i].append(a)
                self.Y[i].append(b)
        self.axes[0].cla()
        for x, y, fmt in zip(self.X, self.Y, self.fmts):
            self.axes[0].plot(x, y, fmt)
        self.config_axes()
        display.display(self.fig)
        display.clear_output(wait=True)
"""

def train_ch3(net, train_iter, test_iter, loss, num_epochs, updater):
    # animator = Animator(xlabel='epoch', xlim=[1, num_epochs], ylim=[0.3, 0.9],
    #                     legend=['train loss', 'train acc', 'test acc'])
    for epoch in range(num_epochs):
        train_metrics = train_epoch_ch3(net, train_iter, loss, updater)
        test_acc = evaluate_accuracy(net, test_iter)
        # animator.add(epoch + 1, train_metrics + (test_acc,))
    train_loss, train_acc = train_metrics
    assert train_loss < 0.5, train_loss
    assert train_acc <= 1 and train_acc > 0.7, train_acc
    assert test_acc <= 1 and test_acc > 0.7, test_acc

lr = 0.1

def updater(batch_size):
    return d2l.sgd([w, b], lr, batch_size)

def predict_ch3(net, test_iter, n=6):
    """预测标签(定义见第3章)"""
    for X, y in test_iter:
        break
    trues = d2l.get_fashion_mnist_labels(y)
    preds = d2l.get_fashion_mnist_labels(net(X).argmax(axis=1))
    titles = [true +'\n' + pred for true, pred in zip(trues, preds)]
    # d2l.show_images(
    #     X[0:n].reshape((n, 28, 28)), 1, n, titles=titles[0:n])

if __name__ == '__main__':
    predict_ch3(net, test_iter)
    num_epochs = 10
    train_res = train_ch3(net, train_iter, test_iter, cross_entropy, num_epochs, updater)
    print(train_res)

 运行结果

2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
2
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
256
range(0, 256)
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)2
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
2range(0, 2)
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
256
range(0, 256)
96
range(0, 96)
2
range(0, 2)
0.5
2
range(0, 2)
0.5
2
range(0, 2)
2
range(0, 2)
0.5
0.5
None