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

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

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

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

Python

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

Q&A

1回答

241閲覧

Numpy ndarray とPyTorch tensor間のclass/データ変換について

inception

総合スコア14

PyTorch

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2023/02/04 01:46

編集2023/02/04 01:50

データ量の大きいmatrix や画像データの場合、NumPy とPyTorch間のデータ(class)変換を行う方式について確認したいですが、pythonにまだ不慣れなので方法を教えていただけませんか。
ここで「データ変換方式」または「class変換方式」というのは、データの本体をcopyするかどうかという意味です。
データ本体のアドレスをそのまま利用してのデータ変換とデータ本体のためのメモリを新規確保し、データ本体を複製して変換する場合と実行速度が全然違いますね!

どうぞ宜しくお願いします

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

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

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

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

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

inception

2023/02/04 04:18 編集

有難うございます copy()やclone()を付けなければ、NumpyとTorchの間でのデータ変換前後のメモリは共有しているのを確認できました。 片一方を変えたら、もう一方も変わります。
guest

回答1

0

【TENSOR → ndarray】
TORCH.TENSOR.NUMPY

引数force が False(デフォルト)の場合、条件が揃えば 返された ndarray とテンソルはストレージを共有するとのことです。

If force is False (the default), the conversion is performed only if the tensor is on the CPU, does not require grad, does not have its conjugate bit set, and is a dtype and layout that NumPy supports. The returned ndarray and the tensor will share their storage, so changes to the tensor will be reflected in the ndarray and vice versa.

【ndarray → TENSOR】
TORCH.FROM_NUMPY

返されたテンソルと ndarray は同じメモリを共有するとのことです。

The returned tensor and ndarray share the same memory. Modifications to the tensor will be reflected in the ndarray and vice versa. The returned tensor is not resizable.

投稿2023/02/04 04:15

meg_

総合スコア10580

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

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

inception

2023/02/04 08:58 編集

お丁寧なご回答ありがとうございます。 奥深いですね、良い勉強になりました! ただ、前段の英文の中の『If force is False (the default), the conversion is performed only if the tensor is on the CPU, 、、、、』について 当たり前のような話で、逆に "If force is True"はどうなるのでしょうか。
meg_

2023/02/04 08:59

リンク先はご覧になりましたか?ドキュメントの記載は下記です。 If force is True this is equivalent to calling t.detach().cpu().resolve_conj().resolve_neg().numpy(). If the tensor isn’t on the CPU or the conjugate or negative bit is set, the tensor won’t share its storage with the returned ndarray. Setting force to True can be a useful shorthand.
inception

2023/02/05 02:45

ご回答本当にありがとうございます。 ごめんなさい!! 馬鹿なミスをしました❣ 本来質問したいのは、 「逆に "If force is NOT True"はどうなるのでしょうか。」でした。 大変申し訳ございませんでした。 
meg_

2023/02/05 03:14

> 「逆に "If force is NOT True"はどうなるのでしょうか。」でした。 何をお聞きになりたいのでしょうか?パラメータ値にTrue, False以外のものを設定することに意味はないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問