ニューラルネットで2クラス分類をTPUを用いて行うプログラムを作っています。
約18万のデータがあり、
x には400次元のnumpy型配列
y には0または1の2値が入っています。
Google Colab上で実行しています。
当方Chainerを使っていましたが、データ量が多く処理に時間がかかるためTPUを使えるKerasを初めて触りました。
実行したところ、1Epochはうまく終えるものの、その後にエラーが発生します。
エラー内容がどうなっているのかもわかりませんが、ご教授をお願いしたいです。
ソースコードは以下です。
python3
1import numpy as np 2from sklearn.model_selection import train_test_split 3import tensorflow as tf 4from tensorflow import keras as keras 5import os 6from tensorflow.contrib.tpu.python.tpu import keras_support 7 8 9x = np.load(file="alltrain.npy").astype(np.float32) 10y = np.load(file="alllabel.npy") 11y = np.array(y,dtype=np.float32) 12 13x_train, x_test, y_train, y_test = train_test_split(x,y,train_size=0.7) 14 15 16tpu_grpc_url = "grpc://"+os.environ["COLAB_TPU_ADDR"] 17tpu_model = tf.contrib.cluster_resolver.TPUClusterResolver(tpu_grpc_url) 18tf.contrib.distribute.initialize_tpu_system(tpu_model) 19strategy = tf.contrib.distribute.TPUStrategy(tpu_model, steps_per_run=100) 20with strategy.scope(): 21 model = keras.models.Sequential() 22 model.add(keras.layers.Dense(units=800,input_dim=400)) 23 model.add(keras.layers.Activation('sigmoid')) 24 model.add(keras.layers.Dense(units=2)) 25 model.add(keras.layers.Activation('softmax')) 26 model.compile(loss='sparse_categorical_crossentropy',optimizer='Adam',metrics=['accuracy']) 27 model.fit(x_train,y_train,epochs=30,batch_size=32,steps_per_epoch=x_train.shape[0] // 32, validation_steps=x_test.shape[0] // 32) 28 score = model.evaluate(x_test, y_test, batch_size=1) 29print(score[1])
エラーコードは以下です。
Error
1W0830 14:12:50.895482 139959299786624 tpu_strategy_util.py:56] TPU system %s has already been initialized. Reinitializing the TPU can cause previously created variables on TPU to be lost. 2Epoch 1/30 34000/4066 [============================>.] - ETA: 0s - loss: 0.6156 - acc: 0.7041 4--------------------------------------------------------------------------- 5TypeError Traceback (most recent call last) 6<ipython-input-43-b9e2703621db> in <module>() 7 25 model.add(keras.layers.Activation('softmax')) 8 26 model.compile(loss='sparse_categorical_crossentropy',optimizer='Adam',metrics=['accuracy']) 9---> 27 model.fit(x_train,y_train,epochs=30,batch_size=32,steps_per_epoch=x_train.shape[0] // 32, validation_steps=x_test.shape[0] // 32) 10 28 score = model.evaluate(x_test, y_test, batch_size=1) 11 29 print(score[1]) 12 1312 frames 14/usr/local/lib/python3.6/dist-packages/tensorflow/python/data/ops/dataset_ops.py in get_structure(dataset_or_iterator) 15 2001 pass 16 2002 raise TypeError("`dataset_or_iterator` must be a Dataset or Iterator object, " 17-> 2003 "but got %s." % type(dataset_or_iterator)) 18 2004 19 2005 20 21TypeError: `dataset_or_iterator` must be a Dataset or Iterator object, but got <class 'NoneType'>.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。