如何使用Python编写Tensorflow来组合层?

如何使用Python编写Tensorflow来组合层?

可以通过定义一个继承自’ResnetIdentityBlock’的类来使用Tensorflow组合层,从而定义可以组合层级的块。

更多Python相关文章,请阅读:Python 教程

至少包含一个层的神经网络称为卷积层。

TensorFlow Hub是一个包含预先训练的TensorFlow模型的存储库。 我们将学习如何使用来自TensorFlow Hub的模型,如何使用来自TensorFlow Hub的图像分类模型,以及如何通过使用预训练的分类器模型来对自定义图像类进行微调。这可以在不需要任何训练的情况下完成。

我们使用Google Colaboratory来运行下面的代码。Google Colab或Colaboratory可以帮助您在浏览器上运行Python代码,不需要进行任何配置,并且可免费访问GPU(图形处理单元)。Colaboratory是基于Jupyter Notebook构建的。

示例

print("组合层")
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("图层被称为")
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

输出

分层
该层称为
模型:“resnet_identity_block”
________________________________________________________________
层(类型)        输出形状      参数 #
================================================= ===============
conv2d(Conv2D)       多个           4
_________________________________________________________________
batch_normalization(批量多个    4
_________________________________________________________________
conv2d_1(Conv2D)      多个           4
_________________________________________________________________
batch_normalization_1(批次多个  8
_________________________________________________________________
conv2d_2(Conv2D)     多个           9
_________________________________________________________________
batch_normalization_2(批量多个 12
================================================= ===============
总共的参数:41
可训练的参数:29
不可训练的参数:12

解释

  • Resnet中的每个残差块都由卷积,批量正常化和快捷方式组成。

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

  • 当我们需要模型方法(如Model.fit,Model.evaluate和Model.save)时,可以从keras.Model继承。

  • 使用keras.Model而不是keras.layers.Layer有助于跟踪变量。

  • keras.Model跟踪其内部层,从而更容易检查这些层。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程