私の質問は正しいですか?どこを見ても、何も見つかりませんでした。私がkerasを学んだときにこれが解決されたと確信していますが、pytorchでどのように実装しますか?
PyTorchを使用してニューラルネットワークを構築する方法はいくつかあります。
import torch
from torch import nn
import torch.nn.functional as F
class Network(nn.Module):
def __init__(self):
super().__init__()
# Inputs to hidden layer linear transformation
self.hidden = nn.Linear(784, 256)
# Output layer, 10 units - one for each digit
self.output = nn.Linear(256, 10)
def forward(self, x):
# Hidden layer with sigmoid activation
x = F.sigmoid(self.hidden(x))
# Output layer with softmax activation
x = F.softmax(self.output(x), dim=1)
return x
このNetwork
クラスは、数字画像を処理するように設計されています。の最後の数値self.output
は10です。これは、各桁に1つの出力で10の出力があることを意味します。クラスの確率を計算するためにoutput
throughsoftmax
関数を配置します。特定の数字画像に対してどの数字が最も高い確率を持っているかを確認します。
dim=1
オプションを追加する理由はsoftmax
、列全体で計算を行うためです。したがって、各行の確率の合計は合計で1になります。
例:
>>> input = torch.tensor([[1., 2., 3.], [2., 1., 3.], [4., 2., 6.]])
>>> F.softmax(input, dim=1)
tensor([[0.0900, 0.2447, 0.6652],
[0.2447, 0.0900, 0.6652],
[0.1173, 0.0159, 0.8668]])
# dim=1, row sums add up to 1
>>> F.softmax(input, dim=0)
tensor([[0.0420, 0.4223, 0.0453],
[0.1142, 0.1554, 0.0453],
[0.8438, 0.4223, 0.9094]])
# dim=0, column sums add up to 1
同じモデルは、以下を使用して構築できますnn.Sequential
。
# 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))
あなたは、チェックアウトすることができますPyTorchとの深い学習のためのUdacityのGithubのページをより詳細な説明のために。上記の例は、パート2-PyTorchのニューラルネットワークからのものです。ディープラーニングナノディグリーコンテンツの一部は、無料コース「PyTorchを使用したディープラーニング入門」としても利用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加