Файл спецификации синтаксиса и 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) в его домашнее местоположение. Кроме того, вы можете указать программному обеспечению, где найти файл спецификации, с флагом, но это потребует дополнительных исследований.

Другие вопросы по тегам