问题标签 [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.
keras - 如何在迁移学习中添加连接?
我正在使用迁移学习进行语义分割。
直到这一步它工作正常。现在如何将此串联添加到网络中。
tensorflow - 迁移学习:从我的预训练模型训练产生大尺寸模型
假设我有两层卷积模型
我已经使用保存了这个模型
保存后模型数据文件大小约为 13 MB。
接下来,我想用这个模型来进行迁移学习。我删除了之前模型中的最后一个 softmax 层(10 个单元),并在新模型架构中添加了一个新的 conv 和新的 softmax 层(6 个单元)。
这次模型数据文件大小增加到 300 MB。我想知道是什么导致了这个模型大小的增长?
tensorflow - Tensorflow:在 Estimator model_fn 中集成 Keras 模型
我正在研究在估计器的 model_fn 中使用预训练的 keras.applications 模型的问题。
在我的研究小组中,我们正在使用 Tensorflow 估计器,因为它们通过并行训练和评估、训练的热启动、易于服务等提供了许多优势。因此,我需要一个可以在估计器的 model_fn 中使用的解决方案。
基本上,我想在我的 model_fn 中使用预训练的图,尽管我可以使用 keras.applications 中的模型。不幸的是,到目前为止,我无法以合适的方式将 keras.applications 模型插入 model_fn。
我想使用没有顶层的视觉提取器(resnet50、mobilenet、nasnet ...)来提取特征向量,稍后我可能想要微调这个提取。这将排除使用视觉提取器作为 model_fn 之外的预处理步骤。
在对我的真实数据集进行了多次尝试之后,我回到了良好的旧 MNIST 并提出了一个最小的示例来表明我在寻找什么。我在stackoverflow上环顾四周,最初遵循了这个解释。
在下面的示例中,我尝试将具有 mobilenet 架构的 MNIST 数据集分类为视觉提取器。有两个传递特性的示例版本和一个根本不使用 keras 模型的示例。该代码非常接近官方的 TF custom_estimator 示例。只有数据集被缩减以轻松适应内存,图像被放大并转换为 rgb 以适应网络结构。
示例案例 1 和 2 导致训练损失停滞不前和评估持续损失。第三种情况表明,在没有模型的情况下,损失确实减少了(尽管整体性能很差,但可以预期)在这个例子中,我不是为了高性能!我只是想表明我被困在哪里,并希望有人能提供帮助。
想法和进一步的想法:
- 评估损失是恒定的这一事实可能意味着模型根本没有传递输入。但是我该如何验证呢?在这种混合 tf/keras 的情况下,我无法让 tf.historgram 来绘制激活或权重。
- 另一篇文章表明 keras 在后台保留一个会话。尽管由于估算器 API 为训练和评估构建了两个图表,但这可能会在后台变得混乱。
- 如果有一种方法可以只使用带有权重的图形,我不需要 keras 模型的 OO 接口,但这怎么能工作呢?
- 在 keras 后端设置学习阶段也会在不使用模型特征的情况下造成损失的颠簸,表明两个会话的问题,因此在下面注释掉。
我还在 github 上打开了一个问题,因为在我看来这个功能应该可以工作。
下面,您可以找到独立的示例。它应该在复制/粘贴后立即用完。非常感谢任何帮助!
tensorflow - 该模型将其从预训练模型中知道的所有内容都误认为是我的自定义对象
我已经按照 pythonprogramming.net 的对象检测教程来识别基于 ssd_mobilenet_v1_coco 模型的小型机器人(我的自定义对象)。
我有大约 450 个我的机器人的标记图像。
我使用了 ssd_mobilenet_v1_coco 的官方示例配置,并且只进行了必要的更改,例如 num_class = 1,并将批量大小减少到 7,并训练直到我的损失始终在 1 和 2 之间(大约 10000 个 epoch)。
问题是,该模型从我的小型机器人的预训练状态中检测到它曾经知道的一切。因此,即使它们不是,它也将所有东西都识别为机器人。
python - 如何将 ResNet50 隐藏层与另一个模型输入连接起来?
我试图将 ResNet 中隐藏层的输出与另一个模型的输入连接起来,但出现以下错误:
ValueError:模型的输出张量必须是 Keras 的输出Layer
(因此保存过去的层元数据)
我正在使用来自 Keras 的 Concatenate 层,如如何在 keras 中连接两层?,但是它没有用。我可能会错过什么?我是否也必须添加一个致密层?这个想法是在第二个输入与第一个输入连接之前不要更改第二个输入(合并的输入将是第三个模型的输入)。
tensorflow - 在迁移学习:InceptionV3 中,我的损失是“nan”,准确度是“0.0000e+00”
我正在研究迁移学习。我的用例是对两类图像进行分类。我使用 InceptionV3 对图像进行分类。在训练我的模型时,我得到nan作为损失和0.0000e+00作为每个时期的准确度。我使用了 20 个 epoch,因为我的数据量很小:我有 1000 张图像用于训练,100 张用于测试,每批 5 条记录。
python-3.x - 我正在尝试生成数据集,但出现值错误“ValueError:'a' 不能为空,除非没有采样”
我正在使用包含超过 3000 张图像的数据集进行迁移学习。这是代码的一部分:
machine-learning - 哪种预训练模型最适合灾难分类
我是深度学习的新手,我想建立一个模型,从给定的图片中预测灾难的类型(洪水、火灾、基础设施损坏)。我想继续进行迁移学习,但我不确定哪种模型会给我最好的结果。
我尝试使用从头开始构建一个 cnn 模型,但我得到的测试准确度 = 70%,这很低。
型号代码如下:
PS:X 是一个形状为 (3000,512,512,3) 的 numpy 数组,Y 是一个形状为 (3000,1) 的 numpy 数组,每个类的值为 {0,1,2}
python - 使用内部层的输出来拟合 Keras 模型?
我有一个模型 M,它有两个输入:x_train1、x_train2。在经过大量的转换之后,这些输入被连接到一个单独的数组 x1_x2 中。稍后将其插入自动编码器,其中输出应为 x1_x2。但是当我尝试拟合模型时,出现以下错误:
ValueError:将符号张量提供给模型时,我们希望张量具有静态批量大小。得到具有形状的张量:(无,2080)
我知道问题在于我如何指定预期的输出。我能够使用诸如 np.zeros((96, 2080)) 之类的虚拟数组运行代码,但不能通过设置内部层的输出来运行代码。
我执行以下操作来拟合模型:
我怎样才能让 Keras 理解预期的输出应该是具有形状(number_of_input_images,2080)的内部层的输出?
caffe - 冻结 VGG19 网络中的权重以在 Caffe 中进行迁移学习
我问这个问题的原因是因为在 VGG19 中有批量标准化层(例如,与 VGG16 不同)。
我正在尝试在 Caffe 中训练 Faster-RCNN 网络。我这样做是:
- 下载 VGG19 ImageNet 预训练模型(权重 + prototxt 文件)
- 从 prototxt 文件中删除全连接层
- 在 VGG19 主干卷积层之上添加 RPN 和 Fast-RCNN 层
我没有改变任何关于lr_mult
卷积层的值。在 prototxt 文件中,卷积层(如conv1_1
等)具有非零lr_mult
值,而批量归一化层的lr_mult
值设置为 0(层名为 like conv1_1/bn
)。
批量归一化层被冻结的事实是否意味着卷积层也被冻结?或者我应该lr_mult
在名为 的图层中也设置为 0convX_X
吗?
更新:在将所有卷积层归零的同时运行另一个训练过程后lr_mult
,训练时间显着减少,这意味着答案是层中的lr_mult
值也需要设置为 0 convX_X
。