Shu's Garden - 教程
type: channel
link: https://www.sitstars.com/tag/%E6%95%99%E7%A8%8B/
items: 【译】PyTorch官方教程第一章：深度学习入门与PyTorch库
items: typecho+handsome折腾笔记02
items: github与coding双线部署hexo教程
items: 一个支持分发上传、私有云的图床程序-Hidove搭建教程
items: 阅后即焚程序naiveboom部署教程
items: 0基础使用webscraper爬取数据
items: 0基础入门神经网络系列文章汇总
items: ipfs搭建教程

【译】PyTorch官方教程第一章：深度学习入门与PyTorch库
type: item
date: 2020-07-24T22:13:11+08:00
description: 这份官方教程在7月初发布的，等到现在好像也没有汉化版，所以直接上手学了，顺便把我翻译的章节放上来。原书地址：https://PyTorch.org/assets/deep-learning/Deep-Learning-with-PyTorch.pdf配套代码：https://github.com/deep-learning-with-PyTorch/dlwpt-code本书论坛：https://livebook.manning.com/#!/book/deep-learning-with-PyTorch/discussion[scode type="yellow"]本人深度学习小白，英文水平极其有限，大部分地方都借助了翻译软件，仅作为学习过程的记录，大家学的话还是直接看原文或者等其他人翻译。另：有删减。[/scode]深度学习革命为了领会这种深度学习方法所带来的范式转变，让我们回过头来看一看。直到过去十年，机器学习严重依赖于特征工程（feature engineering）。特征是对输入数据的转换，便于下游算法（如分类器）在新数据上产生正确的结果。特征工程包括提出正确的变换，以便下游算法能够解决一个任务。例如，为了区分手写数字图像中的1和0，我们会想出一组滤波器来估计图像上的边缘方向，然后训练一个分类器来预测给定边缘方向分布的正确数字。另一个有用的特征可能是封闭的孔的数量，如0、8。深度学习则从原始数据中自动找到这样的表征，以成功执行任务。在1与0的例子中，过滤器会在训练过程中通过反复观察成对的例子和目标标签来完善。这并不是说深度学习中没有特征工程，我们经常需要在学习系统中注入某种形式的先验知识。然而，神经网络能够摄取数据，并在例子的基础上提取有用的表征，这就是深度学习的强大之处。深度学习从业者的关注点并不在于手动制作这些表征，而是在数学实体上进行操作，使其从训练数据中自主发现表征。通常情况下，这些自动创建的特征比那些手动制作的特征更好！与许多颠覆性技术一样，这一事实导致了观念的改变。在图1.1的左侧，我们看到一个从业者正在忙着定义工程特征，并将其输入到学习算法中；任务的结果将和从业者的工程特征一样好。右边是深度学习，原始数据被输入到算法中，算法自动提取分层特征，在算法的引导下，优化自己的任务表现；结果将和从业者的表现一样好，以驱动算法向目标前进。 图1.1：由于数据的增长和计算需求，深度学习从手动提取特征中解脱出来从图1.1的右侧，我们已经可以窥见成功执行深度学习所需要的条件：我们需要有办法提取我们手头的任何数据。我们需要以某种方式定义深度学习机器。我们必须有一种自动化的方式，训练，以获得有用的表征，并使机器产生期望的输出。这就需要我们仔细研究一下我们一直在说的训练这件事。在训练过程中，我们使用一个标准，一个闹喊模型输出和参考数据的实值函数，为我们模型的期望输出和实际输出之间的差异打分（按照惯例，分数越低越好）。 训练包括通过逐步修改我们的深度学习机器来推动标准向更低的分数发展，直到它达到低分数。PyTorch为什么选PyTorch？它简单易用，足够Pythonic，任何python编程老手都会感到熟悉。具体来说，PyTorch提供了一种数据类型：张量（Tensor），用于存放数字、向量、矩阵、数组等，并提供了相应的函数。如果你熟悉numpy库的话，应该会更容易上手。PyTorch提供了GPU加速计算，这比CPU快了50倍。另外，PyTorch在数据运算方面进行了优化。这两个特性对于任何科学计算都是有用的，因此不打算深度学习的老哥也可以尝试学习。PyTorch的一个设计驱动因素是表达能力，它允许开发人员实现复杂的模型，而不会因为库（它不是一个框架）过于复杂而受到影响。基于这个原因，PyTorch在研究中得到了广泛的采用，国际会议上的高引用率就证明了这一点PyTorch配置了C++，这使得它可以在脱离python的环境中运行，这个特性增强了其灵活性。为了更好学习本书，你需要以下两个条件：有一定的Python编程经验。我们不打算在教授python上花费时间；你需要了解 Python 数据类型、类、浮点数字等。愿意深入研究并动手操作。我们将从基础开始，积累我们的工作知识，如果你跟着我们一起学习，你会学得更轻松。本书专注于实用的PyTorch，目的是覆盖足够的领域，让你能够用深度学习解决现实世界的机器学习问题，比如在视觉领域，或者探索研究文献中出现的新模型。与深度学习研究相关的大部分文献都可以在https://arxiv.org中找到。PyTorch如何支持深度学习项目让我们通过研究深度学习项目需要从pytoch中获得什么，来更好地了解PyTorch的构成。首先，PyTorch的 "Py "如同Python中的 "Py"，但其中有很…

typecho+handsome折腾笔记02
type: item
date: 2019-11-23T14:32:00+08:00
description: 没想到居然还能整出第二篇，不过这一篇大多都是东抄西抄，博主进行整合而已，美化的首要原则仍然是不影响读者阅读体验，更不能有明显的卡顿现象（至少在我的PC环境中浏览我的博客没有出现卡顿）前台美化插件-AliceStyle这个插件来自@萌卜兔自带13个默认效果：首页文章列表获取焦点放大首页头像自动旋转首页文章版式阴影化首页文章图片获取焦点放大顶部彩色跑马灯特效文章内打赏处插入menhera酱求打赏图片文章内打赏图标跳动右侧列表导航栏图标颜色canvas动态背景页面背景透明主题盒子优化等效果评论框打字粒子特效博客信息标签和标签云彩色特效于是我就可以卸载掉折腾笔记01中安装的ActivatePowerMode和彩色标签云插件了。不喜欢某一效果？（比如我不喜欢顶部跑马灯，感觉加了之后有明显的卡顿）打开/usr/plugins/AliceStyle/static/css/custom.css，注释掉某一特效即可此外，该插件还带有看板娘、动态背景、鼠标样式功能（不过我都没有启用，具体效果请查看@萌卜兔的博客，个人觉得不加任何背景的透明样式最好看，可参见我的博客）如果你博客启用了pjax，那就要添加相应的代码。比如彩色标签云要在PJAX中添加以下代码 let tags = document.querySelectorAll("#tag_cloud-2 a"); let colorArr = ["#428BCA", "#AEDCAE", "#ECA9A7", "#DA99FF", "#FFB380", "#D9B999"]; tags.forEach(tag => { tagsColor = colorArr[Math.floor(Math.random() * colorArr.length)]; tag.style.backgroundColor = tagsColor; });博主介绍闪字效果将以下代码加入后台设置->博主介绍中，当然，介绍文字要改成你自己的。 右边侧栏加入每日pixiv热榜图片这是github上的一个小部件，理论上适用于任何平台（Wordpress、typecho等等）任何主题。我们仍以handsome为例，完成后的效果参见本博客右侧边栏。将以下代码加到后台设置->开发者设置->全局右侧广告位 然后修改handsome/component/sidebar.php找到 <?php _me("广告") ?> ，将广告修改为p站每日热门对，我这里是将原本广告位的位置替换为pixiv图片，如果你博客有展示广告的需求，请自行寻找其他可以放该部件的位置。当然，你也可以自己部署该服务，参见github。访客信息获取这是一个插件，原文地址，只适配handsome插件，效果可以去原博查看，或者在本文底部评论查看效果。使用方法首先下载插件。[button color="success" icon="glyphicon glyphicon-download-alt" url="https://doge.uk/usr/uploads/2019/10/4119419080.zip"]原博下载[/button][button color="success" icon="glyphicon glyphicon-download-alt" url="https://www.jianguoyun.com/p/DbESS2AQhsXvBxjI-NkD"]本地分流[/button]上传插件至plugins目录并解压，修改文件名为UserAgent。打开Handsome/component/comments.php代码文件，大概第60~80行左右，将代码 <?php echo $author; ?><?php echo $Identity; ?> 改为 <?php echo $author; ?><?php echo $Identity; ?><?php UserAgent_Plugin::get_useragent($comments->agent,$comments->ip); ?> 后台启用插件，进行相关设置。注意使用CDN的同学，需要在Typecho博客网站的根目录的config.inc.php插入下面的代码：//** 防止CDN造成无法获取客户真实IP地址 */ if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }当然，仅仅是对静态资源做CDN加速（比如上篇博客中我的做法），是不需要这一步的。一言api古诗词版假如你是个古诗词爱好者…

github与coding双线部署hexo教程
type: item
date: 2019-11-05T01:15:00+08:00
description: 前言[scode type="red"]20191128更新：刚刚发现codingpage服务挂了，算了还是切换到github上吧[/scode]今天想打开我的wiki站看一些笔记，但是打开速度有点挑战我的耐心了，于是决定把wiki站同步到国内的git服务商一份，这样应该就快不少。因为我所用的主题的使用文档部署在coding，就决定是你了！本以为是个很简单的工作，没想到实际操作起来还是有点麻烦的，决定做个笔记。部署到coding上进入腾讯开发者平台，注册账号并登录。没错，coding已经被腾讯收购了，两个其实是一样的。（而且coding我一进去就是团队界面，都不知道代码在哪，更别说page服务了……）和github一样，在个人设置中添加SSH公钥，可以用之前github已经生成的，一般在C:\Users\用户名\.ssh\id_rsa.pub中，用记事本打开，复制进去即可。如果再生成一个公钥的话也不是不可以，但是容易把原来的公钥文件替换到，然后你就无法git到github了。然后添加一个项目（吐槽一句这个按钮真难找到） 其中，项目地址必须填用户名.coding.me，比如我的就是caly5144.coding.me然后修改站点配置文件_config.yml，拉倒最底下添加coding：deploy: type: git repo: github: git@github.com:caly5144/caly5144.github.io.git coding: git@git.dev.tencent.com:caly5144/caly5144.coding.me.git branch: master其中coding的git地址可以在项目右上角找到。 接下来就是喜闻乐见的hexo g -d刷新一下看看代码是否上传成功然后找到项目的pages服务，注意到右上角有个小螺丝钉标识，点击它。 最后一步就是部署master分支，部署完成后就可以通过caly5144.coding.me访问你的网站了 自定义域名如果你想要添加自己的域名的话，首先去域名服务商那里修改github的CHAME解析，解析线路为境外，这样所有境外的访问都会跳转到github 然后再添加个wiki的CHAME解析，记录值为caly5144.coding.me（它会提示你的），解析线路选默认，这样境内的访问会跳转到coding。如果你想加https，那么请注意！[scode type="yellow"]先把github的解析停掉！[/scode]我一开始也不知道，然后贸然申请SSL证书，结果提示申请失败，再次点击的时候就提示我30分钟后才能申请了。在其他文章中，有博主提到了这个问题，似乎coding不允许同时有多个相同的CHAME解析，只能先停掉github了。接下来就简单了，申请然后强制https访问，再把github的解析打开。需要注意的是coding的证书只有三个月有效期，三个月后你要再次申请。别忘了还是要先停掉github的解析再申请。 完工！测试一下？ping一下域名 挂个代理再ping一下 额……不明白为什么，但是网站还是能打开的，无伤大雅。

一个支持分发上传、私有云的图床程序-Hidove搭建教程
type: item
date: 2019-11-04T21:45:00+08:00
description: [scode type="lblue"]此教程中的图床https://nii.ink正式开放给网友使用，如有问题请联系博主，另：我不保证分发链接的永久有效性[/scode]介绍在之前的文章中我提到了一个令人满意的图床所需要的条件：安装简单颜值舒服可迁移支持api方便查看和管理图片后来又说公共图床接口不是必须的，不可否认我只是给自己一个心理安慰罢了，如果有那当然更好了，如果能实现分发上传，访问链接自动跳转至有效的图床，那岂不是速度和安全性都有了？幸运的是，我前几天还真发现了这样的图床，不仅支持20+公共图床（阿里、百度、搜狗、SMMS……），还支持常见的私有云存储（FTP、又拍、七牛、OSS、COS），最重要的是，支持分发上传！还可以在后台控制各图床的权重及同步到其他图床。试用了一下我表示非常满意，可以说是我用过的最好的图床程序了。 [scode type="yellow"]pro版本是收费的，售价￥88，我觉得挺值的，也请大家多支持一下正版，购买地址及介绍[/scode][scode type="lblue"]也有免费版本，无分发上传和后台。[/scode]部署首先感谢开发者@余生'Blog的耐心指导，让我这个小白成功配置好了CDN。配置环境PHP 7.0+thinkphp伪静态fileinfo扩展MySQL InnoDB引擎还是以宝塔为例，毕竟简单。安装好宝塔，进入宝塔管理后台部署LNMP系统。接着在php设置中安装fileinfo扩展 注意fileinfo需要1g以上内存，若安装失败可以尝试添加swap。在Linux工具箱中添加即可。 安装程序1.上传程序压缩包至网站根目录，解压2.将压缩包中的sql文件导入到数据库中3.编辑config/database.php，将数据库配置修改为你的，其中端口默认是3306。4.将网站运行目录更改为public 5.配置伪静态为thinkphp 打开你的网址，若能正常显示则说明成功了。默认管理员账号为admin，密码admin123登录地址为：http://yoursite/user/login（前台右上角有）后台管理地位为：http://yoursite/admin（前台无，只能手动输入访问）[scode type="yellow"]20200102更新：最新版本不再允许分发域名与主域名一样了，大家设置分发域名的时候可以选一个子域名[/scode]配置CDN[scode type="yellow"]如果你不需要对本地存储策略配置CDN，则可以跳过这一节[/scode]在前一篇文章里我也摸索了CDN到底怎么配置，但是和大佬请教了一番，才发现我配置的方法是错误的。这里记录一下正确的配置方式。首先，我们需要三个域名：加速域名、源站域名、中转域名（不知道官方名字叫啥，我就这样称呼了）。其中，源站域名就是你图床网站的域名，不需要备案；加速域名就是CDN的域名，必须备案；中转域名是用来标识服务器地址的域名，也即加速域名的回源host，通过它来确定图床源站的服务器地址，也无须备案。以我的图床为例，源站域名是nii.ink，加速域名是st.yanshu.work，中转域名是n.nii.ink，CDN放到百度云上，域名服务商是阿里云。那么在百度云中，我们就添加一个加速域名st.yanshu.work，并设置主源站为nii.ink，然后在阿里云中添加一个st.yanshu.work的CHAME记录，记录值就是刚刚百度云生成的。接着在百度云的CDN管理中，修改其回源配置为n.nii.ink 然后再服务器上创建两个站点，分别为st.yanshu.work和n.nii.ink，并绑定目录为/www/wwwroot/nii.ink/public/images。其实可以把这两个站放到一起，但是为了后面加SSL方便，就分开放了。[scode type="red"]切记不要忘了关闭防跨站攻击，三个站都要关掉！[/scode] 然后在阿里云上添加一个n.nii.ink的A解析，记录值为服务器的ip地址。最后，在图床后台添加CDN加速域名http://st.yanshu.work 听起来有点复杂，总结来说：在百度云（CDN服务商）中，你要做的就是添加加速域名并设置源站为源站域名，回源地址为中转域名；在阿里云（域名服务商）中，添加加速域名的CHAME记录（指向百度云CDN），中转域名的A记录（指向服务器）；在服务器上，一共有三个网站，源站、加速站、中转站，但后两者都是绑定的源站，本质上来说只有一个站配置完成后，输入你的加速域名st.yanshu.work或者中转域名n.nii.ink，如果显示下图就代表你配置成功了。 为什么非要有中转域名呢？想一下如果我现在要换个服务器，那么CDN该怎么调整？没错，不用改，只要我们把中转域…

阅后即焚程序naiveboom部署教程
type: item
date: 2019-11-03T02:16:00+08:00
description: github地址程序功能：你将私密的链接或者文字粘贴到我们项目产生一个一次性链接阅后即焚我们用宝塔来部署该程序。安装首先，在宝塔的软件商店里分别找到nginx、PM2管理器、Redis并安装。接着ssh连接到你的服务器，输入命令git clone https://github.com/kchown/naiveboom.git然后在PM2管理器的设置中添加新项目。根目录填写root/naiveboom，启动文件填写run.js，项目名随便填，我填了个naive 等待一段时间，成功后如下图所示： 接着去宝塔的安全里放行3000端口。这样就算安装成功了，在浏览器中输入ip:3000测试一下吧。 打开它生成的网址： 刷新一下： 成功了！反代域名用宝塔很简单，新建一个站点，并在域名商那里解析好。进入网站设置并添加反向代理，代理名称随便填，目标url填http://localhost:3000，发送域名自动生成，保存即可生效。 自定义修改它没有后台，我们只能手动修改它的配置了。各页面文件在root/naiveboom/views网站标题在root/naiveboom/routes/index.js中修改网站favicon在root/naiveboom/public中，替换成你的即可。另一个阅后即焚程序PasteBurngithub地址PasteBurn采用的是php+MySQL，相比于naiveboom来说安装更方便，而且项目中也给出了安装教程，我就不再重复了。我是安装成功了，但是提交文本没反应，不知道为什么……[scode type="red"]有小伙伴说PasteBurn有sql注入漏洞，慎用！[/scode]

0基础使用webscraper爬取数据
type: item
date: 2019-11-02T01:56:00+08:00
description: 区块链第二部分大概是要永远鸽掉了……原作者写得过于简略（我看不懂了），而且原作者用的python版本是2.7，尽管大部分报错我都已经修正了，但是还是无法输出正确结果。打算以后有时间找找别人的教程学一下，接下来还是以神经网络为主。不过一周两篇的目标是不能不完成的，所以写一篇其他类型的文章。webscraper是一款chrome插件，通过模拟人操作浏览器的行为来抓取数据，入门门槛低，简单爬一些数据还是非常舒服的。入门首先你要有一个Chrome浏览器（理论上支持Chrome插件的浏览器应该都可以，不过我没试过），然后下载webscraper插件（需要科学上网）。webscraper下载地址打开你的Chrome，按下F12（即开发者工具），你就会发现选项卡上多了一个Web Scraper，不过如果开发者工具控制台在左边或右边，它是不能正常显示的，必须要放到下边。如图所示，就按照它的提示点击右上角的三个竖点，再切换显示模式就可以啦。 现在能正常显示了，先分别介绍一下这些菜单都什么意思 Sitemaps可以理解为爬虫项目汇总，在这里列出了所有你所创建的项目。Create new sitemap是创建一个新爬虫项目，这个待会再详细说。Sitemap是只有点开了某个具体项目才能使用的，比如我们进入comic项目。Selectors就是当前页面，也就是各个选择器的列表。Selectors graph就是把这个项目所有选择器的层次按树形图表示出来。Edit metadata可以编辑项目的初始设置（id和url），Scrape就是运行该项目，Browse可以在浏览器中显示已经爬取的结果。Export Sitemap就是把这个项目导出为json格式，方便别人导入你的爬虫项目。Export data as CSV就是把你爬取的数据导出为CSV格式。 光介绍是没用的，必须实战才能掌握。我们以我的博客为例，看下如何用webscraper。爬取雁陎的自耕地网站入口假如我们想要爬取雁陎所创作的所有文章，该怎么做呢？首先要打开网站，获取首页及之后各页的标题超链接，然后进入超链接（也就是文章详情页），最后抓取正文。带着这个思路，开始写我们的操作。点开Create new sitemap下的Creat Sitemap Sitemap name可以随便填，但是不能和已有项目名重复，相当于一个id的作用吧，注意必须不能填中文，这里填yanshu就好了。Start URL就是爬虫的入口，在这个项目里入口就是https://www.sitstars.com/，webscraper会从这个url开始爬虫。但是光填首页的url是不够的，因为我们还想爬后面的文章。那么我们回到网站，点击第二页，地址栏变为https://www.sitstars.com/page/2/，这下我们就知道这个博客的页码变动规律了。web scraper 中提供了一种写法，可以设置页码范围及递增步长。写法是这样的： 开始值-结束值[:步长]，比如我们这个项目就是https://www.sitstars.com/page/[1-7]。有些网站的步长可能不是1，比如豆瓣小组，https://www.douban.com/group/juzimi/discussion，第二页就会多个参数?start=25，后面依次递增。那么这时候要爬取前10页，要这样写https://www.douban.com/group/juzimi/discussion?start=[1-250:25]填入这两个信息后，点击Creat Sitemap，跳转到“代码编写页面” 列表页这一块最重要的概念就是Selector，字面意思是选择器，一个页面上的任何元素，文本、超链接、div……都可以是选择器。爬虫，就是一个逐步筛选选择器的过程。点击Add new selector创建我们第一个选择器。 先介绍一下各个选项的含义：id随便填，它只是起到一个标识的作用。Type就是选择器的类型。常用的就这几个：TXT，文本Link，超链接Image，图片Element，元素Element scroll down，获取元素后向下滚动，对于ajax页面特别有效Element click，获取元素后点击，适用于评论展开等情况Selector，即你所选取的选择器。其中select可以选中页面元素，自动显示选择器，Element preview就是预览你所选中的选择器，Data preview预览选择器所包含的数据。Multiple，勾选之后可以批量选中选择器。Regex，即正则表达式，一般没必要填Parent Selector，即该选择器的父选择器是哪个。为了方便我们输入xpath，可以打开目标网站对照着写。id填article，Type选link，然后选中…

0基础入门神经网络系列文章汇总
type: item
date: 2019-10-24T01:41:00+08:00
description: 这一系列文章均来自Victor Zhou，他对神经网络的讲解，让我这个数学基础贼差的人也能够很容易地理解，所以决定进行翻译，作为我机器学习的入门教程吧。作者后续发表的相关文章均会汇总到这里。如果我在机器学习领域发现了其他能够补充的材料，也会放到这里。[scode type="red"]提醒：译者英语水平和机器学习水平都很有限，有能力的同学最好去看原文，如果您发现哪里有翻译错误，欢迎留言指出。[/scode] 这个四篇系列文章特别针对初学者，为理解神经网络提供了一种面向基本原理的方法。在深入研究两种流行的变体：递归神经网络（RNN）和卷积神经网络（CNN）之前，我们将为初学者提供经典神经网络的介绍。对于每种类型的网络，我们将：查看网络的结构。了解使用该类型网络的动机。介绍一个可以使用该网络解决的现实问题。手动推导训练我们特定问题的网络所需的梯度。在Python中完全从头开始（仅使用numpy）实现功能全面的网络。知识背景无需机器学习或神经网络知识基础，但是，以下知识背景可以帮助你更快入门：多元微积分，用于得出训练我们的网络所需的梯度时使用。如果您没有该知识背景，可以跳过这些梯度推导。线性代数，特别是矩阵，通常是表示神经网络权重的最佳方法。Python 3，仅需基础水平即可。译者注：虽然作者说仅要求基础，但是还是建议大家（1）掌握python序列、函数、类、循环、条件等相关概念，尤其是类，其实我觉得它已经超出了基础的范畴……（2）掌握numpy库，这个熟悉一遍了解各个方法的作用就行，我当时是专门学了一遍的，不过被秩轴位的概念搞疯了……（3）如上所述，需要你掌握多元微积分，不过这个好像高中就讲过了，至少我一个文科生都懂；线性代数，回去翻翻教材吧……译者在学python和numpy的时候做了笔记，你可以参考：[post url="https://wiki.sitstars.com//wiki//编程语言//python//01%20基础%20Python笔记//" title="python基础语法" intro="雁陎做的关于python语法的笔记"][post url="https://wiki.sitstars.com//wiki//编程语言//python//02%20numpy库//" title="numpy基础语法" intro="雁陎做的关于numpy语法的笔记"]系列文章基础-softmax[post cid="45" /]在正式入门神经网络之前，推荐大家先看一下上面这个关于softmax的简要介绍，因为从第二篇文章起就要开始用到，而且是CNN和RNN重要组成部分。阅读顺序如下，主要是根据一些概念出现的顺序来决定的，如果跳读的话很有可能遇到一些不明白的概念，又要回过头看前面的文章。[post cid="44" /][post cid="46" /][post cid="47" /][post cid="48" /]持续更新中……另外我专门为这篇文章写了一篇名词手册，包含了中英文对照，您可随时查阅：[post cid="49" /]更深入地学习想要更深入地学习？可以参考以下内容：使用Keras构建您的第一个神经网络。学习合适的机器学习库，例如更大/更好的神经网络Tensorflow，Keras和PyTorch。尝试使用神经网络来参与Kaggle数据科学竞赛。斯坦福大学CS231n（关于CNN）课程的笔记。Coursera上有许多优秀的神经网络。

ipfs搭建教程
type: item
date: 2018-11-17T23:37:00+08:00
description: 介绍github社区：https://github.com/ipfs/ipfs#project-and-communityipfs应用项目：https://github.com/ipfs/awesome-ipfsIPFS：星际文件系统IPFS（InterPlanetary File System）是一个面向全球的、点对点的分布式版本文件系统。目标是为了补充（甚至是取代）目前统治互联网的超文本传输协议（HTTP），将所有具有相同文件系统的计算设备连接在一起。IPFS用基于内容的寻址替代传统的基于域名的寻址，用户不需要关心服务器的位置，不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中，将会得到基于其内容计算出的唯一加密哈希值。哈希值直接反映文件的内容，哪怕只修改1比特，哈希值也会完全不同。当IPFS被请求一个文件哈希时，它会使用一个分布式哈希表找到文件所在的节点，取回文件并验证文件数据。IPFS是通用目的的基础架构，基本没有存储上的限制。大文件会被切分成小的分块，下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络，可以很好的适应内容分发网络的要求。这样的设计可以很好的共享各类数据，包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份，还有静态网站。简而言之，就是利用区块链技术存储数据的一种方式。根据我的理解，ipfs上传文件后，会自动加密分隔，传到各个Gateway（即网关或节点），同时生成一个64位hash值，用户知道hash值即可访问该文件，系统会自动寻找最近的节点并下载合并。不过你需要一个gateway来作为中转访问，比如https://ipfs.io/ipif/就是一个节点，在该节点域名后加上hash值即可访问。这个域名可能会被墙，但只要我们找到可用的节点，或者是直接搭一个，那就可以永久不用担心文件丢失的问题了。windows搭建安装包下载地址（需科学上网）：https://dist.ipfs.io/#go-ipfs找到适合你系统的版本，下载并解压至指定目录，如：D:\go-ipfs配置环境变量右键此电脑>高级系统设置>高级>环境变量>系统变量>Path>新建 输入ipfs文件目录即可配置成功，例如：D:\go-ipfs创建本地IPFS节点并初始化ctrl+R打开cmd输入ipfs init并回车。创建IPFS本地节点复制下图红圈内的代码，粘贴并执行。初始化本地节点 输入并执行命令ipfs daemon启动节点并链接至IPFS主网。注意：此窗口在之后的操作中不能关闭，关闭即断开主网链接使用1. 命令行操作新打开cmd窗口，输入ipfs.exe id即可查看本节点IDipfs.exe daemon启动节点ipfs add +文件路径\文件名，上传至IPFS网络，注意连接IPFS的cmd窗口不能关。/ip4/127.0.0.1/tcp/80802. 目录相关操作//创建目录feijian ipfs files mkdir /feijian //查看有几个目录 ipfs files ls //建立自定义目录下的文件与hash文件的映射 ipfs files cp /ipfs/QmYxnH77S4qk82JUu6m76kAnH4MRiVGL1sb9JBPQ6UWFqL /feijian/myfile.txt //查看目录下的文件 ipfs files ls /feijian //读取文件 ipfs files read /feijian/myfile.txt3. web图形界面操作在浏览器中输入： http://localhost:5001/webui，即可打开web窗口。在这里可以查看本节点信息，全球节点分布，文件上传，更改相关配置（如端口，StorageMax什么的）。输入:http://localhost:8080/ipfs+hash值即可查看文件。问题待发现