可以使用tf.keras.utils.get_file()加载本地zip文件吗?

时间:2020-02-11 09:50:02

标签: tensorflow keras google-colaboratory

我有一个包含4个图像文件夹的zip文件。我在Google Colab上遵循的教程使用了类似的zip文件,但该文件是在线托管的,并且链接以必要的origin参数的值给出。我将zip文件上传到Google云端硬盘,并可以在Colab。可以使用get_file()加载本地文件吗?

2 个答案:

答案 0 :(得分:4)

我最近自己遇到了这个问题。找不到答案后,只好戴上旧思维帽,解决了。 因此,在 tf.keras.utils.get_file() 的文档中,它指出前两个参数是强制性的,其余的可以根据内部结构默认。这些是缓存中用于引用和命名的 FILENAME,以及 必须 是从中获取图像/数据的 URL 的 ORIGIN。 myFile = sys.args[1] # just for example... fullPath = os.path.abspath("./" + myFile) # or similar, depending on your scenario data_for_processing = keras.utils.get_file(myFile, 'file://'+fullPath) 古老的“file://”是本地文件技巧的 URL。 我希望这可以帮助很多人。

答案 1 :(得分:3)

get_file()用于从URL加载文件,因此无法加载本地文件。如果已安装gdrive,并且可以通过colab访问存储在drive中的文件,则可以使用路径'/gdrive/My Drive/your_file'访问这些文件。对我来说,我需要解压缩文件,所以我使用

import zipfile
with zipfile.ZipFile(your_file, 'r') as zip_ref:
    zip_ref.extractall(directory_to_extract_to)

我使用'/content'作为directory_to_extract_to。

然后您可以按常规方式访问数据。

base_dir = '/content/my_folder'    

train_generator = datagen.flow_from_directory(
base_dir,
target_size=(IMAGE_SIZE, IMAGE_SIZE),
batch_size=BATCH_SIZE, 
subset='training')