- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有大量的类(目前有 500 个类,随着时间的推移可能会增加)。这些类可以被认为是不同的域特定规则。
每个规则都有与其相关的特定类型的测试。我的数据是这样的:
Some text regarding Rule 1 ------> Rule 1
Some other text for Rule 1 ------> Rule 1
Some other other text for Rule 1 -----> Rule 1
Text regarding Rule 2 ----> Rule 2
Some other text regarding Rule 2 ----> Rule 2
你有一个想法。我有很多文本需要分类为规则。我开始采用的一种方法是使用数据的一种热编码形式
作为规则分类。
这些是我遵循的步骤:
1. Create a Lexicon with all my Rule texts.
2. Create an array of 0s(of size of lexicon) for each line of text and turn on the index when the word is in lexicon.
3. Create a one hot encoded array (size = length(Rules)) with the index corresponding to Rule set to 1.
4. Feed this data to TensorFlow.
5. Test it out. I get prediction vector of size = length(Rules),
which gives me 1 for the index corresponding to the Rule the text was classified
into. I used tf.argmax()
到目前为止效果很好。我的问题是,当类(class)规模增长到 1000 个、一万个类(class)等时,这种方法是否有效。我是否仍然需要传递一个热编码向量作为实际分类?
还有其他方法吗?
最佳答案
1000 个(4000 个,如果考虑完整的 ILSVRC 数据集)类别的分类任务在图像识别 ( ILSVRC ) 中非常常见,并且事实证明,在足够的训练数据下,效果非常好。
即便如此,至少有一篇论文表明,使用相同模型设计的 ILSVRC 数据从 1K 类别到 4K 类别时,分类准确率明显下降(可能是 97% -> 95%)。
人脸识别研究provides an example增加类的数量(以及旁边的训练示例的数量)实际上会导致分类准确性的提高。他们在多达 10000 个不同的类别上进行了测试。
如果你的文章超过 10K,那么你就该写一篇自己的论文了。
下面的语法糖可能会帮助您避免手动构建单热向量,但本质上一个热向量仍然会作为交叉熵损失函数的输入存在。语法糖:
tf.nn.sparse_softmax_cross_entropy_with_logits
或者
def to_one_hot(index, num_classes):
res = np.zeros(num_classes)
res[index] = 1
return res
交叉熵损失中使用One-hot向量来计算分类误差。使用稀疏向量的优点在于,即使训练示例已通过输出 [0.7, 0.1, 0.1, 0.1] -> 0 正确分类,它仍然允许使用向量 [1.0, 0., 0., 0.]。即使分类精度没有提高,这也允许进行梯度更新(即训练分类误差小<1%,并且普通分类误差仅在 100 个或更少的示例中的 1 个示例上产生梯度)。
您始终可以应用更多的劳动力并对输入进行聚类,并为每个聚类训练分类器等等。它可能适合你,也可能不适合你。这是一个示例,其中类似的方法实际上提高了准确性 link 。但对于是否应该使训练复杂化,似乎没有达成共识。对于神经网络,最好将更多时间投入到模型设计而不是数据工程上,并尝试让网络为您处理一切。
关于machine-learning - 深度学习 - 如何为大型分类集准备训练数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46733863/
进程虚拟机和系统虚拟机有什么区别? 我的猜测是,进程 VM 没有为该操作系统的整个应用程序提供一种操作系统,而是为某些特定应用程序提供环境。 系统虚拟机为操作系统提供了一个安装环境,就像 Virtua
我写了一个 C# windows 应用程序表单,它在客户端机器上运行并连接到另一台机器上的 SQL 服务器。在 C# 中建立连接时,我使用了像这样的 dll 1)microsoft.sqlserver
作为我作业的一部分,我正在处理几个数据集,并通过线性回归查找它们的训练错误。我想知道标准化是否对训练误差有影响?对于标准化前后的数据集,我的相关性和 RMSE 是相等的。 谢谢 最佳答案 很容易证明,
我在公司数据中心的 linux VM 上安装了 docker-engine。我在 Windows 上安装了 docker-machine。我想通过我的 Windows 机器管理这个 docker-en
我在我的 PC 上运行 SAS Enterprise Guide 以连接到位于我们网络内的服务器上的 SAS 实例。 我正在编写一个将在服务器上运行的 SAS 程序,该程序将使用 ODS 将 HTML
我正在创建一个包含 ASP.Net HttpModule 和 HttpHandler 的强签名类库。 我已经为我的库创建了一个 visual studio 安装项目,该项目在 GAC 中安装了该库,但
我试过 docker-machine create -d none --url tcp://:2376 remote并复制 {ca,key,cert}.pem (客户端证书)到机器目录。然后我做了 e
请注意 : 这个问题不是关于 LLVM IR , 但 LLVM 的 MIR ,一种低于前一种的内部中间表示。 本文档关于 LLVM Machine code description classes ,
我理解图灵机的逻辑。当给出图灵机时,我可以理解它是如何工作的以及它是如何停止的。但是当它被要求构造图灵机,难度更大。 有什么简单的方法可以找到问题的答案,例如: Construct a Turing
我不确定我是否理解有限状态机和状态机之间是否有区别?我是不是想得太难了? 最佳答案 I'm not sure I understand if there is a difference between
我遵循 docker 入门教程并到达第 4 部分,您需要使用 virtualbox ( https://docs.docker.com/get-started/part4/#create-a-clus
我使用 Virtual Machine Manager 通过 QEMU-KVM 运行多个客户操作系统。我在某处读到,通过输入 ctrl+alt+2 应该会弹出监视器控制台。它不工作或禁用。有什么办法可
当我尝试在项目中包含 libc.lib 时,会出现此错误,即使我的 Windows 是 32 位,也会出现此错误。不知道我是否必须从某个地方下载它或什么。 最佳答案 您正在尝试链接为 IA64 架构编
生成模型和判别模型似乎可以学习条件 P(x|y) 和联合 P(x,y) 概率分布。但从根本上讲,我无法说服自己“学习概率分布”意味着什么。 最佳答案 这意味着您的模型要么充当训练样本的分布估计器,要么
我正在使用 visual studio 2012.我得到了错误 LNK1112: module machine type 'x64' conflicts with target machine typ
使用 start|info|stop|delete 参数运行 boot2docker导致错误消息: snowch$ boot2docker start error in run: Failed to
到目前为止,我一直只在本地使用 Vagrant,现在我想使用 Azure 作为提供程序来创建 VM,但不幸的是,我遇到了错误,可以在通过链接访问的图像上看到该错误。我明白它说的是什么,但我完全不知道如
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: linking problem: fatal error LNK1112: module machine t
我正在使用 Nodejs 的 dgram 模块运行一个简单的 UDP 服务器。相关代码很简单: server = dgram.createSocket('udp4'); serve
嗨,我收到以下错误,导致构建失败,但在 bin 中创建了 Wix 安装程序 MSI。我怎样才能避免这些错误或抑制? 错误 LGHT0204:ICE57:组件 'cmp52CD5A4CB5D668097
我是一名优秀的程序员,十分优秀!