- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
“显然!”,您可能会说……但是有一个显着差异,我无法通过随机初始化的差异来解释。
取两个预训练的 basenet(在平均池化层之前)并用相同的图像馈送它们,您会注意到输出特征不遵循相同的分布。具体来说, TensorFlow 与 相比,ReLU 的主干具有更多抑制特征pytorch 的脊梁。此外,如第三张图所示,两个框架之间的动态范围不同。
当然,这种差异被解决分类任务的密集层吸收了,但是:这种差异可以用训练过程中的随机性来解释吗?还是训练时间?或者还有什么可以解释这种差异的原因吗?
重现代码:
import imageio
import numpy as np
image = imageio.imread("/tmp/image.png").astype(np.float32)/255
import tensorflow as tf
inputs = image[np.newaxis]
model = tf.keras.applications.ResNet50(include_top=False, input_shape=(None, None, 3))
output = model(inputs).numpy()
print(f"TensorFlow features range: [{np.min(output):.02f};{np.max(output):.02f}]")
import torchvision
import torch
model = torch.nn.Sequential(*list(torchvision.models.resnet50(pretrained=True).children())[0:8])
inputs = torch.tensor(image).permute(2,0,1).unsqueeze(0)
output = model(inputs).detach().permute(0,2,3,1).numpy()
print(f"Pytorch features range: [{np.min(output):.02f};{np.max(output):.02f}]")
输出
TensorFlow features range: [0.00;25.98]
Pytorch features range: [0.00;12.00]
注意:它类似于任何图像。
最佳答案
Keras 和 PyTorch 在标准深度学习模型的定义、修改、训练、评估和导出方面存在显着差异。对于某些部分,它纯粹是关于不同的 API 约定,而对于其他部分,则涉及抽象级别之间的根本差异。
Keras 操作很多 更高级别的抽象 .它更即插即用,通常更简洁,但以牺牲灵活性为代价。 PyTorch 提供了更明确和详细的代码。大多数情况下,它的意思是 可调试且灵活的代码 ,只有很小的开销。然而,PyTorch 中的训练更加冗长。这很痛苦,但有时提供了很大的灵活性。
除此之外,在 TensorFlow 和 PyTorch 中创建相同网络的方式是不同的。在 TensorFlow 中,一个网络 预测概率 (具有内置的 softmax 函数),其内置的成本函数假设它们使用概率。在 PyTorch 中我们有更多的自由,但首选的方式是 返回日志 .这样做是出于数字原因,执行 softmax 然后对数损失意味着执行不必要的 log(exp(x)) 操作。因此,我们不使用 softmax,而是使用 LogSoftmax(和 NLLLoss)或将它们组合成一个 nn.CrossEntropyLoss 损失函数。
Source
关于tensorflow - ImageNet 预训练的 ResNet50 主干在 Pytorch 和 TensorFlow 之间有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67365237/
背景 我一直在玩Deep Dream和 Inceptionism ,使用 Caffe可视化 GoogLeNet 层的框架,为 Imagenet 构建的架构项目,一个用于视觉对象识别的大型视觉数据库。
有谁知道ImageNet中图片的分辨率数据集? 抱歉,我在他们的网站或任何 papers 中都找不到它。 . 最佳答案 图像的尺寸和分辨率各不相同。许多应用程序将所有图像的大小调整/裁剪为 256x2
我无法从他们的官方网站下载原始 ImageNet 数据集。但是,我发现 pytorch 将 ImageNet 作为其 Torch 视觉数据集之一。 一季度。那是原始的 ImageNet 数据集吗? Q
这是我的项目的描述: 数据集 1:更大的数据集,包含图像的二进制类。 数据集 2 : 包含 2在外观上与 Dataset1 非常相似的类.我想通过学习 Dataset1 来制作一个使用迁移学习的模型并
我有两个关于如何加载 Imagenet 数据的问题。我下载了ILSVRC2012验证集(因为训练集太大)但我有两个问题。 我不明白如何找到标签。只有文件名类似于“ILSVRC2012_val_0000
我需要一个带注释的数据集,Imagenet 的子集,其中包括尺寸为 224x224 的方形图像。 我尝试了 Tiny Imagenet 和 Cifar-10,但它们由相当小的图像组成,不符合我的需求。
我被告知以下“小狗”图像 URL 列表来自 imagenet。 https://github.com/asharov/cute-animal-detector/blob/master/data/pup
我正在使用在 Imagenet 上预训练的 Keras Inception_v3: base_model = InceptionV3(weights='imagenet', include_top=T
用于训练的标签和用于验证的标签是否相同?我认为它们应该是相同的;然而,网上提供的标签似乎存在差异。当我从官方网站下载其验证数据的 imagenet 2012 标签时,我得到的标签以 kit_fox 开
我正在使用深度学习caffe框架进行图像分类。 我有一些有头像的硬币。其中一些是左向的,一些是右向的。 为了对它们进行分类,我使用常见的方法 - 从已捕获大量图像模式的预训练 ImageNet 网络中
我想修改 ImageNet caffe 模型,如下所述: As the input channel number for temporal nets is different from that of
在我的实验中,我想在 imagenet 上训练我的自定义模型数据集。为简单起见,我对 10/100 类分类任务感兴趣。但是,直接下载imagenet数据集来自 tfds需要大量的硬盘空间。是否有任何解
我一直在使用单个GPU(GeForce GTX 980 Ti,6GB)的中等机器上训练Inception V3。最大批处理大小似乎在40左右。 我使用了inception_train.py文件中指定的
如果我们查看 Keras 中的可用模型列表,如图所示 here我们看到几乎所有这些都是用 weights='imagenet' 实例化的。例如: model = VGG16(weights='imag
我在一所大学里,所有的文件系统都在一个远程系统中,无论我在哪里登录我的帐户,我都可以访问我的主目录。即使我通过 SSH 命令登录到 GPU 服务器。这就是我使用 GPU 服务器读取数据的条件。 目前,
如果我们查看 Keras 中的可用模型列表,如图所示 here我们看到几乎所有这些都是用 weights='imagenet' 实例化的。例如: model = VGG16(weights='imag
ImageNet 图像大小不一,但神经网络需要固定大小的输入。 一种解决方案是采用尽可能大的裁剪尺寸,以图像的中心点为中心。这有效,但有一些缺点。通常,图像中感兴趣对象的重要部分被剪掉,甚至在某些情况
我想在已在 ImageNet 上训练的模型上使用迁移学习来创建图像分类器。 如何用我自己的自定义分类器替换 torchvision.models ImageNet 分类器的最后一层? 最佳答案 获取预
2015 年 ImageNet 大规模视觉识别挑战赛 (ILSVRC2015) 使用新数据集引入了一项称为视频对象检测 (VID) 的任务。 所以我去 ILSVER2015 网站并尝试查找数据集。 h
如何计算模型中的参数数量,例如LENET 用于 mnist,或 ConvNet 用于 imagent 模型等。 caffe 中是否有任何特定函数可以返回或保存模型中的参数数量。 问候 最佳答案 这是一
我是一名优秀的程序员,十分优秀!