我在tensorflow中得到了一个异常,它没有停止程序,而是在te输出中弹出,并且在异常之后出现故障。但是,追溯并不能真正地跟踪问题,回到我可以修复的有用点。只是一些模糊的指数错误。
下面是我的剧本
def make_model(layers , model_type):
tf.compat.v1.reset_default_graph()
convnet = input_data(shape=[None,STANDARDIZED_IMAGE_SIZE,STANDARDIZED_IMAGE_SIZE, 1], name='input')
convnet = conv_2d(convnet, 32, 5, activation='relu')
convnet = max_pool_2d(convnet, 5)
convnet = conv_2d(convnet, 64, 5, activation='relu')
convnet = max_pool_2d(convnet, 5)
convnet = conv_2d(convnet, 128, 5, activation='relu')
convnet = max_pool_2d(convnet, 5)
convnet = conv_2d(convnet, 64, 5, activation='relu')
convnet = max_pool_2d(convnet, 5)
convnet = conv_2d(convnet, 32, 5, activation='relu')
convnet = max_pool_2d(convnet, 5)
convnet = fully_connected(convnet, 1024, activation='relu')
convnet = dropout(convnet, 0.8)
convnet = fully_connected(convnet, 2, activation='softmax')
convnet = regression(convnet, optimizer='adam', learning_rate=LR, loss='categorical_crossentropy', name='targets')
model = tflearn.DNN(convnet, tensorboard_dir=actual_dir, tensorboard_verbose=3)
model.save(actual_dir+"/"+MODEL_NAME)
return model
def find_model_accuracy(model , test_features, test_labels):
test_results = {}
test_results['model'] = model.evaluate(test_features, test_labels)
print(f" Accuracy: {test_results}")
X = np.array([i[0] for i in train]).reshape(-1,STANDARDIZED_IMAGE_SIZE,STANDARDIZED_IMAGE_SIZE,1)
Y = [i[1] for i in train]
test_x = np.array([i[0] for i in test]).reshape(-1,STANDARDIZED_IMAGE_SIZE,STANDARDIZED_IMAGE_SIZE,1)
test_y = [i[1] for i in test]
model_1 = make_model(layers , 1)
print(" model made ")
model_1.fit({'input': X}, {'targets': Y},validation_set=({'input': test_x}, {'targets': test_y}), n_epoch=1 , snapshot_step=500, show_metric=True, run_id=MODEL_NAME)
print(" model trained ")
acc1 = find_model_accuracy(model_1 , test_y, test_x)
print("-------------------------------------")
print(X.ndim)
print(X.shape)
print("-------------------------------------")
print(test_x.ndim)
print(test_x.shape)
print("-------------------------------------")从而产生这个输出。
Training Step: 12 | total loss: 0.62046 | time: 22.450s
| Adam | epoch: 001 | loss: 0.62046 - acc: 0.6685 -- iter: 768/830
Training Step: 13 | total loss: 0.65215 | time: 25.264s
| Adam | epoch: 001 | loss: 0.65215 - acc: 0.6431 | val_loss: 0.62987 - val_acc: 0.6058 -- iter: 830/830
--
Exception in thread Thread-20:
Traceback (most recent call last):
File "C:\Users\tgmjack\anaconda3\lib\threading.py", line 973, in _bootstrap_inner
self.run()
File "C:\Users\tgmjack\anaconda3\lib\threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\tgmjack\anaconda3\lib\site-packages\tflearn\data_flow.py", line 187, in fill_feed_dict_queue
data = self.retrieve_data(batch_ids)
File "C:\Users\tgmjack\anaconda3\lib\site-packages\tflearn\data_flow.py", line 222, in retrieve_data
utils.slice_array(self.feed_dict[key], batch_ids)
File "C:\Users\tgmjack\anaconda3\lib\site-packages\tflearn\utils.py", line 197, in slice_array
return [x[start] for x in X]
File "C:\Users\tgmjack\anaconda3\lib\site-packages\tflearn\utils.py", line 197, in <listcomp>
return [x[start] for x in X]
IndexError: index 2 is out of bounds for axis 0 with size 2
model trained
Accuracy: {'model': [0.0]}
-------------------------------------
4
(830, 150, 150, 1)
-------------------------------------
4
(208, 150, 150, 1)
-------------------------------------其原因是其在例外情况下断裂,其拟合精度在0.6左右,在评价时达到0左右。
如何在拟合过程中从索引错误中打印出完整的跟踪结果?
( ps)
我正在使用tensorflow 2.9.1,在一个jupyter笔记本上。
我的数据每一次都会被很好的整理,所以这不仅仅是一段糟糕的数据。
https://stackoverflow.com/questions/73486427
复制相似问题