欢迎访问

亚博提款可以秒到(中国)yabo官方网站-登录入口

你的位置:亚博提款可以秒到(中国)yabo官方网站-登录入口 > 新闻 > 欧洲杯体育tf.keras.layers.Conv2D(32-亚博提款可以秒到(中国)yabo官方网站-登录入口

欧洲杯体育tf.keras.layers.Conv2D(32-亚博提款可以秒到(中国)yabo官方网站-登录入口

时间:2024-12-06 04:27 点击:108 次

欧洲杯体育tf.keras.layers.Conv2D(32-亚博提款可以秒到(中国)yabo官方网站-登录入口

上一篇:《构建东谈主工智能模子基础:TFDS和Keras的完好搭配》

弁言:在东谈主工智能模子的西宾过程中,怎样高效管束和处理无数数据是一个艰苦的课题。TensorFlow 的 TFRecord 阵势为大畛域数据存储和处理提供了一种生动且高效的处分决策。在本节常识中,咱们将先容怎样运用 TFRecord 阿谀 TensorFlow 的 Dataset API 进行数据的索要、疗养和加载(ETL),从而更好地救援东谈主工智能模子的西宾和优化。通过 TFRecord,您不错将原始数据存储为一种轻量且易于处理的二进制阵势,从而在大畛域数据集的加载妥协析上赢得显耀的性能晋升。咱们将详备探索怎样构建 ETL 数据管谈,通过并行处理、批处理和预取等技巧,让数据加载与模子西宾过程愈加指点、快速。这种数据处理方式不仅在单台机器上证据出色,还能在多核 CPU、GPU 或 TPU 上膨胀,结束更大畛域的东谈主工智能模子西宾。无论您是处理图像、文本,如故其他类型的大畛域数据,清醒并掌持 TFRecord 过火优化技巧将为构建高效的数据管谈奠定基础,使您大概更快速、智能地西宾东谈主工智能模子。

清醒 TFRecord

当您使用 TFDS 时,数据会被下载并缓存到磁盘,因此您无需每次使用时齐再行下载。TFDS 使用 TFRecord 阵势进行缓存。若是您仔细不雅察下载过程,就会发现这小数——举例,图 4-1 展示了 cnn_dailymail 数据集怎样被下载、打乱并写入 TFRecord 文献。

图 4-1. 将 cnn_dailymail 数据集下载

图 4-1. 将 cnn_dailymail 数据集下载为 TFRecord 文献

在 TensorFlow 中,TFRecord 是存储和检索无数数据的首选阵势。这是一种相配疏漏的文献结构,按法例读取以提高性能。在磁盘上,文献的结构相对奏凯,每札记载由一个示意记载长度的整数、其对应的轮回冗余校验(CRC)、一个数据的字节数组及该字节数组的 CRC 构成。这些记载被指点成一个文献,若是数据集很大,则会进行分片。

举例,图 4-2 表现了 cnn_dailymail 的

举例,图 4-2 表现了 cnn_dailymail 的西宾集不才载后被分红了 16 个文献。

为了更直不雅地了解一个疏漏的示例,不错下载 MNIST 数据集并打印其信息:

data, info = tfds.load("mnist", with_info=True)

print(info)

在 info 中,您会看到其特征是这样存储的:

features=FeaturesDict({

'image': Image(shape=(28, 28, 1), dchk=1&type=tf.uint8),

'label': ClassLabel(shape=(), dchk=1&type=tf.int64, num_classes=10),

}),

与 CNN/DailyMail 的示例访佛,文献会被下载到 /root/tensorflow_datasets/mnist/<version>/files 目次。

您不错像这样将原始记载作为 TFRecordDataset 加载:

filename="/root/tensorflow_datasets/mnist/3.0.0/mnist-test.tfrecord-00000-of-00001"

raw_dataset = tf.data.TFRecordDataset(filename)

for raw_record in raw_dataset.take(1):

print(repr(raw_record))

请耀眼,文献名的位置可能会字据您的操作系统而有所不同。

<tf.Tensor: shape=(), dchk=1&type=string, numpy=b"\n\x85\x03\n\xf2\x02\n\x05image\x12\xe8\x02\n\xe5\x02\n\xe2\x02\x89PNG\r \n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x1c\x00\x00\x00\x1c\x08\x00\x00\x00\x00Wf \x80H\x00\x00\x01)IDAT(\x91\xc5\xd2\xbdK\xc3P\x14\x05\xf0S(v\x13)\x04,.\x82\xc5A q\xac\xedb\x1d\xdc\n.\x12\x87n\x0e\x82\x93\x7f@Q\xb2\x08\xba\tbQ0.\xe2\xe2\xd4\x b1\xa2h\x9c\x82\xba\x8a(\nq\xf0\x83Fh\x95\n6\x88\xe7R\x87\x88\xf9\xa8Y\xf5\x0e\x 8f\xc7\xfd\xdd\x0b\x87\xc7\x03\xfe\xbeb\x9d\xadT\x927Q\xe3\xe9\x07:\xab\xbf\xf4\ xf3\xcf\xf6\x8a\xd9\x14\xd29\xea\xb0\x1eKH\xde\xab\xea%\xaba\x1b=\xa4P/\xf5\x02\ xd7\\\x07\x00\xc4=,L\xc0,>\x01@2\xf6\x12\xde\x9c\xde[t/\xb3\x0e\x87\xa2\xe2\ xc2\xe0A<\xca\xb26\xd5(\x1b\xa9\xd3\xe8\x0e\xf5\x86\x17\xceE\xdarV\xae\xb7_\xf3 I\xf7(\x06m\xaaE\xbb\xb6\xac\r*\x9b$e<\xb8\xd7\xa2\x0e\x00\xd0l\x92\xb2\xd5\x15\ xcc\xae'\x00\xf4m\x08O'+\xc2y\x9f\x8d\xc9\x15\x80\xfe\x99[q\x962@CN|i\xf7\xa9!=\ \xab\x19\x00\xc8\xd6\xb8\xeb\xa1\xf0\xd8l\xca\xfb]\xee\xfb]*\x9fV\xe1\x07\xb7\xc 9\x8b55\xe7M\xef\xb0\x04\xc0\xfd&\x89\x01<\xbe\xf9\x03*\x8a\xf5\x81\x7f\xaa/2y\x 87ks\xec\x1e\xc1\x00\x00\x00\x00IEND\xaeB`\x82\n\x0e\n\x05label\x12\x05\x1a\x03\ n\x01\x02">

它是一个包含记载详备信息的长字符串,内部还包括校验和等本色。然则若是咱们依然知谈特征,咱们就不错创建一个特征形色,然后用它来明白数据。代码如下:

# 创建特征形色

feature_description = {

'image': tf.io.FixedLenFeature([], dchk=1&type=tf.string),

'label': tf.io.FixedLenFeature([], dchk=1&type=tf.int64),

}

def _parse_function(example_proto):

# 使用上头的字典明白输入的 `tf.Example` proto

return tf.io.parse_single_example(example_proto, feature_description)

parsed_dataset = raw_dataset.map(_parse_function)

for parsed_record in parsed_dataset.take(1):

print((parsed_record))

这样输出的本色就友许多了!最初,您不错看到图像是一个 Tensor,况且它包含一个 PNG。PNG 是一种压缩图像阵势,头部由 IHDR 界说,图像数据位于 IDAT 和 IEND 之间。若是仔细不雅察字节流,您不错看到它们。同期也有标签,它以整数阵势存储,包含值 2:

{

'image': <tf.Tensor: shape=(), dchk=1&type=string,

numpy=b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x1c\x00\x00\x00\x1c\x08\x00\x00\x00\x00Wf\x80H\x00\x00\x01)IDAT(\x91\xc5\xd2\xbdK\xc3P\x14\x05\xf0S(v\x13)\x04,.\x82\xc5Aq\xac\xedb\x1d\xdc\n.\x12\x87n\x0e\x82\x93\x7f@Q\xb2\x08\xba\tbQ0.\xe2\xe2\xd4\xb1\xa2h\x9c\x82\xba\x8a(\nq\xf0\x83Fh\x95\n6\x88\xe7R\x87\x88\xf9\xa8Y\xf5\x0e\x8f\xc7\xfd\xdd\x0b\x87\xc7\x03\xfe\xbeb\x9d\xadT\x927Q\xe3\xe9\x07:\xab\xbf\xf4\xf3\xcf\xf6\x8a\xd9\x14\xd29\xea\xb0\x1eKH\xde\xab\xea%\xaba\x1b=\xa4P/\xf5\x02\xd7\\\x07\x00\xc4=,L\xc0,>\x01@2\xf6\x12\xde\x9c\xde[t/\xb3\x0e\x87\xa2\xe2\xc2\xe0A<\xca\xb26\xd5(\x1b\xa9\xd3\xe8\x0e\xf5\x86\x17\xceE\xdarV\xae\xb7_\xf3AR\r!I\xf7(\x06m\xaaE\xbb\xb6\xac\r*\x9b$e<\xb8\xd7\xa2\x0e\x00\xd0l\x92\xb2\xd5\x15\xcc\xae'\x00\xf4m\x08O'+\xc2y\x9f\x8d\xc9\x15\x80\xfe\x99[q\x962@CN|i\xf7\xa9!=\xd7

\xab\x19\x00\xc8\xd6\xb8\xeb\xa1\xf0\xd8l\xca\xfb]\xee\xfb]*\x9fV\xe1\x07\xb7\xc9\x8b55\xe7M\xef\xb0\x04\xc0\xfd&\x89\x01<\xbe\xf9\x03*\x8a\xf5\x81\x7f\xaa/2y\x87ks\xec\x1e\xc1\x00\x00\x00\x00IEND\xaeB`\x82">,

'label': <tf.Tensor: shape=(), dchk=1&type=int64, numpy=2>

}

到这里,您不错读取原始的 TFRecord 并使用访佛 Pillow 的 PNG 解码库将其解码为 PNG。

在 TensorFlow 中管束数据的 ETL 过程

无论畛域大小,ETL 齐是 TensorFlow 用于西宾的中枢模式。咱们在本书中探索了小畛域的单台缠绵机模子构建,但换取的技巧不错用于大畛域西宾,跨多台机器并处理海量数据集。

ETL 过程的索要阶段是将原始数据从存储位置加载,并准备成不错疗养的阵势。疗养阶段是对数据进行操作,使其安妥或优化用于西宾。举例,将数据进行批处理、图像增强、映射到特征列等逻辑,齐不错动作疗养阶段的一部分。加载阶段则是将数据加载到神经采汇集进行西宾。

来看一下完整的代码,用来西宾“马匹或东谈主类”分类器。这里我添加了疑望,展示索要、疗养和加载阶段的场所位置:

import tensorflow as tf

import tensorflow_datasets as tfds

import tensorflow_addons as tfa

# 模子界说运转 #

model = tf.keras.models.Sequential([

tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(300, 300, 3)),

tf.keras.layers.MaxPooling2D(2, 2),

tf.keras.layers.Conv2D(32, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),

tf.keras.layers.Conv2D(64, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),

tf.keras.layers.Conv2D(64, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),

tf.keras.layers.Conv2D(64, (3,3), activation='relu'),

tf.keras.layers.MaxPooling2D(2,2),

tf.keras.layers.Flatten(),

tf.keras.layers.Dense(512, activation='relu'),

tf.keras.layers.Dense(1, activation='sigmoid')

])

model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])

# 模子界说铁心 #

# 索要阶段运转 #

data = tfds.load('horses_or_humans', split='train', as_supervised=True)

val_data = tfds.load('horses_or_humans', split='test', as_supervised=True)

# 索要阶段铁心 #

# 疗养阶段运转 #

def augmentimages(image, label):

image = tf.cast(image, tf.float32)

image = (image/255)

image = tf.image.random_flip_left_right(image)

image = tfa.image.rotate(image, 40, interpolation='NEAREST')

return image, label

train = data.map(augmentimages)

train_batches = train.shuffle(100).batch(32)

validation_batches = val_data.batch(32)

# 疗养阶段铁心 #

python

# 疗养阶段铁心

# 加载阶段运转

history = model.fit(train_batches, epochs=10, validation_data=validation_batches, validation_steps=1)

# 加载阶段铁心

通过这样的经由,您的数据管谈不错更少地受到数据和底层模式变化的影响。当您使用 TFDS 索要数据时,无论数据是小到不错放入内存,如故大到无法放入疏漏的机器中,齐不错使用换取的底层结构。用于疗养的 tf.data API 亦然一致的,因此无论底层数据源是什么,齐不错使用访佛的 API。虽然,一朝数据被疗养,加载数据的过程亦然一致的,无论您是在单个 CPU、GPU、多个 GPU 集群,以致是 TPU 群组上进行西宾。

关联词,加载数据的方式可能对西宾速率产生远大影响。接下来,咱们来望望怎样优化加载阶段。

优化加载阶段

在西宾模子时,咱们不错真切了解索要-疗养-加载(ETL)过程。咱们不错觉得数据的索要和疗养不错在职那里理器上进行,包括 CPU。事实上,这些阶段的代码推论诸如下载数据、解压缩数据、逐札记载处理等任务,这些齐不是 GPU 或 TPU 的坚强,是以这部分代码经常会在 CPU 上运行。然则在西宾阶段,GPU 或 TPU 能显耀晋升性能,因此若是有条目,最佳在这一阶段使用 GPU 或 TPU。

因此,在有 GPU 或 TPU 的情况下,理念念的作念法是将使命负载分派到 CPU 和 GPU/TPU 上:索要和疗养在 CPU 上完成,而加载则在 GPU/TPU 上完成。

假定您正在处理一个大型数据集。由于数据量大,必须以批次方式准备数据(即,推论索要和疗养),这样就会出现访佛图 4-3 所示的情况。当第一个批次正在准备时,GPU/TPU 处于优游气象。当这个批次准备好时,它会被发送到 GPU/TPU 进行西宾,但此时 CPU 则优游,直到西宾完成,CPU 才能运转准备第二个批次。在这里会有无数的优游时刻,因此咱们不错看到优化的空间。

图 4-3. 在 CPU/GPU 上西宾

逻辑上的处分决策是并行处理,让数据准备和西宾同期进行。这种过程称为活水线处理,见图 4-4。

图 4-4. 活水线处理

在这种情况下,当 CPU 准备第一个批次时,GPU/TPU 仍然莫得任务,因此处于优游气象。当第一个批次准备好后,GPU/TPU 不错运转西宾——同期,CPU 运转准备第二个批次。虽然,西宾第 n-1 批次和准备第 n 批次所需的时刻并不老是换取的。若是西宾时刻更快,GPU/TPU 会有一段优游时刻;若是西宾时刻更慢,CPU 会有一段优游时刻。遴荐合适的批次大小不错匡助优化这里的性能——由于 GPU/TPU 的时刻每每更不菲,您可能会尽量减少它们的优游时刻。

您可能依然耀眼到,当咱们从 Keras 中的疏漏数据集(如 Fashion MNIST)转向使用 TFDS 版块时,必须在西宾之前对它们进行批处理。这等于原因:活水线模子的存在使得无论数据集有多大,您齐不错使用一致的 ETL 模式来处理它。

并行 ETL 以提高西宾性能

TensorFlow 为您提供了所有并行化索要和疗养过程所需的 API。让咱们通过 Dogs vs. Cats 数据集和底层 TFRecord 结构来望望它们的神态。

最初,使用 tfds.load 获取数据集:

train_data = tfds.load('cats_vs_dogs', split='train', with_info=True)

若是您念念使用底层的 TFRecords,您需要走访下载的原始文献。由于数据集较大,它被分红多个文献(在 4.0.0 版块等分为 8 个)。

您不错创建这些文献的列表,并使用 tf.data.Dataset.list_files 来加载它们:

file_pattern = f'/root/tensorflow_datasets/cats_vs_dogs/4.0.0/cats_vs_dogs-train.tfrecord*'

files = tf.data.Dataset.list_files(file_pattern)

获取文献后,不错使用 files.interleave 将它们加载到数据阿谀,如下所示:

train_dataset = files.interleave(

tf.data.TFRecordDataset,

cycle_length=4,

num_parallel_calls=tf.data.experimental.AUTOTUNE

)

这里有几个新观点,咱们来花点时刻讲明一下。

cycle_length 参数指定同期处理的输入元素数目。稍后您会看到解码记载的映射函数,它会在从磁盘加载时解码记载。因为 cycle_length 建树为 4,是以这个过程会一次处理四札记载。若是不指定该值,它会字据可用的 CPU 中枢数目自动折服。

num_parallel_calls 参数用于指定要推论的并行调用数目。在这里建树为 tf.data.experimental.AUTOTUNE 不错使代码更具可移植性,因为值会字据可用的 CPU 动态调整。阿谀 cycle_length 参数,您就建树了并行度的最大值。举例,若是在自动调整后 num_parallel_calls 建树为 6 而 cycle_length 是 4,那么会有六个孤立线程,每个线程一次加载四札记载。

现在索要过程依然并行化了,咱们来望望怎样并行化数据的疗养。最初,创建加载原始 TFRecord 并将其疗养为可用本色的映射函数——举例,将 JPEG 图像解码成图像缓冲区:

def read_tfrecord(serialized_example):

feature_description = {

"image": tf.io.FixedLenFeature((), tf.string, ""),

"label": tf.io.FixedLenFeature((), tf.int64, -1),

}

example = tf.io.parse_single_example(serialized_example, feature_description)

image = tf.io.decode_jpeg(example['image'], channels=3)

image = tf.cast(image, tf.float32)

image = image / 255

image = tf.image.resize(image, (300, 300))

return image, example['label']

如您所见,这是一个典型的映射函数,莫得作念任何特定的使命来使它并行化。并行化将在调用映射函数时完成。以下是结束程序:

import multiprocessing

cores = multiprocessing.cpu_count()

print(cores)

train_dataset = train_dataset.map(read_tfrecord, num_parallel_calls=cores)

train_dataset = train_dataset.cache()

最初,若是您不念念自动调优,不错使用 multiprocessing 库获取 CPU 的数目。然后,在调用映射函数时,您不错将此 CPU 数目作为并行调用的数目传入。等于这样疏漏。

cache 程序会将数据集缓存到内存中。若是您的 RAM 弥散多,这会显耀加速速率。不外,若是在 Colab 中使用 Dogs vs. Cats 数据集尝试此操作,可能会导致编造机崩溃,因为数据集无法十足装入内存。在这种情况下,Colab 的基础关节会为您提供一个新的、更高 RAM 的机器。

加载和西宾过程相同不错并行化。在对数据进行打乱和批处理时,还不错字据可用 CPU 中枢数目进行预取。代码如下:

train_dataset = train_dataset.shuffle(1024).batch(32)

train_dataset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)

当西宾集十足并行化后,您不错像昔日一样西宾模子:

model.fit(train_dataset, epochs=10, verbose=1)

我在 Google Colab 中考研了这小数,发现这些用于并行化 ETL 过程的独特代码将每个 epoch 的西宾时刻从 75 秒减少到约 40 秒。如斯疏漏的篡改的确将我的西宾时刻减半!

细致

到此为止咱们完成了先容谷歌的 TensorFlow Datasets,这是一个不错让您走访各式数据集的库,从小畛域学习数据集到用于推敲的全畛域数据集。您看到它们使用了通用 API 和阵势,以减少您获取数据时所需编写的代码量。咱们还征询了 ETL 过程,它是 TFDS 想象的中枢,尽头是咱们探索了并行化索要、疗养和加载数据以提高西宾性能。在接下来的常识中,咱们将细分学习目下最热的东谈主工智能主题欧洲杯体育,当然讲话处理技巧。

亚博体育西蒙·马利克在脸部分析限制领有专有的才调-亚博提款可以秒到(中国)yabo官方网站-登录入口

Alternate Text

亚博体育西蒙·马利克在脸部分析限制领有专有的才调-亚博提款可以秒到(中国)yabo官方网站-登录入口

要是你温文英国王室的新闻,应该知谈外界对哈里王子的身世有各样估量。其中一个传言合计,哈里王子是他的母亲戴安娜王妃与马术进修詹姆斯·休伊特的私生子。这一不雅点的原因在于哈里与休伊特在外貌上有几分相似,尤其是他们的发色确实王人备疏通,因此在英国民间,许多东谈主合计哈里王子是戴安娜王妃与马术进修詹姆斯·休伊特的私生子。 那么,真相到底是什么呢?凭证英国媒体在11月3日发布的报谈,有内行利用时候妙技对此事件进行了盘考分析,揭示了真相。 当地时刻11月3日,英国媒体《逐日星报》发布了一篇标题为《詹姆斯·

查看更多

体育游戏app平台 曾几何时-亚博提款可以秒到(中国)yabo官方网站-登录入口

Alternate Text

体育游戏app平台 曾几何时-亚博提款可以秒到(中国)yabo官方网站-登录入口

在这片清明的地盘上, 风靡云涌,厚谊难断。 中印边境,海浪再起, 莫迪心中,留一后手。 中印边境的争议,这场漫长的博弈, 似乎又迎来了新的调动。 最近的音尘传来,两边在多轮谈判后实现了一些共鸣, 似乎是“妥协”的朝阳。 然则,莫迪老是留有一手, 他的计谋让东谈主捉摸不透。 众看官可曾想过,这背后的故事究竟有若干鬈曲? 在这片高原之上,历史的尘埃依旧满盈。 曾几何时,两国间的相持如团结场莫得硝烟的干戈, 每一步齐小心翼翼。 如今,流程屡次对话与推敲, 两边终于在一些关键问题上实现了共鸣。 这一音

查看更多

亚bo体育网 一朝发生核泄露-亚博提款可以秒到(中国)yabo官方网站-登录入口

Alternate Text

亚bo体育网 一朝发生核泄露-亚博提款可以秒到(中国)yabo官方网站-登录入口

中东地方很是紧张亚bo体育网,各方武装力量随时准备行动。就在几小时前,埃及亚得里亚核基地遭到了前所未有的强烈抨击,这一事件令悉数这个词中东地区为之漂泊。 现场风光令东谈主肉痛,烟雾填塞如同地狱。爆炸声接连接续,炮火的轰鸣扯破了夜空。 不竭有伤者被改换,堆积如山的滔滔浓烟直上云端。据报谈,已稀有十名埃及军东谈主和服务主谈主员伤一火。 这次抨击背后的主谋究竟是谁?指标又为何?在地方不竭恶化的情况下,中东地区是否会成为下一个干戈的旋涡?让咱们共同深切分析这一令东谈主胆寒的迫切事件。 当先,亚得里亚核

查看更多

亚博体育需要经过一系列的加工和处分法子-亚博提款可以秒到(中国)yabo官方网站-登录入口

Alternate Text

亚博体育需要经过一系列的加工和处分法子-亚博提款可以秒到(中国)yabo官方网站-登录入口

莫桑比克锆矿栽植详细亚博体育 莫桑比克,这个位于非洲东南部的国度,以其丰富的矿产资源而驰名。其中,锆矿资源的开拓和应用逐渐成为了该国经济发展的一大撑合手。锆矿栽植的遴荐和应用,关于锆矿开拓的后果和品性至关病笃。 1.锆矿开拓栽植 在锆矿开拓经过中,最初需要使用到的是挖掘机。这些大型机械粗略真切地下,将锆矿石从矿体中剥离出来。挖掘机的遴荐需要斟酌其功率、雄厚性和耐用性,以确保长时代、高后果的功课。 紧随自后的是装载机和运载车辆。装载机肃肃将挖掘机剥离出的锆矿石装入运载车辆中,而运载车辆则将这些矿

查看更多
服务热线
官方网站:www.dfjx.cn
工作时间:周一至周六(09:00-18:00)
联系我们
QQ:14939993473
邮箱:dd6cd8e5@outlook.com
地址:新闻科技园4091号
关注公众号

Powered by 亚博提款可以秒到(中国)yabo官方网站-登录入口 RSS地图 HTML地图


亚博提款可以秒到(中国)yabo官方网站-登录入口-欧洲杯体育tf.keras.layers.Conv2D(32-亚博提款可以秒到(中国)yabo官方网站-登录入口

回到顶部