TypeError:“ float”对象无法解释为Multi GPU中的索引

时间:2018-07-07 16:42:34

标签: python tensorflow typeerror

我无法理解为什么我的jupyter笔记本每次执行时都会显示TypeError的浮动。

A = np.random.rand(1e4, 1e4).astype('float32')
B = np.random.rand(1e4, 1e4).astype('float32')


c1 = []
c2 = []


def matpow(M, n):
    if n < 1:  #Abstract cases where n < 1
        return M
    else:
        return tf.matmul(M, matpow(M, n-1))

错误:

Traceback (most recent call last) 
<ipython-input-5-61ea4b300d55> in <module>()
      1 # Example: compute A^n + B^n on 2 GPUs
      2 #Create random Large matrix
----> 3 A = np.random.rand(1e4, 1e4).astype('float32')
      4 B = np.random.rand(1e4, 1e4).astype('float32')
      5 
mtrand.pyx in mtrand.RandomState.rand()
mtrand.pyx in mtrand.RandomState.random_sample()
mtrand.pyx in mtrand.cont0_array()
TypeError: 'float' object cannot be interpreted as an index

1 个答案:

答案 0 :(得分:1)

您的TypeError非常清楚。浮点数不能解释为整数。另外,即使您不尝试将其转换为浮点数,1e4也是浮点数,即python中的>>>1v4将输出10000.0,这是一个浮点数。您需要将1e4强制转换为整数才能使代码正常工作。

A = np.random.rand(int(1e4), int(1e4))
B = np.random.rand(int(1e4), int(1e4))

这将起作用,但是为什么不为每个1e4实例键入10000,而不是编写更多代码以将其转换为整数类型呢?