【问题标题】:Function not working, Syntax errors and more功能不工作,语法错误等等
【发布时间】:2020-04-04 22:50:08
【问题描述】:

前几天,我正在为 Keras 上的图像字幕模型做一个项目。但是当我运行它时,我面临着许多错误。请注意,我在 Python 中使用 Atom 编辑器和虚拟环境,从命令行运行所有内容。

train_features = load_photo_features(os.path('C:/Users/neelg/Documents/Atom_projects/Main/features.pkl'), train)

在这一行中,我收到了这个错误==>

  File "C:\Users\neelg\Documents\Atom_projects\Main\Img_cap.py", line 143
train_features = load_photo_features(os.path('C:/Users/neelg/Documents/Atom_projects/Main/features.pkl'), train)
             ^

SyntaxError: 无效语法

我认为该函数的语法是正确的,但错误仍然存​​在。因此,在一个单独的文件中,我复制了该函数并尝试隔离问题。 独立功能代码:-

from pickle import load
import os
def load_photo_features(filename, dataset):
    all_features = load(open(filename, 'rb'))
    features = {k: all_features[k] for k in dataset}
    return features

filename = 'C:/Users/neelg/Documents/Atom_projects/Main/Flickr8k_text/Flickr8k.trainImages.txt'

train_features = load_photo_features(os.path('C:/Users/neelg/Documents/Atom_projects/Main/features.pkl'), train)

现在,出现了一种不同类型的问题:

Traceback (most recent call last):
  File "C:\Users\neelg\Documents\Atom_projects\Main\testing.py", line 10, in <module>
    train_features = load_photo_features(os.path('C:/Users/neelg/Documents/Atom_projects/Main/features.pkl'), train)
TypeError: 'module' object is not callable

有什么帮助吗?我正在尝试导入 Flickr_8k 数据集,其中包含随机图片和另一个小数据集,这些数据集是这些照片的标签...

P.S=>请在提交之前在自己的编辑器上测试代码后发送建议,因为我怀疑由于系统编码而出现了一些核心问题(正如其他一些人所建议的那样)。此外,由于它的长度和多个文件的要求,无法加载整个代码。

【问题讨论】:

  • 如果您将 pickle 文件的路径作为字符串而不是 os.path('(path/to/pickle') 传递会发生什么?
  • @Tinu 最初我只尝试过,但由于应该使用“良好的编码实践”而改变了它
  • @neel g 文本文件代表什么?您正在为您的函数提供一个泡菜文件作为输入。

标签: python-3.x tensorflow machine-learning keras tf.keras


【解决方案1】:

这个错误来自于你调用os.path 这是一个模块而不是一个函数。把它去掉就行了,在这个用例中你不需要它,一个字符串对于open中的filename就足够了

【讨论】:

  • 什么意思? “不起作用”不够具体;有什么错误?用您尝试过的方法更新您的问题
  • 错误同上:-train_features = load_photo_features(os.path('C:/Users/neelg/Documents/Atom_projects/Main/features.pkl'), train)行引起的语法错误
【解决方案2】:

我正要问你和@ted 相同的问题,为什么你在尝试加载文件时使用 os.path。

通常,我使用以下代码从 pickle 加载:

def load_obj(filename):
  with open(filename, "rb") as fp:
      return pickle.load(fp, enconding = 'bytes')

此外,如果我尝试类似的方法,它会起作用:

from pickle import load
import os
import pdb

def load_photo_features(filename):
   all_features = load(open(filename, 'rb'))
   pdb.set_trace()

   #features = {k: all_features[k] for k in dataset}
   #return features

train_features = load_photo_features('train.pkl')

我不知道要进行的数据集输入是什么,但是加载 pickle 文件可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多