回顾：训练神经网络

通过PyTorch 进行深度学习

使用pytorch 构建神经网络

```%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import numpy as np
import torch
import helper```

通过Pytorch 构建神经网络

```# Import things like usual

%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import numpy as np
import torch

import helper

import matplotlib.pyplot as plt
from torchvision import datasets, transforms```

```# Define a transform to normalize the data
transform = transforms.Compose([transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),
])

```dataiter = iter(trainloader)
images, labels = dataiter.next()```

构建神经网络

```from torch import nn
from torch import optim
import torch.nn.functional as F
class Network(nn.Module):
def __init__(self):
super().__init__()
# Defining the layers, 128, 64, 10 units each
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 64)
# Output layer, 10 units - one for each digit
self.fc3 = nn.Linear(64, 10)

def forward(self, x):
''' Forward pass through the network, returns the output logits '''

x = self.fc1(x)
x = F.relu(x)
x = self.fc2(x)
x = F.relu(x)
x = self.fc3(x)
x = F.softmax(x, dim=1)

return x

model = Network()
model```

初始化权重和偏差
```print(net.fc1.weight)
print(net.fc1.bias)```

```# Set biases to all zeros
net.fc1.bias.data.fill_(0);
# sample from random normal with standard dev = 0.01
net.fc1.weight.data.normal_(std=0.01);```
前向传递

```# Grab some data
images, labels = dataiter.next()
images.resize_(64, 1, 784)

# Need to wrap it in a Variable, will explain in next notebook
inputs = Variable(images)

# Forward pass through the network
img_idx = 0
logits = net.forward(inputs[img_idx,:])

# Predict the class from the network output
ps = F.softmax(logits, dim=1)

img = images[img_idx]
helper.view_classify(img.resize_(1, 28, 28), ps)```

PyTorch提供了一种方便的方法来构建这样的网络，其中张量通过操作顺序传递。使用它来构建等效网络`nn.Sequential` (documentation)：

```# Hyperparameters for our network
input_size = 784
hidden_sizes = [128, 64]
output_size = 10

# Build a feed-forward network
model = nn.Sequential(nn.Linear(input_size, hidden_sizes[0]),
nn.ReLU(),
nn.Linear(hidden_sizes[0], hidden_sizes[1]),
nn.ReLU(),
nn.Linear(hidden_sizes[1], output_size),
nn.Softmax(dim=1))
print(model)

# Forward pass through the network and display output
images.resize_(images.shape[0], 1, 784)
ps = model.forward(images[0,:])
helper.view_classify(images[0].view(1, 28, 28), ps)```

```from collections import OrderedDict
model = nn.Sequential(OrderedDict([
('fc1', nn.Linear(input_size, hidden_sizes[0])),
('relu1', nn.ReLU()),
('fc2', nn.Linear(hidden_sizes[0], hidden_sizes[1])),
('relu2', nn.ReLU()),
('output', nn.Linear(hidden_sizes[1], output_size)),
('softmax', nn.Softmax(dim=1))]))
model```

训练神经网络

反向传播

Torch提供了一个自动编程模块，用于自动计算张量的梯度。 它通过跟踪在张量上执行的操作来实现此目的。 为了确保PyTorch跟踪张量上的运算并计算梯度，您需要在张量上设置`requires_grad`。 您可以使用requires_grad关键字在创建时执行此操作，也可以随时使用`x.requires_grad_（True）`执行此操作。 您可以使用torch.no_grad（）内容关闭代码块的渐变： x = torch.zeros（1，requires_grad = True） with torch.no_grad（）： ... y = x * 2 y.requires_grad false

```%matplotlib inline
%config InlineBackend.figure_format = 'retina'

from collections import OrderedDict

import numpy as np
import time

import torch
from torch import nn
from torch import optim
import torch.nn.functional as F

import helper```
```x = torch.randn(2,2, requires_grad=True)
print(x)```
```y = x**2
print(y)```

```## grad_fn shows the function that generated this variable

0 条评论

• Param in roscpp

严格来说，param并不能称作一种通信方式，因为它往往只是用来存储一些静态的设置，而不是动态变化的。所以关于param的操作非常轻巧，非常简单。 关于param...

• CMake

理论上来说，任意一个c++程序都可以使用g++来编译，但当程序规模越来越大时，一个工程可能有许多的文件夹和源文件，这时输入的编译命令将会越来越长。因此，对于C+...

• 跳跃游戏1&2跳跃游戏2

LeetCode 55. Jump Game 一个数组存储了非负整型数据，数组中的第i个元素nums[i]，代表了可以从数组第i 个位置最多向前跳跃nums[...

• Spring Boot & ES 实战，值得参考！

Spring Boot 2.0.5默认的elasticsearch版本很低，这里我们用最新版本6.4.1

• 【GTC 2020】机器学习在5G 边缘计算上的应用

边缘计算是指在接近生成位置的地方处理信息。在现代移动通信中，这样做的原因包括延迟约束、带宽减少和节能。我们将介绍三种特别适合现代gpu边缘计算的机器学习方法，并...

• 让孩子学会学习，先从培养良好的学习习惯开始

孩子学会学习，首先就必须培养良好的学习习惯。凡是学习成绩好而且稳定的孩子，都是从小就培养形成了良好的学习习惯；而成绩忽好忽坏的孩子，也是因为缺乏良好的学习习惯。...

• 学 AI 和机器学习的人必须关注的 6 个领域

近期热门的话题， 人们开始重新讨论这一基本定义----什么是人工智能（AI）。有些人将 AI 重新命名为「认知计算」或「机器智能」，而其他人则错误地将 AI ...