线程 Thread-5 中的异常:TypeError:只能将整数标量数组转换为标量索引

Posted

技术标签:

【中文标题】线程 Thread-5 中的异常:TypeError:只能将整数标量数组转换为标量索引【英文标题】:Exception in thread Thread-5: TypeError: only integer scalar arrays can be converted to a scalar index 【发布时间】:2018-12-27 00:25:00 【问题描述】:

最近我正在评估一个 tflearn 模型,使用它的 model.evaluate(test_X, test_y) 方法和测试数据,我得到了以下异常

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/site-packages/tflearn/data_flow.py", line 187, in fill_feed_dict_queue
    data = self.retrieve_data(batch_ids)
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/site-packages/tflearn/data_flow.py", line 222, in retrieve_data
    utils.slice_array(self.feed_dict[key], batch_ids)
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/site-packages/tflearn/utils.py", line 180, in slice_array
    return [x[start] for x in X]
  File "/Users/vishwas.abhyankar/miniconda3/lib/python3.6/site-packages/tflearn/utils.py", line 180, in <listcomp>
    return [x[start] for x in X]
TypeError: only integer scalar arrays can be converted to a scalar index

【问题讨论】:

【参考方案1】:

这是我原来的方法:

def evaluate(self):
    return self.model.evaluate(self.test_x, self.test_y)

这里 self.test_x 是一个列表列表,例如:[[0, 1, 1, 0], [1, 0, 1, 1]] self.test_y 是一个列表列表,例如:[[0, 1], [1, 0]]

此方法的修改固定版本:

def evaluate(self):
    return self.model.evaluate(np.array(self.test_x), np.array(self.test_y))

在这里,我将列表转换为 numpy 数组,而不是 model.evaluate(X, y) 方法可以正常工作。

【讨论】:

以上是关于线程 Thread-5 中的异常:TypeError:只能将整数标量数组转换为标量索引的主要内容,如果未能解决你的问题,请参考以下文章

C#多线程开发-处理异步操作中的异常

Shell多线程编程的实例

多线程多线程中的异常处理

线程中的终极异常处理处理

C#多线程开发-处理子线程中的异常

多线程捕获线程中的异常