Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么谷歌Colab会给出一个“答案”;“未知设备”;尝试转换Keras MLP时出错?_Python_Tensorflow_Keras_Google Colaboratory - Fatal编程技术网

Python 为什么谷歌Colab会给出一个“答案”;“未知设备”;尝试转换Keras MLP时出错?

Python 为什么谷歌Colab会给出一个“答案”;“未知设备”;尝试转换Keras MLP时出错?,python,tensorflow,keras,google-colaboratory,Python,Tensorflow,Keras,Google Colaboratory,我正在尝试使用TPU在google colab上训练一个简单的MLP模型。 但是,当我尝试使用 从tensorflow.keras.models导入 从tensorflow.keras.layers导入稠密 从keras.constraints导入非负 模型=顺序() 添加(密集(57,输入_形状=(57,)) add(稠密(60,kernel_constraint=NonNeg(),activation=“relu”)) add(稠密(100,kernel_constraint=NonNeg(

我正在尝试使用TPU在google colab上训练一个简单的MLP模型。 但是,当我尝试使用

从tensorflow.keras.models导入
从tensorflow.keras.layers导入稠密
从keras.constraints导入非负
模型=顺序()
添加(密集(57,输入_形状=(57,))
add(稠密(60,kernel_constraint=NonNeg(),activation=“relu”))
add(稠密(100,kernel_constraint=NonNeg(),activation=“relu”))
add(稠密(50,kernel_constraint=NonNeg(),activation=“relu”))
添加(密集(3,activation=“linear”))
compile(优化器='adam',loss='mse')
TPU工人='grpc://'+os.environ['COLAB\u TPU地址']
tpu_模型=tf.contrib.tpu.keras_到tpu模型(
模型
策略=tf.contrib.tpu.tpuditribution策略(
tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)))
给出错误
invalidargumeinterror:/job:localhost/replica:0/task:0/device:TPU\u SYSTEM:0未知设备。

这对我来说没有意义,因为我直接从google教程中复制了模型转换代码。当我运行测试代码时:

导入操作系统
导入pprint
导入tensorflow作为tf
如果“COLAB\u TPU\u ADDR”不在os.environ中:
打印('错误:未连接到TPU运行时;有关说明,请参阅此笔记本中的第一个单元格!')
其他:
tpu地址='grpc://'+os.environ['COLAB\U tpu地址']
打印('TPU地址为',TPU地址)
以tf.Session(tpu_地址)作为会话:
设备=会话。列出设备()
打印('TPU设备:')
pprint.pprint(设备)
我得到了预期的结果:

TPU address is grpc://10.0.203.10:8470
TPU devices:
[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 1941375595625340814),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 9079881000847066378),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 6922694346479333534),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 14324637633413341896),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:2, TPU, 17179869184, 3528106575831937158),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:3, TPU, 17179869184, 13852141601322651612),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:4, TPU, 17179869184, 10344791506504172772),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:5, TPU, 17179869184, 16666353711371098164),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:6, TPU, 17179869184, 3428083526573573796),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:7, TPU, 17179869184, 8632908473312514763),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU_SYSTEM:0, TPU_SYSTEM, 17179869184, 9715206562754100387)]

既然这样做有效,我不明白为什么模型转换不起作用。

如果启用了“急切执行”,您可能需要关闭它。

对我来说,如果没有
tf,它似乎运行得很好。在代码的开头启用渴望执行()

您使用的是哪个版本的tensorflow?这对我使用tensorflow 1.13.1很有效。我之前启用了急切执行,所以我重新启动了内核,确保禁用了急切执行,并且一切正常!