You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用skipthoughts.load_model()遇AttributeError:模块无该属性求解决

解决skipthoughts模块无load_model属性的问题

问题根源

你遇到的AttributeError是因为当前安装的skipthoughts包并非官方Skip-Thoughts模型的实现,PyPI上的第三方skipthoughts包没有提供load_model方法,而你代码中调用的是Ryan Kiros官方实现里的函数。

步骤1:卸载错误的包

先移除当前通过pip安装的skipthoughts:

pip uninstall skipthoughts -y

步骤2:获取官方实现代码

克隆官方Skip-Thoughts仓库到本地,将其中的skipthoughts目录放到你的项目路径下,或者添加仓库路径到Python环境:

git clone https://github.com/ryankiros/skip-thoughts.git

如果没把skipthoughts文件夹放到项目根目录,在代码开头添加路径:

import sys
sys.path.append("/path/to/skip-thoughts")

步骤3:修正模型加载逻辑

官方实现中加载模型的方式和你原代码一致,但需要提前按照仓库说明下载预训练权重和词汇表文件,放到指定路径后,model=skipthoughts.load_model()就能正常运行。

步骤4:修复代码中的潜在错误

你的异常处理块存在变量未定义的问题,当skipthoughts.encode抛出异常时,caption_vectors并未被赋值,直接dump会触发NameError,修改如下:

for files in ofiles:    
    if not os.path.exists(join(encoded_vector_dir, files)):
        with open(join(annot_dir, files)) as f:
            captions = f.read().split(',')
        
        captions = [cap for cap in captions if len(cap.strip()) > 0]

        try:
            caption_vectors = skipthoughts.encode(model, captions)
            # 成功编码后保存结果
            with open(join(encoded_vector_dir, files), mode='wb') as myfile:
                pickle.dump(caption_vectors, myfile)
        except Exception as e:
            print(f"处理文件 {files} 失败: {str(e)}")
            # 保存错误信息到garbage目录
            with open(join(garbage, files), mode='w') as myfile:
                myfile.write(f"错误信息: {str(e)}\n原始文本: {str(captions)}")
    else:
        print(f"已存在,跳过 {files}")

另外,你定义的ofiles_1至ofiles_5变量未被使用,可根据实际需求保留或删除。

内容的提问来源于stack exchange,提问作者Param

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:26:19