我试着围绕google的word2vec,为他们的新闻组使用ctypes在python中预先训练向量。你知道吗
我这里有一段代码:
void initialize(){
...
long long words, size;
char *fname = "GoogleNews-vectors-negative300.bin.gz";
strcpy(file_name, fname);
printf("%s\n", file_name);
f = fopen(file_name, "rb");
if (f == NULL) {
printf("Input file not found\n");
return -1;
}
fscanf(f, "%lld ", &words);
fscanf(f, "%lld", &size);
printf("size of words is %d\n", words);
...
}
当我从主函数调用它时,这段代码运行良好。然而,当我将它编译成一个.so文件并从ctypes调用它时,单词总是为零。通过ftell检查,我注意到fscanf不会向前移动文件指针,并且fscanf总是返回0。它是一个二进制文件,所以我不确定fscanf除了将这个3gb的二进制文件转换成一个更大的.csv文件并从那里读取它之外还能做什么。你知道吗
如何修复?在这种情况下,避免fscanf的备用路径也会起作用。你知道吗
OP的文件是一个压缩文件“GoogleNews-vectors-negative300”。斌.gz“代码是用来读取未压缩的版本的。你知道吗
重新尝试使用未压缩的版本。你知道吗
相关问题 更多 >
编程相关推荐