# MindSpore直接将Tensor从布尔值转换为浮点数导致错误Error: IndexError: index 1 is out of bounds for dimension with size 1

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): GPU

软件环境: MindSpore 版本: 1.9.0

执行模式（静态图/动态图）： 静态图

Python 版本: 3.7.6

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

直接将Tensor从布尔值转换为浮点数，导致错误的结果。在类型转换前更改为numpy后，结果正确。

2.2 报错信息

```
Error: IndexError: index 1 is out of bounds for dimension with size 1
```

2.3 脚本信息

```
import mindspore as ms
import mindspore.nn as nn
import mindspore.ops as ops
from mindspore import Tensor


class ConditionalNet(nn.Cell):
    def __init__(self):
        super().__init__()
        self.bool_list = Tensor([True, False])  # works ok if self.bool_list = [True, False]
        self.y = Tensor([1])
        self.z = Tensor([3, 4])

    def construct(self):
        output = []
        for i in range(len(self.bool_list)):
            if self.bool_list[i]:
                output.append(self.y[i])
            else:
                output.append(self.z[i])
        return ops.stack(output)

if __name__ == '__main__':
    ms.set_context(mode=ms.GRAPH_MODE)
    net = ConditionalNet()
    print(net())  # expected: 1, 4
```

**3. 根因分析**

这个问题如果把模式修改成pynative模式的话，就能正常运行不报错。

所以问题就出在GRAPH模式上，图模式是需要先编译成图再运行的。

**4. 解决方案**

self.bool\_list = Tensor\(\[True, False\]\) 修改成self.bool\_list = \[True, False\]。

