

機械学習の予測プログラムを作っているのですが，tensorflowで書いたモデルとpytorchで書いたモデルの2つを作っています．  
tensorflowベースで書いた予測モデルをpytorchベースのものに変換したいのですが，うまく行かないです．どのように対処すべきでしょうか？ご教示の程，お願い致します．

**処理の流れ:**

  1. 10秒間データを習得し（1×8配列），リストに入れる．
  2. その最頻値を出し，その最大値を別のリストに入れる．
  3. その値を計算グラフで計算する．

print(data) → `[1,4,5,6,7,3,1,3], [1,2,3,4,5,6,7,8],,,,` です．

### エラーメッセージ

[code]

    response = np.argmax(np.bincount(temp))# numpy形式
    File "<__array_function__ internals>", line 6, in bincount
    only one element tensors can be converted to Python scalars
    
[/code]

### コード

[code]

    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()  # 取得する筋電信号
                if time.time() - start >= 10:
                    response = np.argmax(np.bincount(temp))# numpy形式
                    response = torch.tensor(response)　# tensorに変換
                    print(response)
                    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)
    
[/code]


CC BY-SA 4.0
2021-01-06T06:29:02.203
73117
2021-02-07T16:46:45.053
2021-02-07T16:46:45.053
3060
41671
question
python numpy pytorch
numpyからpytorchへの変換


状況をしっかり把握できているわけではないのですが、  
`response = np.argmax(np.bincount(temp))# numpy形式`  
の箇所で`temp`の型が何か合わないのではないかと思いました。

今手元の環境で動かしてみたところ、例えば以下であれば通るようです。  
`np.bincount(([1,2,3,4,1,2,3,4]))`  
`np.bincount(np.array([1,2,3,4,1,2,3,4]))`  
今は`temp`の形状はどのようになっているでしょうか？1月6日のコメントで

> データは以下のような形です．[(1609922196940975, [-2, 0, 2, -1, 2, 0, 1, 1]),
> (1609922196940975, [2, 0, 0, -1, 0, 0, -2, 1]),，，，，

とありますが、こちらは`temp`のことでしょうか？私の環境下で

[code]

    temp = [(1609922196940975, [-2, 0, 2, -1, 2, 0, 1, 1]), (1609922196940975, [2, 0, 0, -1, 0, 0, -2, 1])]
    np.argmax(np.bincount(temp))
    
[/code]

を実行したところ、発生したエラーは`ValueError: object too deep for desired
array`となったので、それとは違うのかなと思ったのですが…。  
tempの型を変換してみて、もしくは具体的な値を入力してみて、通りそうな型を探ってみるのはいかがでしょうか。


CC BY-SA 4.0
2021-02-07T15:44:06.783
73850
2021-02-07T15:44:06.783
30785
73117
answer