Dev*_*lam 5 python deep-learning conv-neural-network tensorflow
我正在创建一个带有tensorflow的深度CNN.我已经创建了这个架构,现在我正处于培训过程中.当我开始训练模型时,我使用命令:
sess.run(tf.global_variables_initializer())
Run Code Online (Sandbox Code Playgroud)
调用此命令时,我收到下面的错误.我的直觉告诉我,张量形状可能太大而无法解析/初始化.我已经研究过这个错误,似乎在网上很少有文档.此错误是否提供足够的信息来说明问题所在?谢谢.
2017-10-25 15:07:54.252194: W C:\tf_jenkins\home\workspace\rel-
win\M\windows\PY\35\tensorflow\core\framework\op_kernel.cc:1182] Invalid
argument: Cannot parse tensor from proto: dtype: DT_FLOAT
tensor_shape {
dim {
size: 16
}
dim {
size: 16
}
dim {
size: 7
}
dim {
size: 3298
}
dim {
size: 3298
}
}
float_val: 0
2017-10-25 15:07:54.252767: E C:\tf_jenkins\home\workspace\rel-
win\M\windows\PY\35\tensorflow\core\common_runtime\executor.cc:644] Executor
failed to create kernel. Invalid argument: Cannot parse tensor from proto:
dtype: DT_FLOAT
tensor_shape {
dim {
size: 16
}
dim {
size: 16
}
dim {
size: 7
}
dim {
size: 3298
}
dim {
size: 3298
}
}
float_val: 0
[[Node: Variable_737/Adam_1/Initializer/zeros = Const[_class=
["loc:@Variable_737"], dtype=DT_FLOAT, value=<Invalid TensorProto: dtype:
DT_FLOAT tensor_shape { dim { size: 16 } dim { size: 16 } dim { size: 7 }
dim { size: 3298 } dim { size: 3298 } } float_val: 0>,
_device="/job:localhost/replica:0/task:0/cpu:0"]()]]
2017-10-25 15:07:54.320979: W C:\tf_jenkins\home\workspace\rel-
win\M\windows\PY\35\tensorflow\core\framework\op_kernel.cc:1182] Invalid
argument: Cannot parse tensor from proto: dtype: DT_FLOAT
tensor_shape {
dim {
size: 16
}
dim {
size: 16
}
dim {
size: 7
}
dim {
size: 3298
}
dim {
size: 3298
}
}
float_val: 0
Run Code Online (Sandbox Code Playgroud)
小智 11
正如@Tarun Wadhwa所说,tensorflow不允许单个设备上大小> 2 GB的张量.您的张量大小(19 x 10 ^ 9条目)x 4字节= 78 GB如果您正在使用dtype='tf.float32'.
首先,您可以尝试使用'tf.float16'.这会使RAM上的张量大小减半.(它还会给重量增加一些噪音,这将提供正常化效果 - 这是一件好事).您还可以尝试stride在卷积图层中增加参数.
但是你仍然不能满足2 GB的允许限制.在这种情况下,您应该将计算图分布在多个GPU上并在那里训练模型.你必须使用with tf.device一个全新的游戏集合来重新构造你的代码.AWS在其EC2上提供8个和16个GPU p2实例.
为什么你需要与如此庞大的张量一起工作?
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |