Tensorflow如何用于使用Python组成图层?

Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,可与Python结合使用,以实现算法,深度学习应用程序等等。它用于研究和生产目的。

可以使用下面的代码行在Windows上安装'tensorflow'软件包-

pip install tensorflow

Tensor是TensorFlow中使用的数据结构。它有助于连接流程图中的边缘。该流程图称为“数据流程图”。张量不过是多维数组或列表。

Keras在希腊语中的意思是“号角”。Keras被开发为ONEIROS(开放式神经电子智能机器人操作系统)项目研究的一部分。Keras是使用Python编写的深度学习API。它是一个高级API,具有可帮助解决机器学习问题的高效接口。

它在Tensorflow框架之上运行。它旨在帮助快速进行实验。它提供了在开发和封装机器学习解决方案中必不可少的基本抽象和构建块。

它具有高度的可扩展性,并具有跨平台功能。这意味着Keras可以在TPU或GPU集群上运行。Keras模型也可以导出为在Web浏览器或手机中运行。

Keras已经存在于Tensorflow软件包中。可以使用下面的代码行进行访问。

import tensorflow
from tensorflow import keras

我们将使用Keras Sequential API,它有助于构建用于与简单的层堆栈配合使用的顺序模型,其中每一层都具有一个输入张量和一个输出张量。

包含至少一层的神经网络称为卷积层。卷积神经网络通常由以下提到的层的某种组合组成-

  • 卷积层

  • 汇聚层

  • 致密层

卷积神经网络已用于为特定类型的问题(例如图像识别)产生出色的结果。

我们正在使用Google合作实验室来运行以下代码。Google Colab或Colaboratory可以帮助通过浏览器运行Python代码,并且需要零配置和对GPU(图形处理单元)的免费访问。合作已建立在Jupyter Notebook的基础上。

用于图像分类的转移学习背后的直觉是,如果在大型通用数据集上训练模型,则该模型可以有效地用作视觉世界的通用模型。它将学习到功能图,这意味着用户不必通过在大型数据集上训练大型模型而从头开始。

TensorFlow Hub是一个包含预训练过的TensorFlow模型的存储库。

我们将了解如何将TensorFlow Hub中的模型与tf.keras一起使用,如何使用TensorFlow Hub中的图像分类模型。

完成此操作后,可以执行传递学习来微调用于自定义图像类别的模型。这是通过使用预训练的分类器模型来拍摄图像并预测其图像来完成的。

无需任何培训即可完成此操作。

示例

print("Composing layers")
class ResnetIdentityBlock(tf.keras.Model):
   def __init__(self, kernel_size, filters):
      super(ResnetIdentityBlock, self).__init__(name='')
      filters1, filters2, filters3 = filters
      self.conv2a = tf.keras.layers.Conv2D(filters1, (1, 1))
      self.bn2a = tf.keras.layers.BatchNormalization()
      self.conv2b = tf.keras.layers.Conv2D(filters2, kernel_size, padding='same')
      self.bn2b = tf.keras.layers.BatchNormalization()
      self.conv2c = tf.keras.layers.Conv2D(filters3, (1, 1))
      self.bn2c = tf.keras.layers.BatchNormalization()
   def call(self, input_tensor, training=False):
      x = self.conv2a(input_tensor)
      x = self.bn2a(x, training=training)
      x = tf.nn.relu(x)
      x = self.conv2b(x)
      x = self.bn2b(x, training=training)
      x = tf.nn.relu(x)
      x = self.conv2c(x)
      x = self.bn2c(x, training=training)
      x += input_tensor
      return tf.nn.relu(x)
print("The layer is called")
block = ResnetIdentityBlock(1, [1, 2, 3])
_ = block(tf.zeros([1, 2, 3, 3]))
block.layers
len(block.variables)
block.summary()

代码信用-https://www.tensorflow.org/tutorials/customization/custom_layers

输出结果

Composing layers
The layer is called
Model: "resnet_identity_block"
_________________________________________________________________
Layer (type)        Output Shape      Param #
=================================================================
conv2d (Conv2D)       multiple          4
_________________________________________________________________
batch_normalization (BatchNo multiple   4
_________________________________________________________________
conv2d_1 (Conv2D)      multiple        4
_________________________________________________________________
batch_normalization_1 (Batch multiple  8
_________________________________________________________________
conv2d_2 (Conv2D)     multiple         9
_________________________________________________________________
batch_normalization_2 (Batch multiple  12
=================================================================
Total params: 41
Trainable params: 29
Non-trainable params: 12

解释

  • Resnet中的每个残差块均由卷积,批处理规范化和快捷方式组成。

  • 图层也可以嵌套在其他图层中。

  • 当我们需要诸如Model.fit,Model.evaluate和Model.save之类的模型方法时,可以从keras.Model继承它。

  • 本keras.Model是用来代替keras.layers.Layer,这有助于跟踪变量。

  • Akeras.Model跟踪其内部层,从而更易于检查层

猜你喜欢