vector<int> uGuess = {1,2,3,3,4,5}
vector<int> a = uGuess;
sort(a.begin(), a.end());
bool d = unique(a.begin(), a.end());
以上代码可以成功运行。以下一行
parser = argparse.ArgumentParser()
parser.add_argument('-model', type=str, default='linear_model')
parser.add_argument('-featuredim', type=int, default=20)
parser.add_argument('-inputfeatures', type=str, default='/Users/myname/Downloads/face-rating-master/data/features_ALL.txt')
parser.add_argument('-labels', type=str, default='/Users/myname/Downloads/face-rating-master/data/ratings.txt')
给出了这个错误:
args = parser.parse_args()
答案 0 :(得分:1)
try:
args = parser.parse_args() #call from command line
except:
args = parser.parse_args(args=[]) #call from notebook
答案 1 :(得分:0)
featuredim 参数需要一个整数(即type=int
),但是您已经传入了一个字符串,表明了json文件的路径。
你可以通过重新设计它的逻辑来使这个脚本工作,这样它就可以读入JSON,然后从一个键值中提取整数(类似于.ini配置文件中读取的脚本数量),但是在你正在做的事情的背景下,这是一种过度的事情(因为你想要使用Jupyter,所以对你的困境真的不会有太大的帮助)。作为参考,您传入脚本的文件并不能直接访问笔记本中定义的变量,只存储应用程序使用的信息(例如笔记本所用的IP地址)运行和它正在使用的TCP端口号)。为了说明,这就是我的笔记本电脑上类似的JSON文件:
09/28 18:26:53 [jsp2205@kaheta: ~/Library/Jupyter/runtime]
$ less kernel-40dad791-ffa1-4687-bcd1-3ec831884c83.json
{
"stdin_port": 60476,
"ip": "127.0.0.1",
"control_port": 60477,
"hb_port": 60478,
"signature_scheme": "hmac-sha256",
"key": "b52ef99c-0a1a70b17b600daea5263a29",
"kernel_name": "",
"shell_port": 60474,
"transport": "tcp",
"iopub_port": 60475
}
最好的办法是从trainModel.py获取代码,删除ArgumentParser,并用硬编码变量替换对参数的任何引用。然后将修改后代码中的每一行添加到Jupyter笔记本中,并在笔记本中手动修改硬编码变量。
对于使用ArgumentParser的其他脚本,您可能希望查看是否将使用parse_args()
提取的参数传递给函数,然后使用类似于以下内容的import语句将该函数直接导入到笔记本中。如下所示:
cd [directory containing script]
from [script name minus the .py extension] import [function name]