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