问题标签 [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 - tensorflow迁移学习:如何做批量大小而不是一个一个
在 tensorflow 迁移学习retrain.py示例中,他们一一获取每张图像的瓶颈值:
在 run_bottleneck_on_image 中,对于每个 image_data,它们会:
有没有办法一次获取 BATCH 大小的图像的瓶颈值,而不是一个一个地运行它,这在 GPU 上要慢得多且效率低下?
python - Keras模型参数在重新加载后都是“NaN”
我使用 Resnet50 进行迁移学习。我从 Keras 提供的预训练模型(“imagenet”)中创建了一个新模型。
训练我的新模型后,我将其保存如下:
后来,我重新加载它如下进行一些预测:
然后我检查权重是否合理如下(来自一层):
如果我只训练我的网络 1 个 epoch,我会在那里看到合理的值..
但是,如果我将模型训练 18 个 epoch(这需要 5-6 小时,因为我的计算机非常慢),我只会看到 NaN 值如下:
这里的诀窍是什么?
附录 1:
这是我创建模型的方法。
在这里,我有一个 Triplet_loss 函数,稍后我将需要它。
这是我从头到尾构建模型的方式。我给出了完整的代码来给出确切的图片。
需要注意的一件事是,我使所有批量标准化层“可训练”,以便可以使用我的训练数据更新与 BN 相关的参数。这会产生很多行,但我找不到更短的解决方案。
python - 从 Vgg16 网络导入后如何更改瓶颈特征的输入形状
我正在尝试使用 VGG16 Net 来训练模型进行图像分类,并希望使用此代码将没有密集层的权重转移到我的图像集。
在学习了瓶颈特征之后,模型的最后几层是:
最后一层尺寸为(None,3,3,512)
。这将是我的密集层的输入。
所以模型的输入形状是(3,3,512)
。我的问题是,当我尝试预测图像时,输入图像的大小为(224,224,3)
. 那么如何将输入图像的形状转换为模型的输入形状呢?
当我尝试预测它时,这是我收到的错误:
如何更改模型的输入形状或我必须预测的输入图像的输入形状?
python-3.x - 如何在我们自己的模型上进行迁移学习?
我正在尝试在我的 CNN 模型上应用迁移学习,但出现以下错误。
——
谢谢
tensorflow - 如何在不重新训练之前的 tensorflow 课程的情况下在其他课程上训练模型?
如何在不针对旧人物(旧课程)重新训练模型的情况下,在新人物(课程)上训练我的人脸识别系统?
我加载了谷歌的预训练模型 Resnet v1,以训练系统识别人物的面孔,结果我得到了一个分类器,可以对经过训练的人物进行分类。问题是,当我想在一个新人的脸上训练它们时,我必须同时在老人和新人的脸上训练模型,我想要的是在新人身上训练模型而不会失去对老人的训练
tensorflow - tensorflow - 导入图形以与另一个图形合并并执行训练后未初始化的变量
我的目标是将经过训练的图 A 与图 B 合并。我似乎无法初始化来自图 A 的变量。
导出 graph_def 和 meta_graph
导入到图 b 的图。
在会话中初始化变量
以下命令报告没有未初始化的变量。如果我在上面的初始化程序命令之前运行该命令,它会显示图 A 和 B 中的变量未初始化。
输出错误
任何可能出错的想法都非常感谢。
keras - 添加层停止学习 Keras
代码
我已经使用 keras(使用初始网络学习传输)在猫狗数据集(https://www.kaggle.com/c/dogs-vs-cats/data )上实现了图像分类器。代码运行没有错误,但从第一个 epoch 开始,验证集和训练集的准确率停留在 50%,并且损失没有减少。我正在使用带有氢的原子。
当我删除标记层时,问题就消失了,我似乎无法理解为什么会这样。我试图解决这个问题
- 不同的批次大小 - 4,16,64,256
- 更改优化器 - 尝试使用修改后的学习率的 adam、rmsprop、sgd
- 尝试了不同的激活层——relu、sigmoid 和leakyrelu
- 更改了 dropout - 当 dropout 为 0.9 时问题消失(即使图层无用,这显然是有效的,但也指出我缺少一些东西)
- 将最终激活更改为 sigmoid
有人可以告诉我我缺少什么,因为我想不出添加图层停止学习的任何原因
keras - 从用于图像分割的 U-Net 迁移学习 [Keras]
刚开始使用 Conv Nets 并尝试图像分割问题。我为 dstl 卫星图像特征检测竞赛获得了 24 张图像及其掩码。(https://www.kaggle.com/c/dstl-satellite-imagery-feature-detection/data)
我想我会尝试按照这里的提示https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html但我被卡住了。
我下载了 ZF_UNET_224 的预训练权重,这是该问题的第二名获胜者方法。我的图像蒙版包含 5 个对象,所以我弹出了最后一层,而不是这样:
我现在有这个:
我正在尝试遵循 Keras 教程中的确切步骤,但是当我这样做时
我收到一条错误消息说
我想我想要的是我的 224X224 图像中每个像素的概率,这样我就可以使用它们在原始图像上生成蒙版,但我不知道如何去做。
我有 24 个 8 波段输入图像及其标记 5 个对象的掩码。我想在这些图像上训练这个 U-Net,并在一些测试图像上放置掩码,并评估它们的 IoU 或加权对数损失。有什么帮助吗?
更新:
我正在使用与 Keras 教程中相同的生成器:
还有一件事:我的训练图像有 8 个波段,但架构只接受 3 个波段。我认为生成器最后只留下 1 个波段。也不知道如何解决这个问题。
python-3.x - 即使找到检查点,Tensorflow warm_start
我注意到,如果我的模型目录中有检查点,我标记为 warm_start 的变量正在热启动。如果已经有检查点,有没有办法不热启动?或者这与我从训练中排除这些变量的事实有什么关系?
我在自定义估计器中使用 warm_start 来初始化 inception_v4,我从中使用最后一层作为模型的输入。
目前我也将他们排除在培训之外:
但我也想尝试不排除他们,这将是一个更大的问题。