質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

325閲覧

pytorchでTensorで一番値が大きいインデックスの場所以外の値を0にしたい

hiroxile

総合スコア0

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/02/01 05:33

編集2023/02/02 23:13

実現したいこと

Pytorchで3次元のtensorがあり、tensor中のdim=1の中で値が一番大きい場所を1に、一番大きい値以外を0にしたいのですがどうすればいいでしょうか?

ご教授よろしくお願いします。

torch.argmaxやtorch.max、スライス処理など色々考えてみたんですがわからなかったです、、、

該当のソースコード

import torch x = torch.randn(4, 3, 1) print(x) tensor([[[ 0.4082], [ 2.0627], [ 0.7252]], [[ 0.7946], [ 0.2679], [-0.4184]], [[ 0.3380], [ 0.8403], [-1.7227]], [[-1.1250], [-1.8144], [ 1.4441]]])

以下のようにしたい

print(x) tensor([[[ 0], [ 1], [ 0]], [[ 1], [ 0], [0]], [[ 0], [ 1], [0]], [[0], [0], [ 1]]])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroxile

2023/02/02 14:13

そのような決まりがあることを認知しておりませんでした。申し訳ございません。今後はこのようなことがないようにしていきます。解決し次第対応します。
guest

回答1

0

python

1import torch 2 3x = torch.randn(4, 3, 1) 4print(x) 5print(torch.where(x == x.amax(axis=1, keepdims=True), 1, 0)) 6 7#tensor([[[ 2.1346], 8# [ 0.5483], 9# [ 2.1316]], 10# 11# [[-0.0500], 12# [ 0.4166], 13# [ 0.0440]], 14# 15# [[-0.6220], 16# [-0.8627], 17# [-1.5807]], 18# 19# [[-0.1179], 20# [-1.3226], 21# [-0.3129]]]) 22# 23#tensor([[[1], 24# [0], 25# [0]], 26# 27# [[0], 28# [1], 29# [0]], 30# 31# [[1], 32# [0], 33# [0]], 34# 35# [[1], 36# [0], 37# [0]]])

投稿2023/02/01 06:01

melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroxile

2023/02/02 03:20

meilian様回答ありがとうございます。 x.amax(axis=1, keepdims=True)はx.max(axis=1, keepdims=True).valuesと同じ操作ですか?
melian

2023/02/02 03:27

はい、その通りです。
hiroxile

2023/02/02 04:13

ありがとうございます。 これを用いてニューラルネットワークのトレーニングを行っているのですが、どうもうまく逆伝搬できていないような気がするのですがいかがでしょうか?(同じアカウントで他に質問しているのでそちらをみていただきたいです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問