我正在尝试使用MNIST数据集通过前馈神经网络和反向传播来解决经典的手写数字识别问题。我正在使用Michael Nielsen的书来学习关于反向传播算法的要领和3Blue1Brown的youtube视频。
我写了一段时间才写完,自那时以来一直在调试,因为结果很糟糕。最好的情况下,网络可以在1个历元后识别出大约4000/10000个样本,并且该数目仅在随后的历元中下降,这使我相信反向传播算法存在一些问题。在过去的几天里,我一直沉迷于索引地狱,试图对其进行调试,但无法弄清楚问题出在哪里,我很乐于指出问题。
背景知识:1)我没有使用任何矩阵乘法,也没有使用外部框架,而是使用for循环进行了所有操作,因为这就是我从视频中学到的方法。2)与本书不同,我将权重和偏差都存储在同一数组中。每层的偏差是该层权重矩阵末尾的一列。
最后是代码,这是NeuralNetwork类的Backpropagate方法,在UpdateMiniBatch中调用,该方法本身在SGD中调用:
/// <summary>
/// Returns the partial derivative of the cost function on one sample with respect to every weight in the network.
/// </summary>
public List<double[,]> Backpropagate(ITrainingSample sample)
{
// Forwards pass
var (weightedInputs, activations) = GetWeightedInputsAndActivations(sample.Input);
// The derivative with respect to the activation of the last layer is simple to compute: activation - expectedActivation
var errors = activations.Last().Select((a, i) => a - sample.Output[i]).ToArray();
// Backwards pass
List<double[,]> delCostOverDelWeights = …Run Code Online (Sandbox Code Playgroud) 我想在我的网站上嵌入一个PDF文件,它看起来像这样:
<object data="data/PDFTest1.pdf" type="application/pdf" id="data"></object>
Run Code Online (Sandbox Code Playgroud)
但后来我想首先用ajax(在javascript文件中)获取文件,在JavaScript中编辑它的源代码,然后创建一个<object>并为其提供结果数据.问题是Object需要在其data属性中使用url ,并且不直接接受实际数据.我怎么处理这个?有没有办法在javascript中创建一个"假网址"?或者我可以以某种方式将数据以另一种方式传递给对象?或者我应该使用其他标签?
提前致谢,对不起我的英语
我试过搜索但是在解释共同例程系统的所有线程之间丢失了但没有详细说明.我已经知道StartCoroutine返回一个Co-routine,所以我试着查看是否有某种隐式运算符重载为void返回类型甚至尝试过,但它没有用,我什么都没发现.老实说我只能想到,你可以说我是初学者这个问题没有具体的目标,我真的很感兴趣.提前致谢
编辑:我不作出清楚我的问题道歉:怎么能说都StartCoroutine(example());和Coroutine myCoroutine = StartCoroutine(example())?如果返回类型是Coroutine,第一个如何像void一样工作?