2016-10-18 3 views
0

次のコードがあります。これはCNNEnvクラス内にあります。train_on_batch最初のバッチ成功後のバッチエラー

def step(self, a_t, i): 
     self.a_t = a_t 
     self.i = i 

     # Batch size of 32 
     # 1875 * 32 = 60000 -> # of training samples 
     self.X_train = self.X_train[self.i * 32:(self.i + 1) * 32] 
     self.y_train = self.y_train[self.i * 32:(self.i + 1) * 32] 

     # Train & evaluate one iteration 
     self.model.train_on_batch(self.X_train, self.y_train) 
     self.scores = self.model.test_on_batch(self.X_test, self.y_test) 
     self.scores = self.scores[1] * 100 

     return self.X_train.shape, self.y_train.shape, self.scores 

以下は、これを呼び出す外部スクリプトです。それは最初の反復のために働く。ただし、2回目の繰り返しではエラーが発生します。奇妙なことは、私は次の操作を実行した場合、私はクラスを使用せずに二回train_on_batchを呼び出すときに、それが動作することである

First batch: 
(32, 1, 28, 28) 
(32, 10) 
9.42000001669 
Error on second batch: 
F tensorflow/stream_executor/cuda/cuda_dnn.cc:422] could not set cudnn tensor descriptor: CUDNN_STATUS_BAD_PARAM 

最初のバッチ後

from CNN import CNNEnv 

# Instantiate class and assign to object env 
env = CNNEnv() 

# Call function within class 
a, b, c = env.step(0.001, 1) 

print(a) 
print(b) 
print(c) 


# Call function within class second time 
d, e, f = env.step(0.001, 2) 

print(d) 
print(e) 
print(f) 

エラー。しかし、私の外部スクリプトはこのように関数を呼び出さなければならないので、クラスが必要です。何か案が?

答えて

0

解決しました。ユーザーエラー。変数割り当ての問題。

self.X_trainの代わりにself.X_batchを使用する必要があります。誰かがそれに直面している場合、これは問題を解決するだろう。

関連する問題