问题标签 [transfer-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 迁移学习 - 将我的顶层与预训练模型合并将准确率降至 0%
我的目标是将顶层附加到 VGG19 等预训练模型,并使用合并模型进行一些预测。合并后的模型精度为 0。需要一点帮助。
我自己的顶层
在瓶颈特征上训练我的顶级模型并获得 72% 的准确率
在此处重新加载这些权重
代码未显示
加载 VGG19 底层以与我的顶层合并
合并 2 个模型
现在让我们在一些预测上端到端地测试合并模型
它完全失败,准确率为 0%
我怎样才能端到端地测试这个新模型——或者更确切地说,为什么它的预测如此糟糕?
tensorflow - Where can I download pretrained weights for tensorflow.contrib.slim.nets?
I see various places on the web and even in code from a homework assignment that just seems to know where pretrained checkpoints for various tf-slim models can be downloaded.
Example: http://download.tensorflow.org/models/inception_resnet_v2_2016_08_30.tar.gz
But if you visit download.tensorflow.org, there is no page returned so that you can pick and choose or just know the fully qualified URL to download the checkpoint files.
So if you don't know the name of the file (or what architecture you want to use), then how can you find these pretrained weight checkpoint files?
r - 在 Windows 下使用 R 中的 keras 从预先训练的 XCeption 架构中指定卷积基时出错
在尝试使用在 ImageNet 上预训练的 XCeption 架构中的卷积基础时,我正在做一些非常明显的事情吗?这是我在问题末尾产生错误的代码:
相比之下,下面使用 application_vgg16 的几乎相同的代码工作得很好:
我收到以下错误(使用 keras_2.1.5 R 包在 Windows 10 x86_64-w64-mingw32/x64(64 位)上使用 R 版本 3.4.0 (2017-04-21)):
py_call_impl(callable, dots$args, dots$keywords) 中的错误:ValueError: 变量 block1_conv1_bn_1/moving_mean/biased 已经存在,不允许。您的意思是在 VarScope 中设置 reuse=True 吗?最初定义于:
文件“D:\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第 1269 行,在 init self._traceback = _extract_stack() 文件“D:\Anaconda3\lib\site-packages\tensorflow \python\framework\ops.py",第 2506 行,在 create_op original_op=self._default_original_op, op_def=op_def) 文件“D:\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py”,行767, 在 apply_op op_def=op_def)
详细回溯:文件“D:\Anaconda3\lib\site-packages\keras\models.py”,第 467 行,添加层(x)文件“D:\Anaconda3\lib\site-packages\keras\engine\topology .py”,第 617 行,调用 output = self.call(inputs, **kwargs) 文件“D:\Anaconda3\lib\site-packages\keras\engine\topology.py”,第 2081 行,调用 output_tensors, _, _ = self.run_internal_graph(inputs, mask) 文件“D:\Anaconda3\l
进一步的背景,以防万一:我在 Chollet 和 Allaire 最优秀的书的第 5.3.1 节的“使用数据增强的特征提取”小节中尝试用 XCeption 替换 VGG16 时遇到了这个问题(“无数据增强的快速特征提取”中的所有内容) " 适用于 VGG16 和 XCeption)。
python - 在第一个训练 epoch 后训练准确率达到 1.0
我正在研究具有以下架构的迁移学习模型(基于 Vgg19)。
问题:训练错误结果(如下所示)反映了第一个时期的有意义的值。一旦模型达到第二个纪元,精度就达到 1.0 - 这是不可能的。当我将 VGG 切换到 Inception、添加正则化、在不同优化器(sgd、addagrad、rmsprop)之间切换或在损失(categorical_crossentropy、mean_squared_error)之间切换时,此行为不会改变。
此外,所有测试/验证图像的分类结果为 [[1. 0. 0. 0. 0.]] 表示分类器总是倾向于支持 class0。
问:有什么想法可能是这个问题的根本原因吗?
keras - 与训练“预缓存”特征相比,通过冻结 conv_base 进行 Keras 迁移学习的准确性较差
我正在使用 Keras 2.1.6 使用 2 种众所周知的标准方法进行迁移学习。两者都在 Chollet 书的第 5 章和https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/5.3-using-a-pretrained-convnet.ipynb中详细介绍
2种方式总结如下:
A) 从 conv_base 缓存表示,然后在你的 FC 上单独训练。这被认为很快,但不允许在 Keras 中进行数据扩充。
B) 用你的 FC 扩展 conv_base 模型并冻结 conv_base 权重,并端到端训练。这在 CPU 上训练成本很高,但会提供更大的灵活性,特别是添加数据增强。
对于我的特定数据集并使用 MobileNet(而不是 VGG),我尝试了两种方式。方法 (A) 在 10 个 epoch 后会给我大约 75% 的验证准确率,但方法 (B) 只会给我约 58%(没有数据增强)。但是,我希望它们大致相同。我试图调试并查看我做错了什么,但没有发现任何问题。
我读到的一件事是,据说在方法 B) 中被冻结的权重可能由于过去的错误而没有被冻结。但是当前的 Keras 版本 2.1.6 应该没有这个。这是我冻结 conv_base 中的权重的方法。
可能不需要循环,但我添加它以防万一。我通过在几个 epoch 后检查权重来验证权重实际上被冻结了。所以这可能不是导致问题的原因。
任何有关于如何调试或可能出错的提示的人,请告诉我。
我将两次运行都发布为 GitHub 要点。我在 google colab 上运行并导出了它们。相关部分应该从那些 Keras 导入开始。
方法A):https ://gist.github.com/kechan/38b4e6c85501246a2a49deadd26aefd7
方法B):https ://gist.github.com/kechan/f3fea62279ac847e9adc100351b7e9e8
更新
我进一步将这两种迁移学习方式结合到一个笔记本中,并尽可能地保持其他一切“恒定”。这是新的要点:
https://gist.github.com/kechan/9487fad4dfaeede212e3d9899fb21105
tensorflow - 如何在没有 TF-slim 的情况下使用多个预训练模型?
我想将不同预训练模型的不同部分使用/组合成一个模型。例如,我想使用 ResNet 的前几层(具有预训练的权重)作为编码器,然后将它们与来自另一个模型的解码器结合起来,然后我想进一步训练。有没有办法,最好不使用TF-slim?我正在使用 TensorFlow 1.4。
keras - 每次运行代码时,Google Colab Runtime 都会死掉
尝试使用 keras 训练我的深度学习模型时遇到问题。直到昨天都没有问题。现在,无论何时运行代码并且在它到达训练模型代码行(model.fit())之前,总是会显示消息“运行时死亡”。
一世。以前我尝试使用 4 GB 的数据集,它运行良好
ii. 尝试使用 8 GB 的数据集和运行时不断重新启动。
iii. 尝试使用 4 GB 和 5 GB 数据集,错误“运行时死亡”不断提示。
该代码与标准迁移学习方法相关,尝试使用 InceptionNet 和 InceptionResNet。我不会在这里分享代码,因为代码将在深度学习挑战之一中提交。
尝试运行以下代码时,显示只有 564 MB 的 GPU-RAM 可用于进一步处理。
分配了多少 GPU
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip 安装 gputil
!pip 安装 psutil
!pip 安装人性化
导入psutil
导入人性化
导入操作系统
将 GPUtil 导入为 GPU
GPU = GPU.getGPUs()
gpu = GPU [0]
定义打印():
进程 = psutil.Process(os.getpid())
print("Gen RAM Free:" + humanize.naturalsize(psutil.virtual_memory().available), "I Proc size:" + humanize.naturalsize(process.memory_info().rss))
print("GPU RAM 空闲:{0:.0f}MB | 已用:{1:.0f}MB | Util {2:3.0f}% | 总 {3:.0f}MB".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))
打印()
这可能是问题背后的原因吗?
keras - 使用来自 Keras 应用程序的模型,无需预训练权重
Keras 应用程序提供了一些最流行的模型架构的实现,其权重在一些最流行的数据集上进行了预训练。这些预定义的模型对于迁移学习类似于模型训练的数据集的问题非常方便。
但是,如果我有一个非常不同的问题并想在新数据集上完全训练模型怎么办?如果我没有预训练的权重,如何使用 Applications 中的模型基于我自己的数据集从头开始训练?
tensorflow - Resnet50 预测所有图像属于同一类
我已经在我的数据集上试验了 Keras 中可用的许多模型。这是一个 10 类图像分类问题。我尝试过从头开始训练,微调整个网络并使用每种架构进行迁移学习。它们中的大多数在我的数据集上表现都很好,除了 Resnet50 的迁移学习。这是我正在使用的模型:
所有图像都已调整为 (224 x 224) 像素大小。我尝试了具有各种学习率和批量大小的亚当优化器,例如:
但该模型仍然预测所有图像属于同一类,具体而言,该类包含所有图像的 26%。训练时,训练损失减少,验证损失似乎增加。训练结束时训练准确率在 95% 以上,但验证准确率停留在 26%。当同一个模型(Resnet50)从零开始训练或微调时,这个问题就不存在了。没有跳跃连接的模型(例如 InceptionV3、Xception、VGG16)一直表现出良好的性能,无论是从头开始训练、微调还是使用迁移学习。使用跳跃连接的其他模型(InceptionResnetV2、DenseNet)在使用迁移学习时不会预测所有图像属于同一类,但与“无跳跃连接”模型相比,准确度要低一些。再次,
所以我的问题是,
使用迁移学习时,跳过连接是否会损害模型的性能?
我正在使用带有 tensorflow 后端的 Keras。