金天,写于北京中关村,想自己建造一套人工智能框架,遂从这里开始一个系列,C++实现
Eigen3 导入和安装
首先必须说明,eigen3好像我目前还没有找到比较好的安装方式,也许从apt可以直接安装,但是没有测试。下面这段代码是将eigen3安装到/usr/local/include
下面,因为eigen里面都是头文件实现的,因此直接cp到include下面即可,也是非常的方便。
|
|
然后在cmake里面或者说直接在c++源文件里面都可以直接include,如果使用cmake编译的话应该这样:
|
|
这样就可以自动自动find eigen这个package了。
Eigen3 - 让我们实现一个一层的神经网络吧
既然是自己动手实现神经网络框架,那实现一个一层的神经网络应该是必须要完成的事情。实现神经网络其实也不难。经典公式:1y = W*x + b
我们需要其实就是这个W的矩阵,我们给一对数据x和y,计算W*x + b和真实y的差值,然后再根据一个公式,使用误差来更新W,也就是我们的损失函数?(窝草,看来还挺麻烦,这里的怎么进行反向传播的?)。不管怎么说,让我们先用eigen来写一个层吧。
从开始到放弃
由于写到一半发现这个牛逼的Eigen库根本不支持多维的矩阵,于是乎只能作罢,看来在c++里面构建一个类似于numpy一样的多维矩阵库还是一件非常麻烦的事情啊,如果同志们有好的建议可以向我提一下。