1. ホーム
  2. python

[解決済み] Pythonです。DeprecationWarning: エレメント単位の == 比較に失敗しました; これは将来的にエラーになります。

2022-02-12 03:20:09

質問

自分のモデルの予測値とトレーニングセットのラベルを比較する際に、問題に遭遇しました。私が使用している配列は形状を持っています。

<ブロッククオート

学習セット (200000, 28, 28) (200000,)
バリデーションセット (10000, 28, 28) (10000,)
テストセット (10000, 28, 28) (10000,)

ただし、関数で精度を確認する場合。

def accuracy(predictions, labels):
    return (100.0 * np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))
          / predictions.shape[0])

くれるんです。

<ブロッククオート

C:\UsersArslan╱Anaconda3╱lib╱packages╱ipykernel_launcher.py:5: DeprecationWarning: elementwise == comparison failed; this will raise an error in the future. """

そして、すべてのデータセットで精度は0%と表示されます。

配列の比較に '==' は使えないと思います。 . どうすれば正しい方法で配列を比較できるのでしょうか?

どのように解決するのですか?

この式でエラーが発生しているのでしょう。

np.sum(np.argmax(predictions, 1) == np.argmax(labels, 1))

2つのアレイについて教えてください。 predictions , labels ? 通常のもの - dtype、shape、いくつかのサンプル値。 さらにもう一歩踏み込んで np.argmax(...) を、それぞれ使ってください。

numpy は同じサイズの配列を比較することができますが、サイズが一致しない配列の比較にはうるさくなっています。

In [522]: np.arange(10)==np.arange(5,15)
Out[522]: array([False, False, False, False, False, False, False, False, False, False], dtype=bool)
In [523]: np.arange(10)==np.arange(5,14)
/usr/local/bin/ipython3:1: DeprecationWarning: elementwise == comparison failed; this will raise an error in the future.
  #!/usr/bin/python3
Out[523]: False