MxNet 深度学习框架安装(一)

2017年3月1日 没有评论

最近是想看看深度学习的东西,网上有搜索一下,貌似MxNet还不错,于是打算选择该库作为入手。

作为系列文章的第一篇,当然是安装拉,这里以windows 10安装为例,Ubuntu上的就再等等吧。

在安装之前,大家需要深度学习的使用语言,多为python和c+之类的。MxNet支持的语言比较多,对R也支持。

首先,我们需要安装Python,从官网上下载安装包,衣服自己洗这里选择的是3.6的版本,一路无脑下一步即可。在安装完成后,请确保python的路径已经被添加到系统的环境变量下。

接下来,再安装 pip,从官网上下载文件到本地,然后运行

python get-pip.py install

安装完成后,请添加python目录下的scripts目录到系统的环境变量下。接下来安装 numpy,进入 https://pypi.python.org/pypi/numpy,选择对应的whl版本,下载到本地,然后运行

pip install numpy.whl

在开始的时候,衣服自己洗选择的从网上安装,总是会失败,搜索了一番才果断采用离线安装,很是顺利。

下面就是正主上场拉,从https://github.com/dmlc/mxnet/releases下载预编译好的包,由于我的机器不支持cuda,所以就下载的是cpu的版本,例如20160531_win10_x64_cpu.7z,解压缩到本地,这样的东西我还是放到C盘根目录下比较保险点。

对于想玩CUDA的同学,请先到nvadia去注册,然后下载他们的SDK,解压缩后放到mxnet\3rdparty\cuda 目录下。

最后一步就是准备配置了,按照官方的readme文件,进入到mxnet的目录,双击运行setupenv.cmd来配置环境变量。再进入到 mxnet\python目录,运行 python setup.py install.

如果一切都顺利的话,应该是可以安装成功的。

如何验证呢,运行下面的命令

C:\> python
>>> import mxnet as mx
>>> a=mx.nd.zeros((2,3))
>>> print(a.asnumpy())

如果结果为

[[0. 0. 0.]
[0. 0. 0.]]

就表明mx安装成功拉。

如果你想使用C++来开发的话,请使用mxnet\lib目录下的文件:libmxnet.dll和libmxnet.lib。

今天的内容就到此结束,看起来很简单,确实花了一个下午的时间才理清。有什么不懂的,欢迎留言。

分类: 日常 标签: , ,

Firefly实现迅雷离线下载

2017年2月15日 没有评论

在我把移动硬盘带到单位后,一个很自然的想法就是想实现远程离线下载。衣服自己洗的小米盒子以前就是开了个远程下载,不过没有怎么使用过。再加上后来小朋友比较喜欢到处探索,在家里就比较困难了。

首先,我们需要去迅雷的网站上下载Xware的固件,此时最新的固件版本号是1.0.31,以后后续的更新应该是可以查找类似的帖子。

下载完成后,解压缩到某个目录下,并设置权限

sudo chmod -R 777 xunlei

sudo ./portal

需要强调的是,迅雷的下载是需要管理员权限的。运行该程序后,会联网请求迅雷的服务器并生成一个激活码。

打开 http://yuancheng.xunlei.com/,然后选择添加设备,输入刚才获取的激活码。一旦添加成功,就可以通过该网页添加下载任务了。

衣服自己洗发现Firefly在办公网络下无法下载ed2k资源,感觉非常的奇怪。

这里有2个比较重要的信息是:

1、衣服自己洗使用家里的香蕉派运行portal程序始终没有成功过,网络上也搜索过,按网络上的说法,似乎是无法解析remote.yuancheng.xunlei.com,也就是说是小区的宽带问题。说起这个宽带,简直了。

2、迅雷官方每次在发布的时候,都提供了好几个不同的版本供大家使用。衣服自己洗是以树莓派做关键字去搜索的。大家都说树莓派使用Xware1.0.31_armel_v5te_glibc这个版本就可以了,但是在单位和家里刚开始尝试的时候都失败了。后来挨个尝试,发现居然是要使用Xware1.0.31_cubieboard 才可以,不然就会提示未找到目录的错误提示。这个问题坑了好多天,都快要放弃的时候才找到可用的版本。

分类: Firefly, 日常 标签: ,

C#实现中文的简体和繁体的相互转换

2017年1月24日 没有评论

最近在收集唐诗,准备提供给小朋友联系韵律。但是网络上搜索出来的全唐诗,都是繁体中文的表示,所以想着是否可以有库来进行转换。

搜索出来发现用C#来实现的话,还是比较简单的。

首先在工程中添加Microsoft.VisualBasic 引用,然后就可以写2个通用方法了。

// 字符串简体转繁体
public static string ToTraditionalChinese(string strSimple)
{
string strTraditional = Microsoft.VisualBasic.Strings.StrConv(strSimple, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0);
return strTraditional;
}
// 字符串繁体转简体
public static string ToSimplifiedChinese(string strTraditional)
{
string strSimple = Microsoft.VisualBasic.Strings.StrConv(strTraditional, VbStrConv.SimplifiedChinese, 0);
return strSimple;
}

需要特别说明的是,从繁体转换为简体基本上没有什么问题,但是因为存在多个繁体字对应一个简体字的情况,所以从简体转换为繁体就存在一些错误。具体的解决方法就得使用勘误表来特别处理。

好在衣服自己洗的需求只是繁体转简体,没有这个问题。

分类: 一句话 标签: ,

Win10 UWP 默认控件样式和模板

2017年1月17日 没有评论

很多时候发现设计给出的文档,系统默认的控件并不能直接使用。对于复杂的控件,可以新写一个自定义控件,但是对于一些很简单的控件,就想在系统默认的控件基础上通过调整样式来实现。

那么我们就需要知道系统默认控件的布局和样式是如何定义的,幸好微软已经给出了 UWP 控件的默认样式和模板。

https://msdn.microsoft.com/zh-cn/library/windows/apps/mt299122.aspx

大家一定要好好保存喔,方便查询使用。

分类: 一句话 标签:

win10修复UWP程序无法联网的问题

2017年1月3日 没有评论

衣服自己洗的办公机已经有一段时间不能使用UWP程序上网了,包括微软自带的应用商店,然而win32桌面程序却没有这个问题,很是恼火。

于是自己写了一个测试程序,发现代码会崩溃在

Windows.Networking.Connectivity.NetworkInformation.GetHostNames();

后来在某一个偶然的时机,发现如果开着 Fiddler的情况下,应用商店就可以正常访问了,太神奇了。这么看起来似乎是系统代理的问题导致,但是其它的UWP程序仍然无法上网。

在网上搜索了一番,各种所谓的重置答案都试过,均没有效果。何况,工作中可是直接和UWP相关,这个出问题了那简直是要了老命了。

趁着元旦放假的工夫,想在家尝试解决,后来还是放弃了。突然灵光一闪,听说windows在每次大的更新后,都会重置系统的一些设置,就寻思着从这块下手。

好在上次下载的14393的系统镜像还在,就以升级的方式重新安装了一遍系统,各位同学这里可要记住,千万要勾选“保留个人文档和程序”选项。升级后,终于恢复正常了。剩下的例如文件关联之类的都是小问题,以后慢慢回填就可以了。

回想起整个事情,可能出现的情况,感觉问题可能是出现在科学上网上面,以前曾经把玩过一段时间的蓝灯程序,后来购买了shadowsocks后,就卸载了蓝灯。估计是卸载没有完全卸载干净导致。

虽然代价有点大,但好歹也是终于修复了这个问题。

分类: 一句话 标签:

Firefly控制自带的Led灯

2017年1月3日 没有评论

在前面的文章中,衣服自己洗提及为了打开自带的Led灯,而不得不安装golang的环境,后来在官网上发现了他们有开源python版本的库:pyFireflyP,开源地址为https://github.com/T-Firefly/pyFireflyP。

对于linux系统而言,很多都已经自带python了,而且安装也比golang容易的多。

从github上clone或者下载这个包,然后进入到目录下安装:

cd pyFireflyP
sudo python setup.py install

我的Firefly运行后会报错,显示FireflyP do not support <Rockchip (Device Tree)>! 应该是系统内核没有正确赋值,按照官方的说法,只需要修改setup.py文件,把 fplat=check_plat() 直接改成:fplat=’rk3288’,然后再次运行安装即可。

对于测试,运行 sudo python demo/gpio_test.py,就可以看到Firefly上的蓝灯和黄灯来回交替显示的效果了。

对于内核没有正确赋值的问题,估计我的板子是早期生产的,其信息并没有及时更新。至于现在是否已经更新不得而知。

当然,对于官网wiki上的另外一个设备写入的方法:

echo 1 >/sys/class/leds/firefly:blue:power/brightness  //蓝灯亮

在最近的固件里并不能实现,早期的固件确实是有。这里衣服自己洗真心是要狠狠地吐槽一番,完全没有考虑到像我们这样的小白,以为所有的人都会自己编译固件。

上面提及的2种方法,虽然都是调用GPIO,但是是相互独立的,如果一起使用的话,可能会出现意想不到的后果。不过就目前来看,应该没有这个风险。

分类: Firefly, 日常 标签: ,

Golang安装和配置

2017年1月3日 没有评论

在说正事前,衣服自己洗需要说下Golang和Go的区分,事实上他们是同一个东西,仅仅是因为Go这个单词太常见了,在编程语言的描述中,为避免混乱,就改用Golang而已。这个问题我曾经也迷惑过。

Firefly 新版本的固件里,居然把板子上的灯默认给关闭了,也无法直接检索到了。这真是一个糟糕的设计。

为了打开Firefly上的灯,需要采用GPIO驱动,但是目前从上层软件搜索来看,论坛里一个可用的库却是采用Go来编写的。

那么问题就来了,首先我们需要安装Go的环境。

我们先来说windows上的安装,很简单,从官网上下载对应的windows版本,然后一路下一步安装即可。安装完成后,添加系统环境变量,GOPATH和GOROOT,这个变量在我自己理解来看,GOROOT是指Go的安装目录,默认的是C:\Go,然后GOPATH就真的是go想要搜索的其它资源的路径,支持多个路径。有点类似于C++里的工程include的味道。

对于linux系统,Google官方并没有给出编译好的版本,所以就需要我们下载源码自己安装了。衣服自己洗下载的是1.7.4的源码,放在/pi/go目录,进入src目录,运行 all.bash,显示出错,提示没有1.4的Tree,网上搜索了一下,发现go的新版本安装所需要的环境是需要先安装go1.4才可以的。

于是只好先下载go1.4的源码到/pi/go这个位置,再次运行 all.bash文件,由于是在香蕉派上运行,整个过程花了大概18分钟的样子,在安装后,还会自动运行测试程序,很遗憾,香蕉派上测试程序有的并没有测试通过,检查了/pi/go/bin目录下,已经生成了 go 和 fmt 文件,干脆拉倒。

修改 ~/.profile文件并添加2行代码如下:

export GOROOT=/pi/go
export PATH=$PATH:$GOROOT/bin

保存重启。然后再下载1.7.4版本的源码到原来的位置完成替换,然后再次运行/pi/go/src/all.bash,最好添加sudo。又是经过快20分钟的编译和安装。

写了个简单的hello world程序,go build hello.go,还是可以正确显示的。

至此,基本的运行环境就准备完毕了。

分类: 日常 标签: ,

Ubuntu修改挂载点名称

2016年12月19日 没有评论

由于FireFly是放在单位一直做代码编译的监视工具,衣服自己洗就寻思着要不要顺便做点下载什么。家里的香蕉派一来有小朋友在,另外是因为实际情况并发效果不太好,很容易就死机了。

接上USB扩展坞,接上移动硬盘后,3个分区系统都顺利识别出来,寻思着移动硬盘应该是带不起来,所以USB有额外的提供电源。

一路安装了uget和aira2,顺便也搞了一个webui-aria2网页版,这些以后有机会再提吧。

下载的时候,发现移动硬盘的挂载点是中文的,有点担忧是否有影响。就寻思着怎么修改这个挂载点,首先发现无法像windows系统那样,直接通过右键菜单来修改,最简单的方法就是接回windows系统,然后修改为英文名称。

遗憾的是,在window上修改后,再次连上FireFly,发现还是显示原来的内容。拔掉移动硬盘,检查挂载点,发现在 /media/ubuntu/下果然还有3个文件,删除之。

再次插入U盘,发现还是显示中文的挂载点,在/media/ubuntu/目录下又出现了3个中文名称。奇怪的不要不要的。

后来才偶然间发现,原来挂载点信息保存在 /etc/fstab 文件中,修改里面的挂载点名称,顺利解决了。

分类: 一句话, 日常 标签: ,

win10下解决U盘可以识别但资源管理器无法显示

2016年12月19日 没有评论

衣服自己洗的U盘,工作中被反复使用,一般说来,关闭所有的相关文件夹后就直接拔出来了,一般说来也没有什么大问题,也从未有过U盘无法识别的问题。

最近突然就出现了U盘插入后,系统托盘会显示图标,但是资源管理器里却不实现盘符的情况,我以为是U盘的寿命到了,但是发现在其它电脑上是可以正常识别使用的,可以排除U盘的原因。

我不清楚是什么原因导致的,可能是因为前几天使用某数字软件清除了U盘历史记录,也可能是因为U盘在另外一个Ubuntu系统上使用过。网上的资料要么是已经过时的,要么是没有效果的。

分析看来,操作系统应该是已经知道有这么一个设备,只是没有显示出来。经过好几天的搜索,最后终于发现了一个比较友好的解决方法。

首先插入U盘,从开始菜单打开设置,选择“设备”,再选择“已连接设备”,在窗体的右边应该就会显示出刚才插入的U盘,选中其图标点击“删除设备”。然后拔出U盘,再重新插入。这时系统就会重新识别出U盘,资源管理器里也恢复正常了。

放一个图作为结尾吧。

分类: 日常 标签: ,

解决移动 硬盘和U盘在ubuntu 下无法写入的问题

2016年12月13日 没有评论

今天带了块移动硬盘到单位,接入到Firefly后,发现无法向设备内写入文件,换成U盘也是一样的问题。插入后系统可以很快地识别出来,但就是只读的。可以浏览,写入就不用想了。

因为Firefly是基于arm架构的,不知道是不是和这个有关系,网上搜索的结果也各种各样,但是都没有什么效果。

最后,找到了一个解决问题的方法了。

sudo apt-get install ntfs-config

sudo ntfs-config

这个时候系统会弹一个窗体出来,勾选对应的移动硬盘,并允许写入就可以了。实际上,ntfs-config在Firefly上安装是没有问题的,配置的时候报了一堆的python错误,不过看起来没有什么大问题。

分类: Firefly, 一句话 标签: ,