1

我一直在尝试训练具有特定架构的 3DCNN 网络。我想创建一个 dockerfile,其中包含使网络正常工作所需的所有步骤。问题是,如果我在主机中运行神经网络网络,我没有问题,一切正常。但是在 docker 容器上做几乎相同的事情我总是得到“分段错误(核心转储)”错误。

两种安装方式并不完全相同,但变化(可能安装了一些额外的软件包)应该不是问题,对吧?此外,在它开始迭代之前我没有任何错误,所以这似乎是一个内存问题。GPU 工作在 docker 容器上,与主机是同一个 GPU。python代码是一样的。

Docker 容器神经网络网络开始使用数据进行训练,但在 epoch 1 出现“分段错误(核心转储)”。

所以我的问题如下:主机和 docker 容器之间是否可能存在重大差异,即使它们安装了完全相同的包?特别是与 tensorflow 和 GPU 有关。因为错误必须来自代码外部,假设代码在类似的环境中工作。

希望我对自己的解释足以说明我的问题,谢谢。

在此处输入图像描述

4

1 回答 1

1

docker 映像将在运行时解析,将由主机内核解析其系统调用。
请参阅“ Docker 如何运行具有不同内核的发行版? ”。

在您的情况下,您的错误是

Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1, SSE4.2

请参阅“如何使用 SSE4.2 和 AVX 指令编译 Tensorflow?
(由tensorflow/tensorflowissue 8037引用)

您可以尝试使用 docker multi-stage build 从源构建的Tensorflow构建图像

于 2018-01-28T08:09:09.233 回答