Это скрипт, который мне нужно преобразовать в командный файл в Windows:

#!/usr/bin/env sh

TOOLS=./build/tools

$TOOLS/caffe train \
    --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

это сценарий, который я придумал до сих пор:

REM go to the caffe root
cd ../../Build/x64/Release
caffe.exe train --solver=../../../examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

Это выполняет исполняемый файл (caffe.exe) и передает необходимый файл аргумента по мере необходимости, но проблема в том, что сам файл аргумента указывает на другой файл, относящийся к самому себе, и этот второй файл не найден.
Вот как был адресован второй файл в нашем файле аргументов:

net: "examples/cifar10/cifar10_full_relu_train_test_bn.prototxt"

Чтобы было понятнее, иерархия папок выглядит следующим образом:

|Build 
   |--X64
      |--Release
         |--caffe.exe
|Examples
   |--Cifar10
      |-- cifar10_full_relu_solver_bn.prototxt
      |-- Cifar10_train_test.prototxt
      |-- other files as well

мой вопрос: есть ли способ, которым я могу использовать, чтобы мне не нужно было также изменять все относительные адреса файлов?

3 ответа3

1
SET TOOLS=Build/x64/Release
%TOOLS%/caffe.exe train --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

Это должно быть идеальным преобразованием сценария оболочки. Мы всегда остаемся в корневой папке, поэтому пути к файлу в качестве аргумента должны указываться правильно.

0

Обновить :

Вот примечание, этот сценарий предназначен для случаев, когда вы хотите выполнить командный файл, скажем, дважды щелкнув по нему напрямую. (Я имею в виду выполнить командный файл непосредственно из (под) каталога, в котором он находится.
но если вы намереваетесь либо вызвать его из корня ваших папок, вам нужно увидеть принятый ответ. Я также оставляю здесь свой ответ, на случай, если он пригодится некоторым другим.

Актуальный ответ

Я сам использую стандартный метод, который принят в качестве ответа.
Слава Богу, я наконец-то начал работать, фактический эквивалентный пакетный скрипт выглядит следующим образом:

REM go to the caffe root
cd ../../

set BIN=build/x64/Release

"%BIN%/caffe.exe" train --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

используя это, мне больше не нужно ничего менять.

0

Возможным решением является дублирование всей папки Cifar10 в нужное место.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .