如果我们有10个特征向量,那么我们可以在输入层有10个神经节点.如果我们有5个输出类,那么我们可以在输出层有5个节点.但是选择MLP中隐藏层数的标准是什么以及有多少神经节点1个隐藏层中的节点?
这是我在ANSI C中的感知器实现:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float randomFloat()
{
srand(time(NULL));
float r = (float)rand() / (float)RAND_MAX;
return r;
}
int calculateOutput(float weights[], float x, float y)
{
float sum = x * weights[0] + y * weights[1];
return (sum >= 0) ? 1 : -1;
}
int main(int argc, char *argv[])
{
// X, Y coordinates of the training set.
float x[208], y[208];
// Training set outputs.
int outputs[208];
int i = 0; // iterator
FILE *fp;
if …Run Code Online (Sandbox Code Playgroud) 我是神经网络的初学者.我正在学习感知器.我的问题是为什么权重向量垂直于决策边界(超平面)?我提到了很多书,但都提到重量向量与决策边界垂直,但没有人说为什么?
任何人都可以给我一本书的解释或参考吗?
artificial-intelligence machine-learning perceptron biological-neural-network neural-network
情况:
当我的训练数据在2个标签之间的标签分布不平衡时,我想知道如何最佳地使用TensorFlow.例如,假设MNIST教程被简化为仅区分1和0,其中我们可用的所有图像都是1或0.当我们有大约50%的每种类型的图像进行训练和测试时,这很容易使用提供的TensorFlow教程进行训练.但是,我们的数据中有90%的图像是0,只有10%是1的情况呢?我观察到,在这种情况下,TensorFlow会定期将我的整个测试集预测为0,实现90%无意义的准确性.
我曾经取得过一些成功的策略是选择随机批次进行训练,这些训练的均匀分布为0和1.这种方法确保我仍然可以使用我的所有训练数据并产生不错的结果,准确率低于90%,但是更有用的分类器.由于在这种情况下准确性对我来说有些无用,我选择的度量通常是ROC曲线下面积(AUROC),这会产生相当高于.50的结果.
问题:
(1)我所描述的策略是否是对不平衡数据进行培训的可接受或最佳方式,还是有可能更好的方法?
(2)由于精度度量在不平衡数据的情况下不那么有用,是否有另一个度量可以通过改变成本函数来最大化?我当然可以计算AUROC训练后的训练,但我可以训练以最大化AUROC吗?
(3)我是否可以对我的成本函数进行其他改动以改善不平衡数据的结果?目前,我正在使用TensorFlow教程中给出的默认建议:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
Run Code Online (Sandbox Code Playgroud)
我听说这可能是通过加大小标签类的错误分类的成本来实现的,但我不确定如何做到这一点.
machine-learning perceptron neural-network deep-learning tensorflow
我试图找出如何调整感知器算法的参数以使其在看不见的数据上表现相对较好时遇到了一些问题.
我已经实现了一个验证工作的感知算法,我想找出一种方法,通过它我可以调整迭代的数量和感知的学习速度.这是我感兴趣的两个参数.
我知道感知器的学习速率不会影响算法是否收敛和完成.我正试图掌握如何改变n.它太快了,它会在很多地方摆动,而且太低而且需要更长的时间.
至于迭代次数,我不完全确定如何确定理想数.
无论如何,任何帮助将不胜感激.谢谢.
我正在Geoffrey Hinton教授神经网络课程(不是最新的).
我对体重空间有一个非常基本的疑问.
https://d396qusza40orc.cloudfront.net/neuralnets/lecture_slides%2Flec2.pdf
Page 18.

如果我有一个权重向量(偏差为0)为[w1 = 1,w2 = 2],训练案例为{1,2,-1}和{2,1,1},我猜{1,2}和{2,1}是输入向量.它如何以几何形式表示?
我无法想象它?为什么训练案例给出了一个将重量空间分成2的平面?有人可以在3维坐标轴上解释这个吗?
以下是ppt的文字:
1.重量空间每重量一个维度.
2.空间中的一个点对所有权重都有特定的设置.
3.假设我们已经消除了阈值,每个超平面可以通过原点表示为超平面.
我怀疑是在上面的第三点.请帮助我理解.
我无法理解感知器的重量更新规则:
w(t + 1)= w(t)+ y(t)x(t).
假设我们有一个线性可分的数据集.
在迭代t,其中t = 0,1,2,...,
为什么此更新规则会在正确的方向上移动边界?
假设我有一个小位图,其中包含一个手写的数字(0..9).
是否可以使用(双层)感知器检测数字?
除了使用神经网络之外,还有其他可能从位图中检测单个数字吗?
ocr pattern-recognition artificial-intelligence perceptron neural-network
嗨,我对Python和NLP都很陌生.我需要实现一个感知器分类器.我搜索了一些网站,但没有找到足够的信息.现在我有很多文件,我根据类别(体育,娱乐等)分组.我还列出了这些文档中最常用的单词及其频率.在一个特定的网站上有人说我必须有一些接受x和w参数的决策函数.x显然是某种向量(我不知道w是什么).但我不知道如何使用我所拥有的信息来构建感知器算法以及如何使用它来对我的文档进行分类.你有什么想法吗?谢谢 :)
python nlp artificial-intelligence machine-learning perceptron
我理解以下内容:
在2D空间中,每个数据点都有2个特征:x和y.2D空间中的权重向量包含3个值[bias,w0,w1],可以将其重写为[w0,w1,w2].为了计算它与权重向量之间的点积,每个数据点需要一个人工坐标[1,x,y].
用于更新每个错误分类点的权重向量的学习规则是w:= w + yn*xn
我的问题是:你如何从权重向量w = [A,B,C]中得出两个点来绘制决策边界?
我理解A + Bx + Cy = 0是一般形式的线性方程(A,B,C可以从权重向量中获取)但我不知道如何绘制它.
提前致谢.