今天在完成Andrew NG的机器学习神经网络作业,在实现花费函数的时候,没有使用循环,直接向量计算.前面都想的挺好的,很快就想到了如何使用向量来计算,可是在扩展y的时候,犯了一个超级傻的错误.
y是m*1的向量,y的值为1~10的某个数,代表着对应的类标签,总共10个标签.现在要把y扩展为k*m矩阵,其中,第i列代表着原来y第i行扩展后的值,
比如 y1 = 2,则y1扩展后应该为 y1 = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0].
结果我错误的写为如下: Y = zeros(1, m) + linspace(1, num_labels, num_labels)'; Y == y'; #这里出错,未将结果赋给Y 应该是:
Y = zeros(1, m) + linspace(1, num_labels, num_labels)';
Y = Y == y'; #这样才是对的
导致,结果不对,检查老半天,浪费了一个下午时间,都不知道哪里错了,在我一步一步打印输出,检查才发现到,那条语句出错了.
太傻了我...不能忍啊........
:-(