首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >张量流打印全回溯方法

张量流打印全回溯方法
EN

Stack Overflow用户
提问于 2022-08-25 11:08:34
回答 1查看 58关注 0票数 0

我在tensorflow中得到了一个异常,它没有停止程序,而是在te输出中弹出,并且在异常之后出现故障。但是,追溯并不能真正地跟踪问题,回到我可以修复的有用点。只是一些模糊的指数错误。

下面是我的剧本

代码语言:javascript
复制
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("-------------------------------------")

从而产生这个输出。

代码语言:javascript
复制
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笔记本上。

我的数据每一次都会被很好的整理,所以这不仅仅是一段糟糕的数据。

EN

回答 1

Stack Overflow用户

发布于 2022-08-25 11:17:48

如果您想要打印完整的堆栈跟踪,调用命令应该可以做到这一点:

代码语言:javascript
复制
tf.debugging.disable_traceback_filtering()

为了重新激活过滤:

代码语言:javascript
复制
tf.debugging.enable_traceback_filtering()

关于这个错误,您正在用索引2索引numpy数组,但是第一个维度上的数组大小为2(因此只接受索引0和1)。

这里您可以在tensorflow中找到用于调试的其他有用信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73486427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档