이것은 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
내 질문은, 내가 모든 상대 파일 주소를 변경할 필요가 없도록 사용할 수있는 방법이 있습니까?
답변
SET TOOLS=Build/x64/Release
%TOOLS%/caffe.exe train --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt
pause
그것은 쉘 스크립트의 이상적인 변환이어야합니다. 우리는 항상 루트 폴더에 머 무르므로 인수로 제공된 파일 내부의 경로를 올바르게 참조해야합니다.
답변
가능한 해결책은 전체 Cifar10 폴더를 적절한 위치에 복제하는 것입니다.
답변
업데이트 :
이 스크립트는 배치 파일을 직접 두 번 클릭하여 배치 파일을 실행하려고 할 때 사용합니다. (배치 파일이있는 (하위) 디렉토리에서 직접 배치 파일을 실행하는 것을 의미합니다.
그러나 폴더의 루트에서 파일을 호출하려는 경우 허용되는 답변을 확인해야합니다. 다른 사람들에게는 유용 할 수 있습니다.
실제 답변
나는 스스로 대답으로 받아 들여지는 표준 방법을 사용하고 있습니다.
친애하는 하나님 덕분에 마침내 작동했습니다. 실제로 동일한 배치 스크립트는 다음과 같습니다.
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
이것을 사용하면 더 이상 아무것도 변경할 필요가 없습니다.