前提・実現したいこと
現在,Pythonのtensorflowでprdict.pyという未知の値を予測するためのart neural netのコードを書いています.
argmax の値が空というエラーが出ており,行列値が取得できません.
直接,値を入れたりとしたのですが(temp = [1, 1, 2]のように),違うような感じがします.下にコードをを記載させていただきますが、temp = [] という部分がおそらくエラーの原因ではないかと考えております.
また,参考に致しましたソースコードは以下のリンクのものです.(predict.py)
https://github.com/exelban/myo-armband-nn
エラー文は以下のようなものです
ValueError: attempt to get argmax of an empty sequence
よろしければ,ぜひご教示頂きたいです.何卒,よろしく,お願いいたします.
発生している問題・エラーメッセージ
エラーメッセージ
Failed to restore checkpoint. Initializing variables instead. Traceback (most recent call last): File "C:\Users\ユーザー名\Desktop\myo-python-1.0.4\myo-armband-nn-master\predict.py", line 57, in <module> response = np.argmax(np.bincount(temp)) File "<_arry_function_internals>", line 6, in argmax return_wrapfunc(a, 'argmax', axis=axis, out=out) File "C:\Program Files\Python36\lib\site-packages\numpy\core\fromnumeric.py", line 56, in _wrapfunc return bound(*args, **kwds) ValueError:attempt to get argmax of an empty sequence [Finished in 8.365s] ### 該当のソースコード `````` import collections import myo import threading import time import numpy as np import tensorflow as tf from include.model import model x, y, output, global_step, y_pred_cls = model() saver = tf.train.Saver() _SAVE_PATH = "C:/Users/ユーザー名/Desktop/myo-python-1.0.4/myo-armband-nn-master/data/tensorflow_sessions/myo_armband/" #"./data/tensorflow_sessions/myo_armband/" 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): def __init__(self, queue_size=8): self.lock = threading.Lock() self.emg_data_queue = collections.deque(maxlen=queue_size) def on_connect(self, device, timestamp, firmware_version): device.set_stream_emg(myo.StreamEmg.enabled) def on_emg_data(self, device, timestamp, emg_data): with self.lock: self.emg_data_queue.append((timestamp, emg_data)) def get_emg_data(self): with self.lock: return list(self.emg_data_queue) myo.init('C:/Users/ユーザー名/Desktop/myo-python-1.0.4/myo64.dll') hub = myo.Hub() start = time.time() temp = [] ☚ ここではないかと思います. try: listener = MyListener() hub.run(listener, 2000) while True: data = listener.get_emg_data() if time.time() - start >= 1: 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]) tmp = list(np.stack(tmp).flatten()) if len(tmp) >= 64: pred = sess.run(y_pred_cls, feed_dict={x: np.array([tmp])}) temp.append(pred[0]) time.sleep(0.01) finally: sess.close()
試したこと
おそらくtemp[]の表現の仕方が間違っていると推測し,直接行列値を代入などしましたが,うまくいきませんでした.
補足情報(FW/ツールのバージョンなど)
大変お手数ですが,何卒,よろしくお願いいたします.
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー