超強力なPytorchオペレーション! ! !

超強力なPytorchオペレーション! ! !

こんにちは、Xiaozhuangです!

ここ数日、ディープラーニングに関するコンテンツをいくつか共有しました。

さらに、numpy や pandas に似た一般的なデータ処理関数も、Pytorch では同様に重要かつ興味深いものです。 !

Pytorch は、データの処理と変換のための多くの機能も提供します。

今日は最も重要な機能を見てみましょう。

トーチ.テンソル

torch.Tensor は PyTorch で最も基本的なデータ構造であり、テンソルを表すために使用されます。テンソルは、数値やブール値などを含めることができる多次元配列です。 torch.Tensor コンストラクターを使用するか、他の関数を使用してテンソルを作成できます。

 import torch # 创建一个空的张量empty_tensor = torch.Tensor() # 从列表创建张量data = [1, 2, 3, 4] tensor_from_list = torch.Tensor(data)

torch.from_numpy

NumPy 配列を PyTorch テンソルに変換するために使用されます。

 import numpy as np numpy_array = np.array([1, 2, 3, 4]) torch_tensor = torch.from_numpy(numpy_array)

torch.Tensor.item

1 つの要素のみを含むテンソルから Python 値を抽出するために使用されます。スカラーテンソルに適用されます。

 scalar_tensor = torch.tensor(5) scalar_value = scalar_tensor.item()

torch.Tensor.view

テンソルの形状を変更するために使用されます。

 original_tensor = torch.randn(2, 3) # 2x3的随机张量reshaped_tensor = original_tensor.view(3, 2) # 将形状改变为3x2

torch.Tensor.to

テンソルを指定されたデバイス (CPU や GPU など) に変換するために使用されます。

 cpu_tensor = torch.randn(3) gpu_tensor = cpu_tensor.to("cuda") # 将张量移动到GPU

トーチ.テンソル.numpy

テンソルを NumPy 配列に変換します。

 pytorch_tensor = torch.tensor([1, 2, 3]) numpy_array = pytorch_tensor.numpy()

torch.nn.function.one_hot トーチ.nn.function.one_hot

整数テンソルをワンホットエンコードするために使用されます。

 import torch.nn.functional as F integer_tensor = torch.tensor([0, 2, 1]) one_hot_encoded = F.one_hot(integer_tensor)

torch.utils.data.Dataset と torch.utils.data.DataLoader

データセットを読み込んで処理するために使用されます。これら 2 つのクラスは通常、カスタム データセット クラスと一緒に使用されます。

 from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, index): return self.data[index] dataset = CustomDataset([1, 2, 3, 4, 5]) dataloader = DataLoader(dataset, batch_size=2, shuffle=True)

上記は、PyTorch の重要なデータ変換関数の一部であり、簡単に使用されています。

これらは、ディープラーニングタスク用のデータの処理と準備に非常に役立ちます。

事例

次に、画像分割の例を作成します。

このケーススタディでは、事前トレーニング済みの DeepLabV3 モデルと PASCAL VOC データセットを使用して、PyTorch と torchvision ライブラリを使用して画像セグメンテーションを行います。

コード全体を通して、サイズ変更、切り取り、標準化など、上で学んだ内容をカバーしています。

 import torch import torchvision.transforms as transforms from torchvision import models from PIL import Image import matplotlib.pyplot as plt # 下载示例图像!wget -O example_image.jpg https://pytorch.org/assets/deeplab/deeplab1.jpg # 定义图像转换transform = transforms.Compose([ transforms.Resize((256, 256)), # 调整大小transforms.ToTensor(), # 转换为张量transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) # 标准化]) # 加载并转换图像image_path = 'example_image.jpg' image = Image.open(image_path).convert("RGB") input_tensor = transform(image).unsqueeze(0) # 添加批次维度# 加载预训练的DeepLabV3模型model = models.segmentation.deeplabv3_resnet101(pretrained=True) model.eval() # 进行图像分割with torch.no_grad(): output = model(input_tensor)['out'][0] output_predictions = output.argmax(0) # 将预测结果转换为彩色图像def decode_segmap(image, nc=21): label_colors = np.array([(0, 0, 0), # 0: 背景(128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128), (128, 0, 128), # 1-5: 物体(0, 128, 128), (128, 128, 128), (64, 0, 0), (192, 0, 0), # 6-9: 道路(64, 128, 0), (192, 128, 0), (64, 0, 128), (192, 0, 128), # 10-13: 面部(64, 128, 128), (192, 128, 128), (0, 64, 0), (128, 64, 0), # 14-17: 植物(0, 192, 0), (128, 192, 0), (0, 64, 128)]) # 18-20: 建筑r = np.zeros_like(image).astype(np.uint8) g = np.zeros_like(image).astype(np.uint8) b = np.zeros_like(image).astype(np.uint8) for l in range(0, nc): idx = image == l r[idx] = label_colors[l, 0] g[idx] = label_colors[l, 1] b[idx] = label_colors[l, 2] rgb = np.stack([r, g, b], axis=2) return rgb # 将预测结果转换为彩色图像output_rgb = decode_segmap(output_predictions.numpy()) # 可视化原始图像和分割结果plt.figure(figsize=(12, 6)) plt.subplot(1, 2, 1) plt.imshow(image) plt.title('Original Image') plt.subplot(1, 2, 2) plt.imshow(output_rgb) plt.title('Segmentation Result') plt.show()

この場合、まず、サイズ変更、テンソルへの変換、正規化などの一連の画像変換関数を定義します。これらの変換により、入力画像がモデルの要件を満たすことが保証されます。

次に、サンプル画像が読み込まれ、これらの変換が適用されました。

次に、画像のセグメンテーションに、Torchvision で事前トレーニング済みの DeepLabV3 モデルを使用しました。出力では、予測の最大値のインデックスを抽出して、各ピクセルの予測クラスを取得しました。

最後に、予測をカラー画像に変換し、元の画像とセグメンテーション結果を視覚化します。

このケースは、画像セグメンテーションタスクにおける画像変換関数の重要な役割を強調し、入力画像がモデルの入力要件を満たし、出力結果を簡単に視覚化できることを保証します。

<<:  ニューラルネットワークにおける分位点回帰と分位点損失

>>:  Pytorch の最も重要な 9 つの操作! ! !

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

GPTストアはオンラインになるとすぐに混乱に陥り、偽造品、偽のトラフィック、禁止されたコンテンツが次々と出現します

新しくオープンしたGPTストアが「混沌」していることで有名になるとは思ってもいませんでした。見てくだ...

アリババが世界初のAI中国語フォント「Ali Hanyi Intelligent Bold」を開発

1月22日、アリババはHanyi Fontと提携し、世界初の人工知能中国語フォント「 Ali Han...

Nature の論文が xAI の目標を検証、人間の認知 AI が宇宙の本質を探る、マスク氏: 黙ってろ、金やるぞ!

馬氏は数日前にAIを使って宇宙の本質を探究することを目的としたAI企業xAIを発表したばかりだ。幸運...

スノーフレークアルゴリズムを学ぶのに役立つ記事

[[419666]]序文みなさんこんにちは、パンパンです!これまでは rand と srand を使...

...

ChatGPTに「カスタムコマンド」機能が追加されました

海外メディアの報道によると、7月21日、OpenAIはユーザーにChatGPTの応答に対する強化され...

人工知能は私たちの生活をどのように変えるのでしょうか?

人工知能は本質的に、人間の知的労働を解放するでしょう。今後、サービスがボトルネックとなり、サービス産...

スマートホームデバイスにおける ML と IoT の融合

人工知能は定期的に盛んに研究されている技術です。世界中の研究者が、AI の応用と実装をより迅速かつ効...

機械学習アルゴリズムのコレクション: ベイズ学習からディープラーニングまで、それぞれの長所と短所

私たちが日常生活で使用する推奨システム、インテリジェントな画像美化アプリケーション、チャットボットな...

...

英国で新たな自動運転規制が導入され、ドライバーはもはや「集中」する必要がなくなった

自動運転は近年市場で最も活発なトピックの1つです。資金が継続的に流入し、大手企業が存在感を示そうと競...

AI 異常検出は企業にどのようなメリットをもたらすのでしょうか?

翻訳者 |陳俊レビュー | Chonglou異常検出は、企業が競合他社よりも先に今後のトレンドを特定...

AIの原動力となるディープラーニング

[51CTO.com からのオリジナル記事] 人類が初めてプログラム可能なコンピューターを思いついた...

...

...