加载中…
个人资料
felonwan
felonwan
  • 博客等级:
  • 博客积分:0
  • 博客访问:598,870
  • 关注人气:115
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
好友
加载中…
访客
加载中…
新浪微博
留言
加载中…
评论
加载中…
博文
在一个QQ群里遇到讨论高阶导的问题,有网友说pytorch求高阶导比tensorflow复杂很多,还给了一段tensorflow的代码,下面的tensorflow的代码部分就是从这里修改来的。我Google了一下,用pytorch写了下,把两个版本对比的代码都放到这里。个人觉得各有特色,复杂度不相上下(都是带加输出共10行)。只写到求二阶导,高阶导类似地继续求下去就可以了。

感受:一定要好好看文档,数学一定要抽空补一补。

import numpy as np
import os
os.environ['CUDA_VISIBLE_DEVICES']='0'

m, n = 3, 2
x0 = np.random.rand(m,n)

print '\nTensorflow:'
import tensorflow as tf
x = tf.convert_to_tensor(x0, dtype=tf.float32)
y = x**8
dy = tf.gradients(y,x)
ddy = tf.gradients(dy,x)
with tf.Session() as sess:
    print sess.run(y)
    print sess.run(dy)
    print sess.run(
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
先上图,橙色实线为真实值,蓝色虚线代表网络的拟合近似值(运行1000次反向误差传播后)。



有趣的地方:把w或b的赋值换成和x、y一样的方式,即把:device=device选项换成.to(device),在GPU上计算的w或b的梯度值就会变成None,从而报错“TypeError: unsupported operand type(s) for *: 'float' and 'NoneType'”。不知是pytorch的bug,还是to()函数用法的问题,初学torch,不明白,有知道的网友还望不吝赐教。

ubuntu 16.04平台,python 2.7下的pytorch 1.0.0,还有conda的python3.6.5下的pytorch 1.0.1.post2,都存在这一现象。

这里的网络干的事情是:用y_=ReLU(w*x+b)来拟合y=sin(x)。注意是非常理想的数据,且batch_size为1。
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
应用场景:只复制某类文件,或含某些特殊字符串的文件。
好处:不用写复杂脚本。
缺点:需要先压缩,适合小文件。
原理:find+regex正则规则匹配目录下所有指定的文件,xargs传递给tar进行压缩。


实例:备份C程序文件,包括.c和.h文件。
步骤:
1. 压缩:
find 目录 -regex '.*\.c\|.*\.h'  | xargs tar czf test.tgz
2. 解压缩:
tar zxvf test.tgz
注意:
记得最好复制压缩包到另一个目录后再解压,或者使用-C参数指定路径。

参考:https://www.cnblogs.com/gpfeisoft/p/4692679.html
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
转载请注明来源。

此贴是在上一个在16.04上安装Tensorflow和Caffe的基础之上发生的情况,记录使用过程中的各种错误及解决方法。

#### MATLAB使用MatConvNet
vc_compilenn编译,提示信息:
警告: 您使用的 gcc 版本为 '5.4.0'。不支持该版本的 gcc。MEX 当前支持的版本为 '4.9.x'

运行例子总是不成功


#### 升级scikit-learn出错
```bash
pip install --upgrade scikit-learn
```
出错提示中有socks字样。
想一想后,明白这是代理的原因,于是断开代理连接,在“系统设置”-“网络”中代理设为“无”,然后重新打开终端,输出代理环境变量
```bash
echo $http_proxy
```
发现是空的了,这下就可以安装了。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
个人原创经验分享,参考网上他人方法处有注明出处,您若整体转载本文或部分参考,也请注明出处:http://blog.sina.com.cn/felonwan,商业使用请联系felonwan@gmail.com。

硬件配置:
Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
NVIDIA GeForce GTX 1060 6G
一、系统安装
习惯使用Ubuntu,自己用了这么多年,加上比较流行,资料好找。
纠结了一下17.04以上版本是16.04。
17.04以上的版本可以直接安装预编译的caffe了,但是可能因为非长期支持版,似乎用的人少,为减少不必要的折腾,还是选择16.04.3,以后18.04较成熟了再说。
笔记本上安装17.10,发现两者里的synergy版本不同,干脆也换到16.04了。

1.1 UEFI问题
http://blog.csdn.net/jesse_mx/article/details/61425361
http://cn.soulmachine.me/2016-08-14-dual-install-windows-ubuntu/

二、配置

2.1 ThinkPad笔记本不能保存亮度
/etc/default/grub中,把
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
本来做点计算神经科学的东西,现在开始学习“深度学习”。老板推荐李飞飞的视频,似乎是不错的,只看了很小一部分,但感觉就视频清晰度、字幕完善度来说,2017的比2016年的更好。所以现在看这个李飞飞的cs231n的课程,结合着Yoshua Bengio的“Deep Learning”这本书先学着吧。

1. 2017年各种最新视频课题
“人工智能A7论坛”这个网站不仅有李飞飞,还有吴恩达等人的视频课程下载哈,都是最新的,网站小编非常用心
http://www.aqinet.cn/thread-586-1-1.html

2. 一个盘点的网页:
http://www.cnblogs.com/shouhuxianjian/p/4529224.html


3. caffe安装和训练Alexnet和GoogleNet,nv
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
2017-08-10: 
原因:数组索引越界,用越界的索引赋值导致一个文件指针被覆盖。
现象:段错误,调试时发现是“目录或文件不存在”导致,但看代码怎么都找不到出错的地方。
定位方法:watch 文件指针变量
经验总结:若程序出现之前没有的Bug时(特别是程序比较复杂、调试比较麻烦时),一定要注意最近修改了什么,仔细分析原因,这次耗费了很多时间才找到的内存覆盖问题就是这样。而且这次出现的问题的原因是原来就注意过(现象完全不同),其中一行索引加1的代码放在赋值之后就是正确的,如果当时发现这个问题后多写一行注意的注释可能这次就会注意到。当然,注释太多确实也乱,但是关键的犯过错的地方还是要注释的。(这次的数据覆盖比上次的隐蔽,上次的按理说编译器应该就能检查出来的。)
扩展:内存覆盖、泄漏、越界等问题这里说得比较清楚:
https://www.ibm.com/developerworks/cn/aix/library/au-toughgame/index.html

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

上次折腾CUDA还是几年前的事了,这次手头只有win10的机器,暂时好多事情没定,懒得折腾安装Ubuntu,就先在win10下搞搞吧。折腾了几次,都没时间认真弄,这次集中精力搞,终于搞好了。

经验总结:

1. VS2015安装时一定选自定义,否则默认不安装VC++。

2. 安装完VS2015,再安装CUDA。VS2015尽量卸载干净,必要时可用卸载工具。CUDA的话,随便重新安装。

3. 不需要手动命令行编译(Linux命令行用惯了,也是醉了),否则有一堆依赖需要手动解决。不出问题的话,直接双击打开C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0目录下的Samples_vs2015.sln就能运行各种例子了,比如5_Simulations里面有各种酷炫的动画模拟,直接生成调试就可以。


参考:

http://www.jianshu.com/p/04ac0dc2f310​

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
Windows下的Fortran解决方案:
http://fcode.cn/announce-show.php?aid=1
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2016-04-02 18:07)
Splashtop Streamer总是出现defunction的进程,了解了一下,这就是所谓的僵尸进程:在UNIX系统术语中,一个进程已经结束,但是它的父进程还在等待它,就称为一个僵尸进程。
杀死僵尸进程的父进程就可以杀死僵尸进程(似乎也不一定?反正重启系统肯定可以。)

杀僵尸进程语句:
ps -ef | grep defunct | grep -v ‘grep’ | awk ‘{print “kill -18 ” $3}’
原理:
查询所有的僵尸进程,把grep查询的进程号去掉,然后把僵尸的父进程传给kill -18告诉它回收子进程。
不过我尝试的时候其实用了kill -9,直接把父进程杀死了。

只杀SRFeature进程
ps -ef | grep SRFeature | grep defunct | grep -v ‘grep’ | awk ‘{print “kill -18 ” $3}’

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有