【问题标题】:FileNotFoundError: No such file or directory (for Dogs and Cats code)FileNotFoundError: No such file or directory (for Dogs and Cats code)
【发布时间】:2019-08-26 22:02:58
【问题描述】:

我是机器学习的新手,正在学习 Google Colab 上的 Sentdex 教程。它应该是一个区分猫和狗图像的 ML 程序。但是,每当我运行我的代码时,我的“文件或目录”就会出现问题。

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\atlgwc16\\PetImages/Dog'

老实说,我不知道 Google Colab 将其文件存储在哪里,所以我不知道将图像文件夹放在哪里。

到目前为止,这是我的完整代码:

import numpy as np
import matplotlib.pyplot as plt
import os
import cv2
from tqdm import tqdm

DATADIR = "C:\Users\atlgwc16\PetImages"
CATEGORIES = ["Dog", "Cat"]

for category in CATEGORIES:
  path = os.path.join(DATADIR, category) 
  for img in os.listdir(path):
    img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
    plt.imshow(img_array, cmap = 'gray')
    plt.show()

    break

【问题讨论】:

  • 这是我的第一篇文章,如果我写错了请告诉我。
  • 尝试将宠物图片与 python 代码放在同一文件夹中,并使用 DATADIR = "PetImages" 访问它。
  • @Melanie Korrina FileNotFound 错误是一个非常普遍的错误。你能发布你的完整代码吗?这对于想要帮助回答您的问题但由于没有您的代码而无法重现您的错误的其他 Stack Overflow 用户来说非常有用。
  • @coltoneakins 谢谢你告诉我..我用我的完整代码改变了它......
  • @coltoneakins 非常感谢您的帮助!老实说,感激不尽,我终于明白如何修复我的代码了

标签: python file machine-learning google-colaboratory


【解决方案1】:

问题中引用的教程正在遵循:

https://pythonprogramming.net/loading-custom-data-deep-learning-python-tensorflow-keras/

由于您使用的是 Google Colab,因此您可以将狗和猫图像的 Kaggle 数据集上传到 Google 云端硬盘。请参阅 Google 提供的 Google Colab Jupyter 笔记本,其中解释了如何执行此操作:

https://colab.research.google.com/notebooks/io.ipynb#scrollTo=u22w3BFiOveA

然后,您可以从您的 Google Drive 访问文件(在这种情况下,是您将其上传到 Google Drive 后的训练集),其方式与访问您计算机上的本地文件的方式非常相似。

这是上面链接中提供的示例:

with open('/content/gdrive/My Drive/foo.txt', 'w') as f:
  f.write('Hello Google Drive!')
!cat /content/gdrive/My\ Drive/foo.txt

因此,由于您使用的是 Google Colab,因此您需要调整 Sentdex 教程中的代码,以便更好地使用您正在创建的笔记本。 Google Colab 使用 Jupyter 笔记本。笔记本中的每个单元都运行相同的“会话”。因此,如果您在一个单元格中导入 Python 模块,则可以在下一个单元格中使用它。就是这么神奇。

看起来像这样:

[单元格 1]

from google.colab import drive
drive.mount('/content/gdrive')

然后,您将允许 Google Colab 访问您的 Google 云端硬盘。

[单元格 2]

import numpy as np
import matplotlib.pyplot as plt
import os
import cv2
from tqdm import tqdm

DATADIR = '/content/gdrive/My Drive/PetImages/'

#^See?#
# You would need to go to Google Drive and create the 'PetImages' folder at the top level of your Google Drive. You would upload the data set to the PetImages folder creating a 'Dog' subfolder and a 'Cat' subfolder.

CATEGORIES = ["Dog", "Cat"]

for category in CATEGORIES:  # do dogs and cats
    path = os.path.join(DATADIR,category)  # create path to dogs and cats
    for img in os.listdir(path):  # iterate over each image per dogs and cats
        img_array = cv2.imread(os.path.join(path,img) ,cv2.IMREAD_GRAYSCALE)  # convert to array
        plt.imshow(img_array, cmap='gray')  # graph it
        plt.show()  # display!

        break  # we just want one for now so break
    break  #...and one more!

将数据集正确上传到 Google 云端硬盘并使用特殊的 google.colab 模块后,您应该能够轻松访问您的训练数据。 Google Colab 是一个基于云的工具,用于创建 Jupyter 笔记本和运行 Python 程序。因此,虽然类似于在您的计算机上本地运行 Python 程序,但它完全相同。如果您想在云中完全使用 Google Colab 的工作原理,这将有助于阅读它 - 使用 GDrive 来存储文件而不是您自己的计算机。请参阅我在上面从 Google 发布的链接。

愉快的编码。

【讨论】:

    【解决方案2】:

    我是为自己做的,它对我有用。 我使用本地驱动器(例如硬盘)中的数据集。 注意:您的数据集文件夹必须是 zip 格式。 首先,按照我的方法,您将从本地驱动器访问您的数据集。我使用谷歌colab。首先,在 google Colab 中创建一个 Jupyter notebook 并逐步运行以下代码:

    第一步:在笔记本中运行以下代码并从硬盘或本地驱动器上传数据集

     from google.Colab import files
       uploaded = files.upload()
    

    当流程 100% 完成并执行第二步时:

    第二步: 复制并运行以下代码,这一步将解压数据集

    import zipfile
    import io
    
    zf = zipfile.ZipFile(io.BytesIO(uploaded['DogVsCat.zip']), "r")
    zf.extractall()
    

    第三步:运行代码,它将导入所有需要的库

    import numpy as np
    import os
    import cv2
    import matplotlib.pyplot as plt
    

    这将为您导入所有必需的库。

    第四步: 指定路径以指定路径执行以下步骤: 拳头:check the image for more ease of your

    在左角文件夹图标上单击突出显示的文件夹,您将看到您的解压缩数据集,在我的情况下,我的数据集是“DogVsCat”, 注意:那里你会看到两种数据集 zip 和 unzip,你复制解压缩数据的路径。 右键单击它并从中复制路径并 运行以下代码:

     DIRECTORY ='/content/DogVsCats'
     CATEGORIES = ['cats', 'dogs']
    

    注意:请在 DIRECTORY(此目录是我的路径)路径中添加您的路径,而不是我的路径。并再次运行代码: 注意:请在 CATEGORIES 中添加您自己的文件夹名称,而不是我的文件夹名称,更多信息请参见图片: my dataset structure 最后创建火车数据

    第五步:

    data = []
    for category in CATEGORIES:
        path = os.path.join(DIRECTORY, category)
        for img in os.listdir(path):
            img_path = os.path.join(path, img)
            label = CATEGORIES.index(category)
            arr = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
            new_arr = cv2.resize(arr, (60, 60))
            data.append([new_arr, label])
    

    第六步:

    打印数据: 运行下面的代码给你看

    data
    

    第七步:打乱你的数据:

    import random
    
    random.shuffle(data)
    

    八步: 指定用于训练模型的特征和标签

    X = []
    y = []
    
    for features, label in data:
        X.append(features)
        y.append(label)
    X = np.array(X)
    y = np.array(y)
    

    第九步:打印特征

    X
    

    第十步:打印标签

     y
    

    请注意,由于时间不够,我无法与您分享所有代码。

    注意:为了更清楚,请查看我的代码图片: pic1-Of-My-Code pic2-of-my-code

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 2012-08-25
      • 2019-10-14
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多