Keras坑

使用Keras做分类的时候踩了一个坑,也是拿来主义的锅,估计也有不少同志遇到。 在进行分类的时候,往往使用categorical_crossentropy,有时候萌新(像我)会用binary_crossentropy,虽然结果可能上浮30%,但是这个结果是不对的。model.fit以及model.evaluate给出的acc的值都是有问题的,正确的计算方法应该是: # Actual accuracy calculated manually: y_pred = model.predict(x_test) acc = sum([np.argmax(y_test[i])==np.argmax(y_pred[i]) for i in range(10000)])/10000 其中 numpy.argmax(a, axis=None, out=None) # 返回沿轴axis最大值的索引。 使用测试样本的数量代替10000,输出的acc才是正确的结果。 这个方法是使用二分类的时候才能使用的,label的个数多于2就不能使用。 参考 https://stackoverflow.com/questions/42081257/keras-binary-crossentropy-vs-categorical-crossentropy-performance

Read More

Leanote – theme_API优化

我本身不是应该前端的Hacker(当然我自己也不知自己属于什么Hacker),于是决定在themeAPI上参见一下hexo的做法。 但是再此之前,想要首先将leanote的markdown渲染API加入到themeAPI里面去,所以首先研究一下官方的主题是如何运作的。

Read More

Leanote – 源码阅读

写一下如何阅读Leanote的源代码。 上面的go的框架我是没有仔细看,感觉似乎用到了很多开源项目?整体来说,leanote应该是一个伟大的项目。 熟悉gulpfile 这里有一篇日志 https://segmentfault.com/a/1190000000372547 基本读完以后就懂了。cnpm install -g gulp安装一下。 大体上读一读可以发现,gulpfile用于构造leanote的前端内容。 后记2017.12.11 这篇博文后来我没有写下去,因为后面不再使用leanote——读代码这件事情,其实不需要耗费太多时间,就可以做的不错。

Read More

Linux-SELinux-httpd无法访问

目录的问题 由于SELinux造成的httpd中的目录无法访问,可以使用 chcon -R -t httpd_user_content_t <path to web files> chcon -R -t httpd_sys_content_t <path to web files> mark一个网站()[http://www.jb51.net/os/RedHat/1303.html] 文件夹访问权限 以上方法解决了SELinux的问题,但是我的目录依然没有访问权限。 然后看了一下文件的基本属性: -rw-r--r--. 1 root root 21 11月 11 12:27 index.html 应该也是没有问题的。 再查SElinux 随后使用cat /var/log/messages探索一番,依然没有找到问题所在——SELinux没有报错。 防火墙的问题?不是阿。因为我本身是在内网访问,防火墙应该不会出问题。 那应该是什么问题呢? 配置文件 终于在配置文件中找到了问题。 apache在进入2.4.*以后,不再使用Allow from all这种形式了,取而代之,使用Require from granted这种格式。晕,就是在此处,<Directory>没有设置好,坑了好久阿。。 相对的我这几天一直都在deepin下开发——因为apt-get得到的apache之前比较习惯,此外deepin没有se也是省了很多功夫。不过通过这一次,总算是把问题解决了! 鼓励!

Read More

Linux-makefile写法

本文出自svtter.com 本文可以随意转载,但是转载请保留本信息. makefile写法有复杂的有简单的,我这里提到的主要为了做一些简单的开发,所以还是说些简单的事情。 使用makefile之前,要学会使用bash的一些东西。鸟哥的私房菜虽然说是介绍Linux,但是总感觉很多都是介绍bash,以及和 bash配合使用的一些命令。。。 变量的写法 定义的时候直接使用VAR = main.o即可这种格式即可 使用的时候使用${VAR}这种形式来使用,类似于php中的变量。 另外, 位于makefile外面的变量也是可以使用的,使用的时候使用如下格式VAR = main.o make即可,这样就相当于在makefile 定义了一个VAR变量。在外定义的变量是优先于makefile里面的变量的,就像是一个预订义的函数一般。 此外,$@表示当前的目标。如果在clean那里面,$@指的是clean make + 命令写法 比如make clean的写法,就是在makefile文件中添加 clean: rm .. (类似bash的使用方法,这个地方也可以使用变量) 相对的,install等等的方法就类似于这个上面的写法了。 写到这里也是明白了为什么vim里面有个make命令,却没有各种编译命令了= = 然后附加一个自己写的第一个makefile:(为了读者更加容易理解,我没有使用变量) run: t2.o test.o cc -o run test.o t2.o ./run test.o: test.c cc -c test.c t2.o: t2.c cc -c t2.c clean: rm *.o rm run test.c: #include <stdio.h> /* #include "

Read More

Linux-同步互斥

本文出自 使用pthread实现经典问题:生产者消费者 关于semaphore的相关信息就不再贴出来了。 编译的时候记得-pthread选项。 /*============================================================================= # # Author: svtter - svtter@qq.com # # QQ : 57180160 # # Last modified: 2014-10-03 20:35 # # Filename: producer_consumer.cc # # Description: # =============================================================================*/ #include <cstdio> #include <unistd.h> #include <semaphore.h> #include <pthread.h> #include <sys/types.h> #include <stdlib.h> #include <iostream> using namespace std; #define N 5 #define item int // P/V操作 void P(sem_t* sem) { if(sem_wait(sem)) perror("P error!"); } void V(sem_t* sem) { if(sem_post(sem)) perror("

Read More