运行 python 脚本通过 bash 脚本多次使用虚拟环境

running a python script several times using a virtual environment by means of a bash script

我正在调整深度学习网络的超参数,因此我需要 运行 一个命令来迭代尝试不同的值。我想运行这样的命令使用虚拟环境。我有以下脚本可以这样做:

#!/bin/bash

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#added by Anaconda3 installer
export PATH="/home/javier/anaconda3/bin:$PATH"

source /home/javier/anaconda3/bin/activate AIenv


backbones=("resnet101")
gradient_clip_norms=(5 10)
learning_rates=(0.0001 0.00001 0.000001)
weight_decays=(0.001 0.0005 0.0001)
layers=('heads')

for i in "${backbones[@]}"
do
  for j in "${gradient_clip_norms[@]}"
  do
    for k in "${learning_rates[@]}"
    do
      for l in "${weight_decays[@]}"
      do
        for m in "${layers[@]}"
        do
         echo "-----------------------------------------------------------------------------------"
         echo  "backbone:" $i " gradient_clip_norms:" $j " learning_rate:" $k " weight_decays:" $l "layers:" $m
         echo "-----------------------------------------------------------------------------------"
         python3 custom.py train --dataset=customImages/ --weights=coco --backbone=$i --grad_clip_norms=$j --learn_rate=$k --weight_decays=$l --layers=$m
         echo "successfully done"
        done
      done
    done
  done
done

但是,似乎没有激活 AIenv,因为我 运行 这个代码:

from distutils.sysconfig import get_python_lib
print (str(get_python_lib()))

输出为:/home/javier/anaconda3/lib/python3.6/site-packages 而不是 /home/javier/anaconda3/envs/AIenv/lib/python3.6/site-packages

我 运行 终端中的此命令到 运行 bash 脚本(运行 在后台运行,因为训练需要超过 2 天):

nohup ./run_hyper_param_tuning.sh> ../../logs/hyper_model_wed.txt 2>&1  & echo $! >save_pid.txt

如何通过这种方式激活虚拟环境?


而不是使用命令行:source /home/javier/anaconda3/bin/activate AIenv

只需使用:export PATH="/home/javier/anaconda3/envs/AIenv/bin:$PATH"

希望对激活AIenv有所帮助