Kerasモデルへのトレーニング入力としてtf.data.Datasetを使用しても機能しない

Elisio Quintino

numpy配列を機能とラベルとして使用して、TensorflowでKerasモデルをトレーニングするための簡単なコードがあります。次にtf.data.Dataset.from_tensor_slices、テンソルフローデータセットを使用して同じKerasモデルをトレーニングするために、を使用してこれらのnumpy配列をラップすると、エラーが発生します。理由を理解できませんでした(テンソルフローまたはkerasのバグである可能性がありますが、何かが不足している可能性もあります)。私はPython3を使用しており、tensorflowは1.10.0、numpyは1.14.5、GPUは関与していません。

OBS1tf.data.DatasetをKeras入力として使用する可能性は、https://www.tensorflow.org/guide/kerasのInputtf.datadatasets」の下に示されています

OBS2:以下のコードでは、「#Train with numpy arrays」の下のコードがnumpy配列を使用して実行されています。このコードにコメントを付け、#Train with tf.data datasets代わりに」の下のコードを使用すると、エラーが再現されます。

OBS3:コメントで「###WORKAROUND 1###」で始まる13行目で、コメントを削除してに使用するtf.data.Dataset inputsと、理由がよくわからなくてもエラーが変わります。

完全なコードは次のとおりです。

import tensorflow as tf
import numpy as np

np.random.seed(1)
tf.set_random_seed(1)

print(tf.__version__)
print(np.__version__)

#Import mnist dataset as numpy arrays
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()#Import
x_train, x_test = x_train / 255.0, x_test / 255.0 #normalizing
###WORKAROUND 1###y_train, y_test = (y_train.astype(dtype='float32'), y_test.astype(dtype='float32'))

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1]*x_train.shape[2])) #reshaping 28 x 28 images to 1D vectors, similar to Flatten layer in Keras

batch_size = 32
#Create a tf.data.Dataset object equivalent to this data
tfdata_dataset_train = tf.data.Dataset.from_tensor_slices((x_train, y_train))
tfdata_dataset_train = tfdata_dataset_train.batch(batch_size).repeat()

#Creates model
keras_model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(512, activation=tf.nn.relu),
    tf.keras.layers.Dropout(0.2, seed=1),
    tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

#Compile the model
keras_model.compile(optimizer='adam',
                    loss=tf.keras.losses.sparse_categorical_crossentropy,
                    metrics=['accuracy'])

#Train with numpy arrays
keras_training_history = keras_model.fit(x_train,
                y_train,
                initial_epoch=0,
                epochs=1,
                batch_size=batch_size
                )

#Train with tf.data datasets
#keras_training_history = keras_model.fit(tfdata_dataset_train,
#                initial_epoch=0,
#                epochs=1,
#                steps_per_epoch=60000//batch_size
#                )

print(keras_training_history.history)

tf.data.Dataset入力として使用するときに観察されるエラー次のとおりです

(...)
ValueError: Tensor conversion requested dtype uint8 for Tensor with dtype float32: 'Tensor("metrics/acc/Cast:0", shape=(?,), dtype=float32)'

During handling of the above exception, another exception occurred:

(...)
TypeError: Input 'y' of 'Equal' Op has type float32 that does not match type uint8 of argument 'x'.

上記のOBS3コメントされているように、13行目からコメントを削除するときのエラーは次のとおりです

(...)
tensorflow.python.framework.errors_impl.InvalidArgumentError: In[0] is not a matrix
     [[Node: dense/MatMul = MatMul[T=DT_FLOAT, _class=["loc:@training/Adam/gradients/dense/MatMul_grad/MatMul_1"], transpose_a=false, transpose_b=false, _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_sequential_input_0_0, dense/MatMul/ReadVariableOp)]]

エラーを再現できたというコメントを含め、ご協力いただければ幸いです。その場合は、バグを報告できます。

Elisio Quintino

tf-nightlyビルドをインストールし、いくつかのテンソルのdtypeを変更すると(tf-nightlyをインストールするとエラーが変化します)、問題が解決したので、(うまくいけば)1.11で解決される問題です。

関連資料:https//github.com/tensorflow/tensorflow/issues/21894

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

tf.data.Datasetを使用してDLモデルをトレーニングする

分類Dev

あなたの入力を投げて「tf.dataは()」は、データが不足しています。中断トレーニング

分類Dev

以前にトレーニングされたtf.kerasモデルを事前トレーニングとして使用しようとしていますが、「ValueError:レイヤーdense_3の入力0はlayeと互換性がありません

分類Dev

Kerasマルチ入力モデルのtf.data.Datasetを発行します

分類Dev

基本的な低レベルのTensorFlowトレーニングループを使用したtf.kerasモデルのトレーニングが機能しない

分類Dev

tf.keras:tf.data.Datasetを入力として使用すると、model.updatesの評価が中断します

分類Dev

Tensorflow 2.2で複数の入力を使用してKerasモデルをトレーニングする方法は?

分類Dev

Pandas / Keras:DataFrameからのデータを使用してKerasモデルをトレーニングします。入力形状が間違っています

分類Dev

Tensorflow2のtf.data.Dataset.from_generatorを使用したkerasモデルの複数の入力

分類Dev

正規表現を使用しているときにstr_replace_all()を使用してもdata.table列で機能しない

分類Dev

KerasのGlobalAveragePooling2D()レイヤーへの入力としてVGG-16から事前にトレーニングされた機能を使用する方法

分類Dev

tf.Dataを使用してトレーニング/テストの要約を解決しようとしています

分類Dev

Macbook Pro 13でビデオ入力を使用してKerasモデルをトレーニングすると、「Killed:9」ステータスになります

分類Dev

Kerasでトレーニングされたモデルを使用して入力画像を予測する方法は?

分類Dev

Kerasでトレーニング済みモデルを使用して入力画像を予測する方法は?

分類Dev

Kerasシーケンシャルモデルレイヤーへの入力としての3Dデータのフィッティング

分類Dev

SmartyStreetsを使用しても何も機能しない

分類Dev

SmartyStreetsを使用しても何も機能しない

分類Dev

すべての反復でモデルをトレーニングしながら入力を出力します

分類Dev

lstmとkerasを使用してモデルをトレーニングする

分類Dev

複数の入力を持つKerasモデルのトレーニング

分類Dev

Kerasマルチ入力モデルの損失が急落し、トレーニングしません

分類Dev

tf.data APIを使用してtfrecordデータをロードし、モデルをトレーニングしましたが、結果は変わりませんでした

分類Dev

複数のKerasモデルを使用してTF2カスタムトレーニングループに勾配を適用する正しい方法

分類Dev

tf.Data.Dataset-各エポックで、完全なデータセットのサブサンプルでのみトレーニングします

分類Dev

WSO2 Data ServicesServerを使用したスケジュールされたデータベースポーリングが機能していない

分類Dev

divでホバーを使用しても機能しない

分類Dev

CoreBluetoothで2つの特性を使用しても機能しない

分類Dev

シャッフルされたtf.dataを使用したKerasトレーニング:トレーニングが中断された場合、最後のデータ反復/最後に保存されたチェックポイントの順序でトレーニングを続行する方法

Related 関連記事

  1. 1

    tf.data.Datasetを使用してDLモデルをトレーニングする

  2. 2

    あなたの入力を投げて「tf.dataは()」は、データが不足しています。中断トレーニング

  3. 3

    以前にトレーニングされたtf.kerasモデルを事前トレーニングとして使用しようとしていますが、「ValueError:レイヤーdense_3の入力0はlayeと互換性がありません

  4. 4

    Kerasマルチ入力モデルのtf.data.Datasetを発行します

  5. 5

    基本的な低レベルのTensorFlowトレーニングループを使用したtf.kerasモデルのトレーニングが機能しない

  6. 6

    tf.keras:tf.data.Datasetを入力として使用すると、model.updatesの評価が中断します

  7. 7

    Tensorflow 2.2で複数の入力を使用してKerasモデルをトレーニングする方法は?

  8. 8

    Pandas / Keras:DataFrameからのデータを使用してKerasモデルをトレーニングします。入力形状が間違っています

  9. 9

    Tensorflow2のtf.data.Dataset.from_generatorを使用したkerasモデルの複数の入力

  10. 10

    正規表現を使用しているときにstr_replace_all()を使用してもdata.table列で機能しない

  11. 11

    KerasのGlobalAveragePooling2D()レイヤーへの入力としてVGG-16から事前にトレーニングされた機能を使用する方法

  12. 12

    tf.Dataを使用してトレーニング/テストの要約を解決しようとしています

  13. 13

    Macbook Pro 13でビデオ入力を使用してKerasモデルをトレーニングすると、「Killed:9」ステータスになります

  14. 14

    Kerasでトレーニングされたモデルを使用して入力画像を予測する方法は?

  15. 15

    Kerasでトレーニング済みモデルを使用して入力画像を予測する方法は?

  16. 16

    Kerasシーケンシャルモデルレイヤーへの入力としての3Dデータのフィッティング

  17. 17

    SmartyStreetsを使用しても何も機能しない

  18. 18

    SmartyStreetsを使用しても何も機能しない

  19. 19

    すべての反復でモデルをトレーニングしながら入力を出力します

  20. 20

    lstmとkerasを使用してモデルをトレーニングする

  21. 21

    複数の入力を持つKerasモデルのトレーニング

  22. 22

    Kerasマルチ入力モデルの損失が急落し、トレーニングしません

  23. 23

    tf.data APIを使用してtfrecordデータをロードし、モデルをトレーニングしましたが、結果は変わりませんでした

  24. 24

    複数のKerasモデルを使用してTF2カスタムトレーニングループに勾配を適用する正しい方法

  25. 25

    tf.Data.Dataset-各エポックで、完全なデータセットのサブサンプルでのみトレーニングします

  26. 26

    WSO2 Data ServicesServerを使用したスケジュールされたデータベースポーリングが機能していない

  27. 27

    divでホバーを使用しても機能しない

  28. 28

    CoreBluetoothで2つの特性を使用しても機能しない

  29. 29

    シャッフルされたtf.dataを使用したKerasトレーニング:トレーニングが中断された場合、最後のデータ反復/最後に保存されたチェックポイントの順序でトレーニングを続行する方法

ホットタグ

アーカイブ