使用TPU

时间:2018-04-17 08:06:15

标签: google-cloud-platform

我是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导入数据。我试图在谷歌云存储中保存数据,但它会报告“无法找到该文件。”

任何解决方案?或者更好的导入数据的方式?
非常感谢!

1 个答案:

答案 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'中可用,因此选择云存储的相同位置。