使用Adadelta优化器在GPU上使用张量流训练模型不起作用。但是,当我用亚当替换Adadelta时,似乎没有问题。

时间:2018-07-30 19:06:59

标签: python tensorflow

我正在尝试在GPU上使用adadelta优化器在tensorflow(python2上为v1.9.0)上训练模型。它显示以下错误。

g

当我用亚当代替adadelta时,没有任何问题。下面提供了一些代码。

InvalidArgumentError (see above for traceback): Cannot assign a device for operation 'embedding_matrix_de/read': Could not satisfy explicit device specification '' because the node was colocated with a group of nodes that required incompatible device '/job:localhost/replica:0/task:0/device:GPU:0'
Colocation Debug Info:
Colocation group had the following types and devices: 
UnsortedSegmentSum: GPU CPU 
Unique: GPU CPU 
Shape: GPU CPU 
Cast: GPU CPU 
StridedSlice: GPU CPU 
GatherV2: GPU CPU 
SparseApplyAdadelta: CPU 
Const: GPU CPU 
Identity: CPU 
VariableV2: GPU CPU 

Colocation members and user-requested devices:
  embedding_matrix_de (VariableV2) 
  embedding_matrix_de/read (Identity) 
  embedding_lookup/axis (Const) 
  embedding_lookup (GatherV2) 
  gradients/embedding_lookup_grad/Shape (Const) 
  gradients/embedding_lookup_grad/ToInt32 (Cast) 
  embedding_matrix_de/Adadelta (VariableV2) 
  embedding_matrix_de/Adadelta_1 (VariableV2) 
  Adadelta/update_embedding_matrix_de/Unique (Unique) 
  Adadelta/update_embedding_matrix_de/Shape (Shape) 
  Adadelta/update_embedding_matrix_de/strided_slice/stack (Const) 
  Adadelta/update_embedding_matrix_de/strided_slice/stack_1 (Const) 
  Adadelta/update_embedding_matrix_de/strided_slice/stack_2 (Const) 
  Adadelta/update_embedding_matrix_de/strided_slice (StridedSlice) 
  Adadelta/update_embedding_matrix_de/UnsortedSegmentSum         (UnsortedSegmentSum) 
  Adadelta/update_embedding_matrix_de/SparseApplyAdadelta (SparseApplyAdadelta) 

 [[Node: embedding_matrix_de/read = Identity[T=DT_FLOAT, _class=["loc:@embedding_matrix_de"]](embedding_matrix_de)]]

1 个答案:

答案 0 :(得分:0)

我在Tensorflow 2.1.1中遇到了相同的问题。 Adadelta优化器似乎不支持GPU或TPU。