安南到南安

Good Good Study, Day Day Up

View me on GitHub

学习时候积累的一些见解和坑

06 Jan 2018

梯度检测的目标是神经网络的计算方式正确,因此在学习之前使用随机Theta值进行运算比对即可
梯度检测本身使用无限逼近的方式求得J函数的偏导数,但是本身计算效率低下因此只能用来进行一次计算的检测而不能用在梯度下降

有关值传递,引用传递,地址传递:
值传递是指传递实参的值的副本给形参,这样形参值的改变不影响实参,java中只有值传递;
地址传递其实就是在值传递的基础上将值确定为内存地址(或者说是堆地址),这样对于地址指向的对象我们能够修改,但是对于形参来说,如果我们修改的是值——比如说我新new了一个对象,那么实参会指向这个新的对象么?显然并不会。
引用传递是在C++上有的概念,之后的语言如C#也有这个概念,对于C++来说,参考VC6.0的实现,引用本身实际上是通过指针实现的,也就是说,对于
void a(int &b)
这个函数声明,C++实际的实现是这样的
void a(int *b)
只不过对于C++程序猿来说,这个转换是透明的,让我们产生了“绑定”,“别名”之类的感觉。
所以,可以认为,三者的实现从底层上来看是层层递进的,之所以在C++中我们认为有值传递、地址传递、引用传递三种,更多是因为C++本身具有值、地址、引用的概念,而对于java来说,“指针”或者“地址”这样的概念是不存在的,更不会使用它们去进行相应的操作,因此我们说,java中只有值传递。