IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021-10-16 -> 正文阅读

[人工智能]2021-10-16

TensorFlow-similarity 学习笔记3

2021SC@SDUSC

Model definition
SimilarityModel()模型扩展了tensorflow.keras.model.Model,具有额外的功能和功能,允许索引和搜索类似示例。
如下方模型定义所示,相似性模型使用 MetricEmbedding() 层输出 64 维浮点数嵌入。此层是具有 L2 normalization的Dense layer。由于loss,模型可以学会最大限度地缩短类似示例之间的距离,并最大限度地扩大不同示例之间的距离。因此,嵌入空间中示例之间的距离是有意义的:距离越小,示例越相似。
能够使用距离作为两个示例的类似程度的有意义的原则,是启用fast ANN(近邻)搜索的原因。使用线性时间下的 ANN 搜索而不是标准二次 NN 搜索是允许深度相似性搜索扩展到数百万个项目的原因。此笔记本中使用的内置内存索引很容易缩放到一百万个索引示示例。如果你有足够的内存:)

def get_model():
    inputs = layers.Input(shape=(28, 28, 1))
    x = layers.experimental.preprocessing.Rescaling(1/255)(inputs)
    x = layers.Conv2D(32, 7, activation='relu')(x)
    x = layers.Conv2D(32, 3, activation='relu')(x)
    x = layers.MaxPool2D()(x)
    x = layers.Conv2D(64, 7, activation='relu')(x)
    x = layers.Conv2D(64, 3,activation='relu')(x)
    x = layers.Flatten()(x)
    x = layers.Dense(64, activation='relu')(x)

    outputs = MetricEmbedding(64)(x)
    return SimilarityModel(inputs, outputs)
model = get_model()
model.summary()

Model: “similarity_model_2"


Layer (type) Output Shape Param #

input_3 (InputLayer) [(None, 28, 28, 1)] 0


rescaling_2 (Rescaling) (None, 28, 28, 1) 0


conv2d_8 (Conv2D) (None, 26, 26, 32) 320


conv2d_9 (Conv2D) (None, 24, 24, 32) 9248


max_pooling2d_2 (MaxPooling2 (None, 12, 12, 32) 0


conv2d_10 (Conv2D) (None, 10, 10, 64) 18496


conv2d_11 (Conv2D) (None, 8, 8, 64) 36928


flatten_2 (Flatten) (None, 4096) 0


metric_embedding_3 (MetricEm (None, 64) 262208

Total params: 327,200
Trainable params: 327,200
Non-trainable params: 0


Layers, modules and models
Layers模块属于TensorFlow的一个稳定的中层API,其源码位于tensorflow/python/layers/layers.py
tf.nn,tf.layers, tf.contrib概述:
(1)tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation。 (2)tf.layers:主要提供的高层的神经网络,主要和卷积相关的,个人感觉是对tf.nn的进一步封装,tf.nn会更底层一些。 (3)tf.contrib:tf.contrib.layers提供够将计算图中的 网络层、正则化、摘要操作、是构建计算图的高级操作,但是tf.contrib包含不稳定和实验代码,有可能以后API会改变。
以上三个模块的封装程度是逐个递进的。
tf.layers模块提供的API:

input(…): 用于实例化一个输入 Tensor,作为神经网络的输入。
average_pooling1d(…): 一维平均池化层
average_pooling2d(…): 二维平均池化层
average_pooling3d(…): 三维平均池化层
batch_normalization(…): 批量标准化层
conv1d(…): 一维卷积层
conv2d(…): 二维卷积层
conv2d_transpose(…): 二维反卷积层
conv3d(…): 三维卷积层
conv3d_transpose(…): 三维反卷积层
dense(…): 全连接层
dropout(…): Dropout层
flatten(…): Flatten层,即把一个 Tensor 展平
max_pooling1d(…): 一维最大池化层
max_pooling2d(…): 二维最大池化层
max_pooling3d(…): 三维最大池化层
separable_conv2d(…): 二维深度可分离卷积层

  1. input
    tf.layers.Input() 这个方法是用于输入数据的方法,其实类似于 tf.placeholder,相当于一个占位符的作用,当然也可以通过传入 tensor 参数来进行赋值。

  2. batch_normalization
    此方法是批量标准化的方法,经过处理之后可以加速训练速度,其定义在
    参考:https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization

  3. dense
    dense,即全连接网络,layers 模块提供了一个 dense() 方法来实现此操作,定义在 tensorflow/python/layers/core.py 中,下面我们来说明一下它的用法。

  4. convolution
    convolution,即卷积,这里提供了多个卷积方法,如 conv1d()、conv2d()、conv3d(),分别代表一维、二维、三维卷积,另外还有 conv2d_transpose()、conv3d_transpose(),分别代表二维和三维反卷积,还有 separable_conv2d() 方法代表二维深度可分离卷积。它们定义在 tensorflow/python/layers/convolutional.py 中,其用法都是类似的,在这里以 conv2d() 方法为例进行说明。

  5. pooling
    pooling,即池化,layers 模块提供了多个池化方法,这几个池化方法都是类似的,包括 max_pooling1d()、max_pooling2d()、max_pooling3d()、average_pooling1d()、average_pooling2d()、average_pooling3d(),分别代表一维二维三维最大和平均池化方法,它们都定义在 tensorflow/python/layers/pooling.py 中

  6. dropout
    dropout 是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,可以用来防止过拟合,layers 模块中提供了 dropout() 方法来实现这一操作,定义在 tensorflow/python/layers/core.py。

  7. flatten
    flatten() 方法可以对 Tensor 进行展平操作,定义在tensorflow/python/layers/core.py

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:00:06  更:2021-10-17 12:02:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:26:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码