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

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

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

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

NumPy

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

Python

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

Q&A

0回答

1453閲覧

numpy からpytorchのtensorにする方法

tazaryu

総合スコア6

PyTorch

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

NumPy

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

Python

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

0グッド

0クリップ

投稿2021/01/05 05:49

編集2021/01/05 12:13

機械学習の予測モデルを作成しており,2種類の方法で作成しています.
1つはtesorflowベースで作成して,完成したのですが,pytorchベースで作りたいと思い,現在,pytorchベースでの予測メゾット用のコードを作成しています.完成した方のプログラムではnumpy型配列でデータを取得して,リストに入れて,そのリストの中の要素数がある一定の数になったら,ラベルを予測するようにしています.それをpytorchベースのほうでも行いたいのですが,うまく行かないで,どなたかご教示の程,よろしくお願い致します.
単純にコード変えるだけだけでうまく行くと思ったのですが,うまくいうまく行きませんでした.
Ex) response = np.argmax(np.bincount(temp))# numpy形式

response = torch.argmax(torch.bincount(temp)) # tensor形式
###やりたいこと
得られるデータの最頻値を計算し、その最大要素のインデントを求めます。response
インデントをリストに入れますtemp

次に64個要素がリストに入ったら(tmp)
計算グラフで計算します。
この流れです
###エラー文

response = torch.argmax(torch.bincount(temp)) RuntimeError: "bincount_cpu" not implemented for 'Float'

元々のコード tensroflowとnumpy形式

from collections import deque from threading import Lock import myo import time import numpy as np import tensorflow as tf from include.model import model from time import sleep x, y, output, global_step, y_pred_cls = model() saver = tf.train.Saver() _SAVE_PATH = "./data/tensorflow_sessions/myo_armband/" # "C:/Users/name/Desktop/myo-python-1.0.4/myo-armband-nn-master/data/tensorflow_sessions/myo_armband/" #sleep(0.1) sess = tf.Session() try: print("Trying to restore last checkpoint ...") last_chk_path = tf.train.latest_checkpoint(checkpoint_dir=_SAVE_PATH) print(last_chk_path) saver.restore(sess, save_path=last_chk_path) print("Restored checkpoint from:", last_chk_path) except: print("Failed to restore checkpoint. Initializing variables instead.") sess.run(tf.global_variables_initializer()) class MyListener(myo.DeviceListener): """ classe en écoute d'un myo """ def __init__(self, queue_size=8): self.lock = Lock() self.pose = myo.Pose.rest # pose quelconque self.connected = False # non connecté self.battery_level = 100 # niveau de batterie maximal self.emg_enabled = False # on acquiert pas les EMG self.locked = False # myo non vérouillé self.rssi = None # aucune valeur de force du signal bluetooth self.emg = None # données null des emg self.device_name = None # pas de nom du myo self.device = None self.myo_firmware = None self.arm = None self.x_direction = None self.sync = None def on_emg(self, event): with self.lock: self.emg_data_queue.append((event.timestamp, event.emg)) def get_emg_data(self): with self.lock: return list(self.emg_data_queue) if __name__ == '__main__': myo.init(bin_path=r'C:\Users\name\Desktop\myo-sdk-win-0.9.0\bin') HUB = myo.Hub() listener = MyListener() start = time.time() temp = [] with HUB.run_in_background(listener.on_event): while True: data = listener.get_emg_data() # 得られたキューをリストにします. if time.time() - start >= 10: response = np.argmax(np.bincount(temp)) # 最頻値の最大値のインデックスを返します. print("Predicted gesture: {0}".format(response)) temp = []# それらをリストに入れます. start = time.time() if len(data) > 0: tmp = []  # 空のリストを入れます. for v in listener.get_emg_data(): tmp.append(v[1])  # データを1つずつ読み込み,リストに入れます. tmp = list(np.stack(tmp).flatten()) if len(tmp) >= 64: #>=64 データの数が64個になったら pred = sess.run(y_pred_cls, feed_dict={x: np.array([tmp])}) # 計算グラフで計算します.(モデル) temp.append(pred[0])   # 予測ラベルをtempに入れます,                      with open("name1_pred_ANN.csv", "a") as f: np.savetxt(f, pred, fmt="%s", delimiter=",") sleep(0.01) コード

現在,実装中のコードpytorchベース,numpy形式から変換したい場所だけ記載します.

if __name__ == '__main__': myo.init(bin_path=r'C:\Users\name\Desktop\myo-sdk-win-0.9.0\bin') HUB = myo.Hub() model.eval() listener = MyListener() start = time.time() temp = [] with HUB.run_in_background(listener.on_event): while True: data = listener.get_emg_data() # 得られたキューをリストにします #print(temp) if time.time() - start >= 1: #response = np.argmax(np.bincount(temp))# **numpy形式** 最頻値の最大のインデックス返す temp = torch.stack(temp, dim=1) response = torch.argmax(torch.bincount(temp)) **エラー箇所** response.tolist() print("Predicted gesture: {0}".format(response)) temp = [] start = time.time() if len(data) > 0: # len(data) = 8 tmp = [] for v in listener.get_emg_data(): tmp.append(v[1]) tmp = list(np.stack(tmp).flatten()) tmp = torch.tensor(tmp) # tensor型に変換(listの中身を) #print(tmp) if len(tmp) >= 64: pred = model(tmp) #pred = torch.mean(_,predicted, feed_dict={x: np.array([tmp])}) #pred = sess.run(y_pred_cls, feed_dict={x: np.array([tmp])}) print(pred) temp.append(pred[0]) sleep(0.01)

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問