我是TPU的新手,当我尝试在我自己的数据集上训练CNN(在TPU上)时遇到错误。我可以运行MNIST示例并在--use_tpu=False
时运行我的代码。但是当我设置--use_tpu=Ture
时,我会有
InvalidArgumentError
I系统
tf-1-7图像,如教程中所述。
II错误
2018-04-17 06:35:31.602915:我 tensorflow / core / platform / cpu_feature_guard.cc:140]您的CPU支持 指示此TensorFlow二进制文件未编译使用:AVX2 FMA Traceback(最近一次调用最后一次):文件 “/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py” 第1327行,在_do_call中返回fn(* args)文件 “/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py” 第1310行,在_run_fn self._extend_graph()文件中 “/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py” 第1358行,在_extend_graph graph_def.SerializeToString(),status)中 文件 “/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py” 第516行,在退出c_api.TF_GetCode(self.status.status)中) tensorflow.python.framework.errors_impl.InvalidArgumentError:不能 分配设备进行操作 'input_pipeline_task0 / IteratorToStringHandle':操作是 显式分配给/ job:tpu_worker / task:0 / device:CPU:0但是 可用设备是[/ job:localhost / replica:0 / task:0 / device:CPU:0 ]。确保设备规格指的是有效设备 [[Node:input_pipeline_task0 / IteratorToStringHandle = IteratorToStringHandle_device = “/作业:tpu_worker /任务:0 /装置:CPU:0”]]
我的想法是它是由我输入数据的方式引起的。现在,我使用pickle在本地计算机中加载数据,然后使用from_tensor_slices导入数据。我试图在谷歌云存储中保存数据,但它会报告“无法找到该文件。”
任何解决方案?或者更好的导入数据的方式?
非常感谢!
答案 0 :(得分:0)
你能确定你是否将'use_tpu'设置为'True'而不是'Ture'。对于AVX2 CPU instructions,较新的CPU使用这些指令,但TPU的工作不需要这些指令,因为大部分工作将在TPU中完成,并且使用CPU的标准指令将允许与旧一代CPU兼容。
至于使用Cloud Storage for TPUs,请确保您的云存储分区和云端TPU位于同一区域。目前TPU在'us-central1-b'和'us-central1-c'中可用,因此选择云存储的相同位置。