RUVIDEO
Поделитесь видео 🙏

python(Spyder)を使ったデバック方法

import torch
import torch.nn.functional as f
from torch.utils.data import DataLoader
from torchvision import datasets, transforms
import matplotlib.pyplot as plt
import pandas as pd

class model(torch.nn.Module):
def __init__(self):
super(model, self).__init__()
self.fc1 = torch.nn.Linear(28*28, 1000)
self.fc2 = torch.nn.Linear(1000, 10)

def forward(self, x):
x = self.fc1(x)
x = torch.sigmoid(x)
x = self.fc2(x)

return f.log_softmax(x, dim=1)


def load_MNIST(batch=128):
train_loader = DataLoader(
datasets.MNIST('./data',
train=True,
download=True,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Lambda(lambda x: x),
])),
batch_size=batch,
shuffle=True)

test_loader = DataLoader(
datasets.MNIST('./data',
train=False,
download=True,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Lambda(lambda x: x)
])),
batch_size=batch,
shuffle=True)

return {'train': train_loader, 'test': test_loader}




# 学習結果の保存用
history = {'train_loss': [], 'test_loss': [], 'test_acc': [] }

net = model()
print(net)

loaders = load_MNIST()


optimizer = torch.optim.Adam(params=net.parameters(), lr=0.001)


def train(epoch):
losses = None

net.train()
for i, (data, target) in enumerate(loaders['train']):
data = data.view(-1, 28*28)

pdata = pd.DataFrame(data.numpy())
optimizer.zero_grad()
output = net(data)
losses = f.nll_loss(output, target)
losses.backward()
optimizer.step()

if i % 10 == 0:
print('Training log: {} epoch ({} / 60000 train. data). Loss: {}'.format(epoch+1,
(i+1)*128,
losses.item()))

history['train_loss'].append(losses.item())



def test():
net.eval()
test_loss = 0
correct = 0

with torch.no_grad():
for data, target in loaders['test']:
data = data.view(-1, 28 * 28)
output = net(data)

test_loss += f.nll_loss(output, target, reduction='sum').item()

pred = output.argmax(dim=1, keepdim=True)

correct += pred.eq(target.view_as(pred)).sum().item()


test_loss /= 10000

print('Test loss (avg): {}, Accuracy: {}'.format(test_loss, correct / 10000))

history['test_loss'].append(test_loss)
history['test_acc'].append(correct / 10000)


for epoch in range(5):
None
train(epoch)
test()



import os
os.environ['KMP_DUPLICATE_LIB_OK']='TRUE'

epoch = 5
print(history)
plt.figure()
print(range(1, epoch+1))
plt.plot(range(1, epoch+1), history['train_loss'], label='train_loss')
plt.plot(range(1, epoch+1), history['test_loss'], label='test_loss')
plt.xlabel('epoch')
plt.legend()
plt.savefig('loss.png')

plt.figure()
plt.plot(range(1, epoch+1), history['test_acc'])
plt.title('test accuracy')
plt.xlabel('epoch')
plt.savefig('test_acc.png')

Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «python(Spyder)を使ったデバック方法», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.

Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.

Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!

Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.