在我的 docker 文件中,我为带有点的版本号定义了一个变量,我想将其替换为下划线以供进一步使用。
ARG ABC_VERSION=1.2.3
ARG SOME_OTHER_VARIABLE=/dir_name/abc_${ABC_VERSION//./_}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到以下错误。
failed to process "/dir_name/abc_${ABC_VERSION//./_}": missing ':' in substitution
Run Code Online (Sandbox Code Playgroud)
我需要在 dockerfile 中使用“.”多次使用版本号。一次使用“_”,我不喜欢定义两个变量。
有人知道如何解决这个问题吗?
编辑:我想利用该功能来替换字符的实际代码的一部分如下所示。
ARG EXPAT_VERSION=2.1.0
# ...
RUN wget https://github.com/libexpat/libexpat/releases/download/R_${EXPAT_VERSION//./_}/expat-${EXPAT_VERSION}.tar.gz \
&& tar xzf expat-${EXPAT_VERSION}.tar.gz \
&& cp -R expat-${EXPAT_VERSION}/lib ./xmp_sdk/third-party/expat \
&& rm -r expat-${EXPAT_VERSION} && rm expat-${EXPAT_VERSION}.tar.gz
Run Code Online (Sandbox Code Playgroud)
我看到在tensorflow-gpu dockerfiles中使用了类似的东西:
ARG CUDA=10.1
#...
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cuda-command-line-tools-${CUDA/./-} #...
Run Code Online (Sandbox Code Playgroud)
我在 docker 容器中运行以下内容:
不幸的是,在训练期间,Tensorboard 仅更新验证标量图(准确度和损失),而不是训练数据的标量图。训练和验证的目录都被选择显示在图表中。
我发现,当我停止 Tensorboard 并重新启动它时,会显示在此时间步之前当前可用的火车标量。不幸的是,这些不会更新,尽管验证标量会随着每个 epocch 更新。
有人知道这个问题的解决方案吗?