问题标签 [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.
machine-learning - NLP 预训练模型(例如 ELMo、Bert)的数据预处理
我计划根据手头的数据(人们输入的笔记)从头开始训练 ELMo 或 Bert 模型。我现在拥有的数据都是由不同的人输入的。句子中存在拼写、格式和不一致的问题。在阅读了 ELMo 和 Bert 论文后,我知道这两个模型都使用了很多类似 Wikipedia 的句子。我找不到任何已处理的训练样本或任何用于 Emlo 或 Bert 模型的预处理教程。我的问题是:
- Bert 和 ELMo 模型是否具有标准数据预处理步骤或标准处理数据格式?
- 根据我现有的脏数据,有什么方法可以预处理这些数据,使生成的单词表示更准确?
machine-learning - 迁移学习完全不同的领域和任务
我一直在阅读一些关于迁移学习的论文和博客文章。我意识到有些人说“不同”,有些人说“不同但相似”。现在,我很困惑。
比如说,
D
是域。T
是任务。
a
是源,因此源域是Da
,源任务是Ta
。
a'
与 a 不同但相似。
b
不同于a。
Ms
是从Da
和学习的源模型Ta
。
Mt
是目标模型。
在哪个目标域-任务组合中,Ms 可以将其知识转移到 Mt 中?
老实说,我知道 5、6、7 是可能的,因为论文是这么说的。我怀疑 8 会起作用(不是吗?)。
但是域或任务为 b 的 1、2、3、4 呢?
machine-learning - 以 YOLO 为例进行微调和迁移学习
我有一个关于微调和迁移学习的一般性问题,当我试图弄清楚如何最好地让 yolo 检测我的自定义对象(手)时出现了这个问题。
对于可能包含大量虚假信息的长文本,我深表歉意。如果有人有耐心阅读并帮助我消除困惑,我会很高兴。
经过大量的谷歌搜索,我了解到很多人认为微调是迁移学习的一个子类,而另一些人则认为他们使用不同的方法来训练模型。同时,人们区分仅在自定义数据集上重新训练模型的最后一个分类器层与重新训练模型的其他层(并且可能添加一个全新的分类器而不是重新训练?)。两种方法都使用预训练模型。
我最后的困惑在于:我按照以下说明进行操作:https : //github.com/thtrieu/darkflow 通过darkflow 训练tiny yolo,使用以下命令:
# Initialize yolo-new from yolo-tiny, then train the net on 100% GPU:
flow --model cfg/yolo-new.cfg --load bin/tiny-yolo.weights --train --gpu 1.0
但是这里会发生什么?我想我只重新训练分类器,因为说明说要更改配置文件中最后一层的类数。但话又说回来,还需要更改倒数第二层(卷积层)中的过滤器数量。
最后,说明提供了替代培训的示例:
# Completely initialize yolo-new and train it with ADAM optimizer
flow --model cfg/yolo-new.cfg --train --trainer adam
我完全不明白这与迁移学习的不同方式有何关系。
deep-learning - 为意大利语发布谷歌 BERT 的单一语言模型是否值得?
我目前正在研究我的论文,该论文与使用斯坦福大学 SQUAD 数据集的意大利语翻译自动问答有关。我将使用 Google 的 BERT https://github.com/google-research/bert,因为它目前在 SQUAD 挑战赛中取得了最好的成绩。Google 为包括意大利语在内的多种语言提供了多语言预训练模型。
仅针对意大利语发布 Google BERT 的单一语言模型是否值得?我的假设是单一语言模型意味着更小的网络意味着更少的训练时间和更小的规模。
python - 如何使用预先训练的权重为 keras 中的特定通道设置权重?
我正在尝试使用 Keras 提供的预训练权重对 Resnet50 架构(我基于 keras 实现构建我的架构)进行微调。
这种预训练模型的缺点是它已经在具有树通道的图像上进行了训练。在我的情况下,输入有三个以上的通道。它可以是 5、6、...
该通道变化意味着第一个 conv1 层取决于通道数。因此,要使用预训练的权重,我有两种可能性。
在 conv1 层之后加载权重,对于 conv1 之前的层,它们被设置为随机的。
第二种可能性是使用 RGB 权重设置 conv1,并使用 RGB 权重的复制填充剩余的通道。
我尝试了第二种可能性,但它只适用于 3 的倍数。此外,如果我想要特定的初始化程序(glorot_uniform
例如)而不是复制带,这似乎是不可能的。
所以我想知道是否有比我的功能或其他方法来实现这样的事情,特别是使用任意数量的通道而不是 3 的倍数?
注意:在应用第二种可能性之前,我试图找到实现这一目标的函数,但我没有找到任何东西。
tensorflow - 提高训练速度的方法
我是 tensorflow 的新手,我正在尝试采用迁移学习进行特征提取。我有一个包含 600k 图像的大型图像数据集,存储在 100GB 的 gzip 压缩 hdf5 文件中。我正在使用生成器将图像加载到 vgg16 模型中。但是,我需要 2000 多个小时才能完成 1 个 epoch。有什么办法可以优化代码,让我有更快的训练速度?
更新: 通过将生成器直接加载到 model.fit,我设法将每个 epoch 的训练时间减少到 60 小时
但是,训练单层仍然需要很长时间。希望能帮助加快这一进程。显卡:gtx1070
python - 尝试使用 VGG16 模型进行训练时出现“检查目标时出错”消息
我是迁移学习的初学者,在这个项目中,我的目标是使用 VGG16 并添加更多层来在 2 个类之间进行分类:class0 和 class1
我有名为“train”的数据框,其中“id”列包含文件名,而标签包含该图像的类
图像并通过 ImageDataGenerator() 和 flow.from_dataframe 准备
总结一下,我的最后一层是 Dense(2,activation='softmax')
VGG16 的输入图像的形状为 (32,32,3)
但是,它一直是错误的:
ValueError:检查目标时出错:预期dense_55有2维,但得到的数组形状为(1、32、32、3)
我的模型总结:
这是我用于训练的 jupyter 笔记本。
我在这里的编码有什么问题?
python-3.x - How can we fix :"could not initialize a memory descriptor, in file tensorflow/core/kernels/mkl_maxpooling_op.cc:578" error while using InceptionV3?
I am trying to train InceptionV3 on a dataset that I have.I am using python3.5 on spyder with keras and tensorflow as backend.
I am getting the following error:
could not initialize a memory descriptor, in file tensorflow/core/kernels/mkl_maxpooling_op.cc:578
I have tried installing tensor flow with conda install -c anaconda tensorflow but that didn't removed the error.
tensorflow - 如何在 model.predict 解码预测中使用 38 个类而不是 1000 个类
每次使用 resnet50 深度学习模型在 decode_predictions 中引发错误消息时,我都会发现植物病害检测错误
错误
需要一批预测(即形状的二维数组(样本,1000))。找到具有形状的数组:(1, 38)"