Keras中模型 《th与tf的区别》、《notop的含义》

th与tf的区别
==================

Keras提供了两套后端,Theano和Tensorflow, 
th和tf的大部分功能都被backend统一包装起来了,但二者还是存在不小的冲突,有时候你需要特别注意Keras是运行在哪种后端之上,它们的主要冲突有:

dim_ordering,也就是维度顺序。比方说一张224*224的彩色图片,theano的维度顺序是(3,224,224),即通道维在前。而tf的维度顺序是(224,224,3),即通道维在后。 
卷积层权重的shape:从无到有训练一个网络,不会有任何问题。但是如果你想把一个th训练出来的卷积层权重载入风格为tf的卷积层……说多了都是泪。我一直觉得这个是个bug,数据的dim_ordering有问题就罢了,为啥卷积层权重的shape还需要变换咧?我迟早要提个PR把这个bug修掉! 
然后是卷积层kernel的翻转不翻转问题,这个我们说过很多次了,就不再多提。 
数据格式的区别,channels_last”对应原本的“tf”,“channels_first”对应原本的“th”。(tf 默认的格式是(rows,cols,channels),f 默认的格式是(channels,rows,cols)) 
以128x128的RGB图像为例,“channels_first”应将数据组织为(3,128,128),而“channels_last”应将数据组织为(128,128,3)。 
譬如: 
vgg16_weights_th_dim_ordering_th_kernels_notop.h5
vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5 

注意:在th下,由于模型默认的格式是channel_last的(height,wdith,channels),如果要使用channel_first(channels,height,wdith)的格式,可以在最前面加上这一句:

K.set_image_data_format('channels_first')

rows是行的大小,即图像的height。

cols是列的大小,即图像的width。

 

notop的含义

==================

notop代表是否包括顶层的全连接层,默认include_top=True,包括全连接层。

 

以VGG16模型为例:

keras.applications.vgg16.VGG16(include_top=True, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000)

VGG16 模型,权值由 ImageNet 训练而来。

该模型可同时构建于 channels_first (通道,高度,宽度) 和 channels_last (高度,宽度,通道)两种输入维度顺序。

模型默认输入尺寸是 224x224。

参数

  • include_top: 是否包括顶层的全连接层。
  • weightsNone 代表随机初始化, 'imagenet' 代表加载在 ImageNet 上预训练的权值。
  • input_tensor: 可选,Keras tensor 作为模型的输入(即 layers.Input() 输出的 tensor)。
  • input_shape: 可选,输入尺寸元组,仅当 include_top=False 时有效,否则输入形状必须是 (244, 244, 3)(对于 channels_last 数据格式),或者 (3, 244, 244)(对于 channels_first 数据格式)。它必须拥有 3 个输入通道,且宽高必须不小于 32。例如 (200, 200, 3) 是一个合法的输入尺寸。
  • pooling: 可选,当 include_top 为 False 时,该参数指定了特征提取时的池化方式。
    • None 代表不池化,直接输出最后一层卷积层的输出,该输出是一个四维张量。
    • 'avg' 代表全局平均池化(GlobalAveragePooling2D),相当于在最后一层卷积层后面再加一层全局平均池化层,输出是一个二维张量。
    • 'max' 代表全局最大池化
  • classes: 可选,图片分类的类别数,仅当 include_top 为 True 并且不加载预训练权值时可用
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值