Tensorflowの無効な引数:アサーションに失敗しました[ラベルIDは<n_classesである必要があります]

海の星

Python2.7を使用してTensorflow1.3.0でDNNClassifierを実装するとエラーが発生します。Tensorflowtf.estimator Quickstartチュートリアルからサンプルコードを入手し、それを独自のデータセット(3D座標と10個の異なるクラス(intラベル))で実行したいと思います。これが私の実装です:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def ReadLabels(file):
    #load the labels from test file here
    labelFile = open(file, "r")
    Label = labelFile.readlines();
    returnL = [[Label[i][j+1] for j in range(len(Label[0])-3)] for i in range(len(Label))]
    returnLint = list();
    for i in range(len(returnL)):
        tmp = ''
        for j in range(len(returnL[0])):
            tmp += str(returnL[i][j])
        returnLint.append(int(tmp))
    return returnL, returnLint

def NumpyReadBin(file,numcols,type):
    #load the data from binary file here
    import numpy as np
    trainData = np.fromfile(file,dtype=type)
    numrows = len(trainData)/numcols
    #print trainData[0:100]
    result = [[trainData[i+j*numcols] for i in range(numcols)] for j in range(numrows)]
    return result

def TensorflowDNN():
    #load sample dataset
    trainData = NumpyReadBin('data/TrainingData.dat',3,'float32')
    valData = NumpyReadBin('data/ValidationData.dat',3,'float32')
    testData = NumpyReadBin('data/TestingData.dat',3,'float32')
    #load sample labels
    trainL, trainLint = ReadLabels('data/TrainingLabels.txt')
    validateL, validateLint = ReadLabels('data/ValidationLabels.txt')
    testL, testLint = ReadLabels('data/TestingLabels.txt')

    import tensorflow as tf
    import numpy as np

    #get unique labels
    uniqueTrain = set()
    for l in trainLint:
        uniqueTrain.add(l)
    uniqueTrain = list(uniqueTrain)
    numClasses = len(uniqueTrain)
    numDims = len(trainData[0])

    #All features have real-value data
    feature_columns = [tf.feature_column.numeric_column("x", shape=[3])]

    # Build 3 layer DNN with 10, 20, 10 units respectively.
    classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
                                              hidden_units=[10, 20, 10],
                                              n_classes=numClasses,
                                              model_dir="../Classification/tmp")

    # Define training inputs
    train_input_fn = tf.estimator.inputs.numpy_input_fn(
                                                x={"x": np.array(trainData)},y=np.array(trainLint),
                                                num_epochs = None, shuffle = True)

    #Train the model
    classifier.train(input_fn = train_input_fn, steps = 2000)

    #Define Validation inputs
    val_input_fn = tf.estimator.inputs.numpy_input_fn(
                                                x={"x": np.array(valData)},y=np.array(validateLint),
                                                num_epochs = 1, shuffle = False)

    # Evaluate accuracy.
    accuracy_score = classifier.evaluate(input_fn=val_input_fn)["accuracy"]
    print("\nTest Accuracy: {0:f}\n".format(accuracy_score))

if __name__ == '__main__':
    TensorflowDNN()

関数RedLabels(...)NumpyReadBin(...)は、保存したデータセットをテンソルに読み込んでいます。ラベルはテキストファイルから読み取った整数であるため、関数は少し奇妙ですが、最終的に得られるのは、これらのラベルからの整数を含む配列です:[11、12、21、22、23、31、32 、33、41、42]。

ただし、を呼び出すclassifier.train(input_fn = train_input_fn, steps = 2000)と次のエラーが発生するため、何も分類できません

...Traceback and stuff like that...
InvalidArgumentError (see above for traceback): assertion failed: [Label IDs must < n_classes] [Condition x < y did not hold element-wise:x (dnn/head/labels:0) = ] [[21][32][42]...] [y (dnn/head/assert_range/Const:0) = ] [10]
[[Node: dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert = Assert[T=[DT_STRING, DT_STRING, DT_INT64, DT_STRING, DT_INT64], summarize=3, _device="/job:localhost/replica:0/task:0/cpu:0"](dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/Switch/_117, dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/data_0, dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/data_1, dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/Switch_1/_119, dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/data_3, dnn/head/assert_range/assert_less/Assert/AssertGuard/Assert/Switch_2/_121)]]

誰かが以前にこのエラーに遭遇したことがありますか、またはそれを解決する方法を知っていますか?データセット内のラベルのクラス/形式の数について不平を言っていると思いますが、trainLintには10の異なるクラスラベルが含まれていることを知っていますnumClassesこれが、の値ですそれは私のtrainLint配列のフォーマットでしょうか?

海の星

したがって、イシャント・ミナルが指摘した解決策は次のとおりです。

Tensorflowは、0からクラス数までの整数をクラスラベル(range(0, num_classes)として想定します。私の場合のような「任意の」数値ではありません。ありがとう!:)

...私が今出会った他のオプションはlabel_vocabulary、分類子定義にを追加することです。

classifier = tf.estimator.DNNClassifier(feature_columns=feature_columns,
                                          hidden_units=[10, 20, 10],
                                          n_classes=numClasses,
                                          model_dir=saveAt,
                                          label_vocabulary=uniqueTrain)

このオプションを使用すると、以前と同じようにラベルを定義して、文字列に変換できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

n_classes * make_classification関数では、n_clusters_per_classは2以下である必要があります

分類Dev

Tensorflow InvalidArgumentError:アサーションに失敗しました:[ラベルは<= n_classes-1である必要があります]

分類Dev

tensorflow.python.framework.errors_impl.InvalidArgumentError:無効な引数:アサーションに失敗しました:

分類Dev

残り火エラー:アサーションに失敗しました:fullNameは適切なフルネームである必要があります

分類Dev

Vuexアクションが正しく機能していません。「signInWithEmailAndPasswordが失敗しました:最初の引数「email」は有効な文字列である必要があります」というエラーを表示します

分類Dev

残り火エラー:アサーションに失敗しました: `findRecord()`に渡されるʻid`は空でない文字列または数値である必要があります

分類Dev

Emberアサーションに失敗しました:findQueryからの応答は、未定義ではなく配列である必要があります

分類Dev

エラー:静的アサーションに失敗しました:std :: thread引数は、右辺値への変換後に呼び出し可能である必要があります

分類Dev

Tensorflowエラー:無効な引数:形状はベクトルである必要があります

分類Dev

アサーションに失敗しました無効なspriteFrameName

分類Dev

確認に失敗しました:最初の引数「検証コード」は有効な文字列である必要があります

分類Dev

Tensorflowエラー:「ラベルIDは<n_classesでなければなりません」が、ラベルIDはこの要件をすでに満たしているようです

分類Dev

FIRESTORE(7.14.3)内部アサーションが失敗しました:値は未定義であるか、Uint8Arrayである必要があります

分類Dev

パーティションテーブルの再読み取りがエラー22で失敗しました:引数が無効です

分類Dev

Firebaseエラー「Reference.pushが失敗しました:2番目の引数は有効な関数である必要があります」を使用したユーザー登録とログイン

分類Dev

Firebase signInWithCredentialが失敗しました:最初の引数「credential」は有効な資格情報である必要があります

分類Dev

updatePhoneNumberが失敗しました:最初の引数「phoneCredential」は有効な電話資格情報である必要があります

分類Dev

Firebase 3-fetchProviderForEmailが失敗しました:最初の引数「email」は有効な文字列である必要があります

分類Dev

iTunesStoreの操作に失敗しましたエラーITMS-90396:「無効なアイコン。アルファチャネルがあります。アイコンにアルファチャネルを含めることはできません。」

分類Dev

「静的アサーションに失敗しました:テンプレート引数が整数型ではありません」エラーを修正する方法は?

分類Dev

CSV :: MalformedCSVError:改行は<"\ n \ r">である必要があります

分類Dev

「/」アプリケーションで「サーバーエラーが発生しました。無効なポストバックまたはコールバック引数。」そして私はそれを修正する方法がわかりません

分類Dev

「未処理の低レベルエラーが発生しました。アプリケーションログに詳細が含まれている可能性があります。」で失敗する巨大なマルチネストフォーム。

分類Dev

エラー/ langversionの無効なオプション '6'; ISO-1、ISO-2、3、4、5、またはデフォルトである必要があります

分類Dev

「アサーションに失敗しました:ランタイムの準備が整うまで待つ必要があります」JavaScriptでC関数を呼び出すときのエラー

分類Dev

Androidリソースのコンパイルに失敗しました:内部要素はリソース参照であるか、空である必要があります

分類Dev

引数のエラーはreact要素である必要がありますが、未定義を渡しました

分類Dev

PCWSTRがあり、WCHAR []である必要があります

分類Dev

Laravel Symfony / console、「無効な引数」が原因でインストールに失敗しましたか?

Related 関連記事

  1. 1

    n_classes * make_classification関数では、n_clusters_per_classは2以下である必要があります

  2. 2

    Tensorflow InvalidArgumentError:アサーションに失敗しました:[ラベルは<= n_classes-1である必要があります]

  3. 3

    tensorflow.python.framework.errors_impl.InvalidArgumentError:無効な引数:アサーションに失敗しました:

  4. 4

    残り火エラー:アサーションに失敗しました:fullNameは適切なフルネームである必要があります

  5. 5

    Vuexアクションが正しく機能していません。「signInWithEmailAndPasswordが失敗しました:最初の引数「email」は有効な文字列である必要があります」というエラーを表示します

  6. 6

    残り火エラー:アサーションに失敗しました: `findRecord()`に渡されるʻid`は空でない文字列または数値である必要があります

  7. 7

    Emberアサーションに失敗しました:findQueryからの応答は、未定義ではなく配列である必要があります

  8. 8

    エラー:静的アサーションに失敗しました:std :: thread引数は、右辺値への変換後に呼び出し可能である必要があります

  9. 9

    Tensorflowエラー:無効な引数:形状はベクトルである必要があります

  10. 10

    アサーションに失敗しました無効なspriteFrameName

  11. 11

    確認に失敗しました:最初の引数「検証コード」は有効な文字列である必要があります

  12. 12

    Tensorflowエラー:「ラベルIDは<n_classesでなければなりません」が、ラベルIDはこの要件をすでに満たしているようです

  13. 13

    FIRESTORE(7.14.3)内部アサーションが失敗しました:値は未定義であるか、Uint8Arrayである必要があります

  14. 14

    パーティションテーブルの再読み取りがエラー22で失敗しました:引数が無効です

  15. 15

    Firebaseエラー「Reference.pushが失敗しました:2番目の引数は有効な関数である必要があります」を使用したユーザー登録とログイン

  16. 16

    Firebase signInWithCredentialが失敗しました:最初の引数「credential」は有効な資格情報である必要があります

  17. 17

    updatePhoneNumberが失敗しました:最初の引数「phoneCredential」は有効な電話資格情報である必要があります

  18. 18

    Firebase 3-fetchProviderForEmailが失敗しました:最初の引数「email」は有効な文字列である必要があります

  19. 19

    iTunesStoreの操作に失敗しましたエラーITMS-90396:「無効なアイコン。アルファチャネルがあります。アイコンにアルファチャネルを含めることはできません。」

  20. 20

    「静的アサーションに失敗しました:テンプレート引数が整数型ではありません」エラーを修正する方法は?

  21. 21

    CSV :: MalformedCSVError:改行は<"\ n \ r">である必要があります

  22. 22

    「/」アプリケーションで「サーバーエラーが発生しました。無効なポストバックまたはコールバック引数。」そして私はそれを修正する方法がわかりません

  23. 23

    「未処理の低レベルエラーが発生しました。アプリケーションログに詳細が含まれている可能性があります。」で失敗する巨大なマルチネストフォーム。

  24. 24

    エラー/ langversionの無効なオプション '6'; ISO-1、ISO-2、3、4、5、またはデフォルトである必要があります

  25. 25

    「アサーションに失敗しました:ランタイムの準備が整うまで待つ必要があります」JavaScriptでC関数を呼び出すときのエラー

  26. 26

    Androidリソースのコンパイルに失敗しました:内部要素はリソース参照であるか、空である必要があります

  27. 27

    引数のエラーはreact要素である必要がありますが、未定義を渡しました

  28. 28

    PCWSTRがあり、WCHAR []である必要があります

  29. 29

    Laravel Symfony / console、「無効な引数」が原因でインストールに失敗しましたか?

ホットタグ

アーカイブ