清风不染芳华
清风不染芳华
求一下联系方式,有偿提问。thanks.
I retrained a model with 670 epoches,Compare the selected minimum loss which it is ,the loss is 0.000329920450937,so I stop training it. but I feel the results are irrelevant ....
> DeepCS在API较多的代码上表现较好。可能你的数据集中API调用不是很密集。 > > 你试过pytorch版吗?现在的版本可能因为底层变化了,达不到最初的效果(正在考虑把原始的demo server重新搭建上)。pytorch版重新进行了调参,指标评估的精度已经达到0.9以上。 pytorch版本的我还没有试过,最近我下载github上最新版本去试一下。 我的数据是codesearchnet上的Java代码通过你的code2api方法提取出来最后剩的数据是30w条,您的1000多万我这处理起来太费劲,因为您公开的数据集是处理好的,不太适合我接下来的工作。在我的数据集上应该达不到0.9以上,数据量比较小。 有这么一个问题,您可以解释一下我可能的问题么。 (1)eval(model,1000,10)当tokens,apiseq,methname——>desc时,eval函数评估结果目前最好acc=0.672 mrr=0.413 map=0.413 ndcg=0.475 (2)eval(model,-1,10)当tokens,apiseq,methname——>desc时,eval函数评估结果目前最好acc=0.3477 mrr=0.179 map=0.179 ndcg=0.2177 考虑前1000条数据和全部差距太大,结果很糟糕。
> 从全部数据中选取top10比较符合真实情况,也就是(2)反映了真实效果。1000个选top10难度太低了。pytorch版目前是选取的10000个作为测试codebase. > 如果把(2)调参到0.5以上应该能得到比较满意的结果。 我的测试集数据才16571个 我觉得设置10000的话 我的结果从0.3几到0.5的话 应该调不到 感谢回复,我去试试。
> 请问一下,我看您以前搜索时,返回的结果跟输入的查询不太相关。我也出现了这个问题,您解决这个问题了吗? 我现在在优化eval方法的准确率,还没对codebase再次进行search。根据作者描述,当acc在全部测试集的评估大于0.5的时候,查询结果会符合要求。
> 请问你是用的pytorch版吗? > 你的数据集可能偏小,需要重新调参。 > 我提供epoch500的时候可能还没有用automl调参,后来测的pytorch能达到0.9以上。 > 另外poolsize设为10,000或100,000更合理。 这个数据集用于训练部分数据是23w左右,验证部分数据量1.5w左右。我想先在poolsize=1000达到0.9以后,再试试10000的。 关于调参 您有什么建议么。 #parameters 'name_len': 6, 'api_len':30, 'tokens_len':50, 'desc_len': 30, 'n_words': 10000, # len(vocabulary) + 1 #vocabulary info 'vocab_name':'vocab.name.json', 'vocab_api':'vocab.apiseq.json', 'vocab_tokens':'vocab.tokens.json', 'vocab_desc':'vocab.desc.json',...
> 调参需要专用平台。手工调参的话可以参考automl_config.yaml末尾关于参数的区间。 > 我再用我们的训练数据跑一下,给你一个训练好的模型,你用训练好的模型来测试你的数据看看效果。 感谢。我的数据集小确实不太容易操作。
> https://drive.google.com/file/d/15HoKv0efrVXNTsqCxoq2Swgh6ohuq5jI/view?usp=sharing > 这里是训练好的一个模型,pool size选的10000, >  因为我自己模型query不是很好,从头捋一遍的时候发现一个问题 例如convert inputstream to string 方法名为inputstreamToString,我分词为inputstream to string 存储到.name.h5中。 关于desc.h5我将存为inputstream还是input stream? 那么token.h5关于InputStream语句我存inputstream还是input stream? 因为有的是整体不用分割,有的词是需要分割的?这种情况我该怎么处理。因为我无法确定哪些词是部分拆分的。
> 我们简单的对代码里的token作了camel split, query没有拆分,你可以都试试。 我在另一个数据集训练dcs的时候,acc top 10 poolsize-1000,打到了0.90+ 并且我query的时候将inputstream to string,转换成input stream to string来查询。其中top10最高相似度为0.90左右,但是结果并不相干。 当我把codebase等文件其他项删除 只留一个InputStreamToString代码片段时候,即len(codebase)==1,cos是0.93,但是在上面这个结果并没有出现,最高才0.9+。 0.93的那段并没有显示出来。
> 谢谢你提供的线索,可能代码还存在bug。如果找到原因麻烦您告知。 原因貌似在**repr_code.py**中data_loader = torch.utils.data.DataLoader(dataset=use_set, **batch_size=args.batch_size**, shuffle=False, drop_last=False, num_workers=1)的batch_size,您的代码默认是10000.我执行query语句**input stream to `string**,top5结果如下: (这个是我把codebase length的大小做成为5的代码库,就5个数据,当codebase是全部代码片段时,第一的这个0.9439719这条相似度变成0.72左右) `('public static String inputStreamToString(InputStream is) throws MPException { String value = ""; if (is != null)...