无法将GCS数据集加载到我的Colab Tensorflow ipynb中

vyswwuz2  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(128)

我刚开始使用Google Colab学习Tensorflow,但我马上就面临着问题...
我要加载已存储在Google Cloud Storage中的现有个人数据集:

from google.colab import auth
auth.authenticate_user()
!gsutil ls gs://MY_BUCKET_NAME/

(其中MY_BUCKET_NAME实际上是“cloud-ai-platform-d 7863 b 94 - 84 f9...”)。这列出了该存储桶中的几个文件夹,如“MyDataSet_normal”、“MyDataSet_bad”,这意味着我的笔记本电脑能够读取此GCS存储桶。
然后,我按照https://www.tensorflow.org/datasets/gcs尝试加载数据集:
ds_train, ds_test = tfds.load(name="MyDataSet_normal", split=["train", "test"], data_dir="gs://MY_BUCKET_NAME", try_gcs=True),但它返回:
未找到数据集错误:找不到数据集MyDataSet_normal。
可用的数据集:

  • 抽象推理
  • 重音数据库
  • 美国科学院
  • ...
    看起来它试图在公共共享的 tensorflow_datasets 中查找“MyDataSet_normal”,而不是在MY_BUCKET_NAME中查找我自己的数据集。我试着在谷歌上搜索,没有找到任何有用的信息。
    我错过了什么?我如何告诉我的Colab笔记本,请查看MY_BUCKET_NAME中的数据集,而不是公共 tensorflow_datasets
    谢谢你!
46scxncf

46scxncf1#

我曾尝试谷歌云,你可以特定的路径,但我的步道期限到期,然后我使用谷歌驱动器,这是免费的。
你可以使用model.save或对称的方法,我把它们存储在一个数据库缓冲区,但结果和保存的它的权重可以保持在一个安全的驱动器不动。有很多功能的谷歌云和谷歌协作,但对于数据集存储,谷歌驱动器是足够的,除了过滤器。
示例:较长的终端距离可以保存提醒成本。

import io
import os
from os.path import exists

from apiclient import discovery
from httplib2 import Http
from oauth2client import client, file, tools
from googleapiclient.http import MediaIoBaseDownload

import tensorflow as tf
import tensorflow_io as tfio
import matplotlib.pyplot as plt

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Variables
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
n_folder = 50
encoding = "utf-8"
    
# define path variables
credentials_file_path = 'F:\\temp\\Python\\credentials\\credentials.json'
clientsecret_file_path = 'F:\\temp\\Python\\credentials\\client_secret_183167298301-pfhgtdf6k8r4918csmftemgk00ln8l4r.apps.googleusercontent.com.json'

# define API scope
SCOPE = 'https://www.googleapis.com/auth/drive'

# define store
store = file.Storage(credentials_file_path)
credentials = store.get()
# get access token
if not credentials or credentials.invalid:
    flow = client.flow_from_clientsecrets(clientsecret_file_path, SCOPE)
    credentials = tools.run_flow(flow, store)
    
# define API service
http = credentials.authorize(Http())
drive = discovery.build('drive', 'v3', http=http)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Fuctions
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
def download_file( file_id, filename, filetype ): 
    print( 'downfile: ' + filename + ': ' + filetype )

    request = drive.files().get_media( fileId=file_id )
    file = io.BytesIO()
    downloader = MediaIoBaseDownload( file, request )
    done = False

    if filetype == "application/vnd.google-apps.folder":
        return

    try:
        while done is False:
            status, done = downloader.next_chunk()
            print( F'Download {int(status.progress() * 100)}.' )
        
    except HttpError as error:
        print(F'An error occurred: {error}')
        file = None
    
    tf.io.write_file(
        filename, file.getvalue(), name='write_file'
    )

    return 

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Write result to file
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
file = 'F:\\datasets\\downloads\\Actors\\train\\Pikaploy\\01.tif'
image = tf.io.read_file( file )
image = tfio.experimental.image.decode_tiff(image, index=0)
image = tf.image.resize(image, [8,8], method='nearest')

filename='F:\\temp\\datasets\\9.tif'

with open( filename, "wb" ) as f:
    b = bytes(str(image), encoding='utf-8')
    f.write(b)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Read result to file
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
temp = tf.io.read_file(
    filename, name='dataset_9'
)
temp = tf.io.decode_raw(
    temp, tf.uint8, little_endian=True, fixed_length=None, name=None
)
temp = tf.constant(temp, shape=(1, 8, 8, 3))

输出量:

tf.Tensor(
[[[133 141 126 255]
  [ 94 107  90 255]
  [106 125  97 255]
  [141 140 122 255]
  [ 96 114  90 255]
  [ 88 106  82 255]
  [112 141  93 255]
  [116 127 111 255]]

 ...

 [[150 122 111 255]
  [180 152 141 255]
  [192 160 145 255]
  [185 153 138 255]
  [168 148 139 255]
  [189 158 138 255]
  [166 136 110 255]
  [ 68  83  64 255]]], shape=(8, 8, 4), dtype=uint8)

相关问题