超強力な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 つの操作! ! !

ブログ    
ブログ    
ブログ    

推薦する

ディープラーニング プロジェクトをゼロから構築するにはどうすればよいでしょうか?詳細なチュートリアルはこちら

ディープラーニングに関する理論コースを受講した後、多くの人が独自のプロジェクトを構築してみることに興...

AI+中国製 Baidu Brain が蘇州にご招待し、「インテリジェント」製造についてお話しします

「Made in China」は世界で最も認知されているラベルの一つです。 「Made in Chi...

AI、機械学習、ディープラーニングの違いは何ですか?

人工知能 (AI) は未来だと言う人もいれば、AI は SF だと言う人もいれば、AI は私たちの日...

農業生産の効率性を向上させるために、知能ロボットが力を発揮している

現在、知能ロボットは急速な発展期に入り、生活のあらゆる分野で非常に重要な役割を果たし、人類にとっての...

...

ワンクリックで細い毛を切り取る。これはAdobeの最新のAI切り抜きアルゴリズムで、近日公開予定

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

企業は今年AIに500億ドルを費やすが、成果はあまり出ないだろう

Uberは過去5年間で25億ドルを費やしてきたが、自動運転車による配達の実現にはまだ程遠い。今年の世...

AIがいかにして驚異的なコードフローチャートを正確に生成するか

みなさんこんにちは、私はムチュアンですAI がなければ、コードを読み、自分の理解に基づいて XMin...

Reverse Midjourneyがオンラインになりました!デジタルアーティストがスティーブ・ジョブズに魅了され、写真がボルヘスの精神世界に入る

ブラウザに住むアーティストが開発した、ニューヨーク発のAIカメラアプリが人気を集めている。もしスティ...

スマートセンサー: 従業員をオフィスに戻すための鍵となるか?

新型コロナウイルス感染症のパンデミックにより、多くの人々の働き方が変化しました。現在、多くの企業は、...

インテル、コード名「NLP Architect」の自然言語処理用オープンソースライブラリを発表

[[230933]] 1年前に設立されたインテルAIラボは最近、新たな動きを見せている。数日前、In...

...

展望: 2023 年のディープラーニングとメタバースの未来

ディープラーニング (DL) は、再帰型ニューラル ネットワーク、長期短期記憶、畳み込みニューラル ...

AI と機械学習: 大きなデマか、それとも大きな希望か?

ダニング=クルーガー効果は重大なバイアスです。これは、能力の低い人が自分の軽率な決断に基づいて誤った...