Файл спецификации синтаксиса и Docker?
Я пытаюсь выучить Synatxnet. У меня это работает через Docker. Но я действительно не знаю много ни о программе Synatxnet, ни о Docker. На странице Github Sytaxnet это говорит
Модели SyntaxNet настраиваются с помощью комбинации флагов времени выполнения (которые легко изменить) и буфера протокола текстового формата TaskSpec. Файл спецификации, используемый в демоверсии, находится в файле syntaxnet/models/parsey_mcparseface/context.pbtxt.
Как именно я могу найти файл спецификации для его редактирования?
Я скомпилировал SyntaxNet в контейнере Docker, используя эти инструкции.
FROM java:8
ENV SYNTAXNETDIR=/opt/tensorflow PATH=$PATH:/root/bin
RUN mkdir -p $SYNTAXNETDIR \
&& cd $SYNTAXNETDIR \
&& apt-get update \
&& apt-get install git zlib1g-dev file swig python2.7 python-dev python-pip -y \
&& pip install --upgrade pip \
&& pip install -U protobuf==3.0.0b2 \
&& pip install asciitree \
&& pip install numpy \
&& wget https://github.com/bazelbuild/bazel/releases/download/0.2.2b/bazel-0.2.2b-installer-linux-x86_64.sh \
&& chmod +x bazel-0.2.2b-installer-linux-x86_64.sh \
&& ./bazel-0.2.2b-installer-linux-x86_64.sh --user \
&& git clone --recursive https://github.com/tensorflow/models.git \
&& cd $SYNTAXNETDIR/models/syntaxnet/tensorflow \
&& echo "\n\n\n" | ./configure \
&& apt-get autoremove -y \
&& apt-get clean
RUN cd $SYNTAXNETDIR/models/syntaxnet \
&& bazel test --genrule_strategy=standalone syntaxnet/... util/utf8/...
WORKDIR $SYNTAXNETDIR/models/syntaxnet
CMD [ "sh", "-c", "echo 'Bob brought the pizza to Alice.' | syntaxnet/demo.sh" ]
# COMMANDS to build and run
# ===============================
# mkdir build && cp Dockerfile build/ && cd build
# docker build -t syntaxnet .
# docker run syntaxnet
1 ответ
Сначала закомментируйте командную строку в файле Docker, затем создайте и перейдите в пустой каталог на вашем хост-компьютере. Затем вы можете создать контейнер из образа, подключив каталог в контейнере к вашему жесткому диску:
docker run -it --rm -v /pwd
: / TMP Bash
Теперь у вас будет сеанс bash в контейнере. Скопируйте файл спецификации в /tmp
от /opt/tensorflow/syntaxnet/models/parsey_mcparseface/context.pbtxt
(Я предполагаю, что именно там он получил информацию, которую вы предоставили выше - я не могу получить ваш файл docker для создания образа, поэтому я не могу подтвердить это; вы всегда можете запустить find . -name context.pbtxt
от корня, чтобы найти его) и выйти из контейнера (Ctrl-D или exit
).
Теперь у вас есть файл на жестком диске вашего хоста, готовый к редактированию, но вы действительно хотите, чтобы он был в работающем контейнере. Если каталог, из которого он получен, содержит только этот файл, то вы можете просто смонтировать каталог хоста по этому пути в контейнере. Если он содержит другие вещи, то вы можете использовать так называемый скрипт начальной загрузки, чтобы переместить файл из подключенного каталога (в приведенном выше примере это tmp
) в его домашнее местоположение. Кроме того, вы можете указать программному обеспечению, где найти файл спецификации, с флагом, но это потребует дополнительных исследований.