不见春山 https://blog.ctaoist.cn 骑马倚斜桥,满楼红袖招。 Python的跨目录引用 https://blog.ctaoist.cn/blog/post/ctaoist/Python%E7%9A%84%E8%B7%A8%E7%9B%AE%E5%BD%95%E5%BC%95%E7%94%A8 经常遇到 Python 跨目录引用报 No module named xxxx 错误,略微整理一下。 区分Python中的一些概念 一个以 .py 结尾的文件就是一个 python module 任意一个文件夹,只要其中包含 python module,就可以叫做 python package.(Python2的话,该文件夹内还需要包含一个 __init__.py 文件) 我们既可以 import package,也可以 import module,以及 module 下的函数、类等等 Python引用自定义python文件的情况 utils和main位于同级目录下 16 Feb 23 18:05 HKT https://blog.ctaoist.cn/blog/post/ctaoist/Python%E7%9A%84%E8%B7%A8%E7%9B%AE%E5%BD%95%E5%BC%95%E7%94%A8 RNN与LSTM https://blog.ctaoist.cn/blog/post/ctaoist/RNN%E4%B8%8ELSTM RNN 一个简单的RNN模型如下: 循环神经网络的隐藏层的值 SSS 不仅仅取决于当前这次的输入 XXX,还取决于上一次隐藏层的值 St−1S_{t-1}St−1​。权重矩阵 W WW 就是隐藏层上一次的值作为这一次的输入的权重。 RNN 按照时间线展开: 网络在 ttt 时刻接收到输入 X_{t} 之后,隐藏层的值是 StS_tSt​ ,输出值是 OtO_tOt​ 。关键一点是, OtO_tOt​ 的值不仅仅取决于 XtX_{t}Xt​ ,还取决于 St−1S_{t-1}St−1​ 。 LSTM LSTM 的梯度由两部分组成:RNN 结构的梯度和线性变换函数的梯度。线 01 Nov 22 10:50 HKT https://blog.ctaoist.cn/blog/post/ctaoist/RNN%E4%B8%8ELSTM 反向传播原理的理解 https://blog.ctaoist.cn/blog/post/ctaoist/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E5%8E%9F%E7%90%86 如图所示,计算图的反向传播从右到左传播信号。反向传播的计算顺序是,先将节点的输入信号乘以节点的局部导数(偏导数),然后再传递给下一个节点。 首先来考虑加法节点的反向传播。这里以 z=x+yz = x + yz=x+y 为对象, 观察它的反向传播。z=x+yz = x + yz=x+y 的导数可由下式(解析性地)计算出来: ∂z∂x=1∂z∂y=1\frac{\partial z}{\partial x} = 1 \\ \frac{\partial z}{\partial y} = 1 ∂x∂z​=1∂y∂z​=1 也就是说,加法节点的反向传播只乘以 1。输入的值会原封不动地流向下一 14 Oct 22 13:10 HKT https://blog.ctaoist.cn/blog/post/ctaoist/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E5%8E%9F%E7%90%86 迁移学习入门 https://blog.ctaoist.cn/blog/post/ctaoist/%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0 简介 迁移学习(transfer learning)通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性,用成语来说就是举一反三。由于直接对目标域从头开始学习成本太高,我们故而转向运用已有的相关知识来辅助尽快地学习新知识。比如,已经会下中国象棋,就可以类比着来学习国际象棋;已经会编写Java程序,就可以类比着来学习C#;已经学会英语,就可以类比着来学习法语;等等。世间万事万物皆有共性,如何合理地找寻它们之间的相似性,进而利用这个桥梁来帮助学习新知识,是迁移学习的核心问题。 在迁移学习中,我们已有的知识叫做源域(source domain),要学习的新知识叫目标域 13 Jun 22 11:24 HKT https://blog.ctaoist.cn/blog/post/ctaoist/%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0 tensorflow-gpu 安装笔记 https://blog.ctaoist.cn/blog/post/ctaoist/d28c741e3eb4 公司另一个项目组整了台 GPU 服务器,可以蹭一蹭,tensorflow-gpu 环境的搭建还是有点麻烦,使用 conda 会省时省力一些。 安装 cuda 和 cudnn 手动安装 官方下载地址 conada 安装 换源请参考 conda 换源 初次使用 conda 需要初始化 shell: conda init powershell # win10 初始化 powershell, linux 则 bash/zsh 等 Copy ps. powershell 需要开启执行脚本的权限, 打开PowerShell 然后输入 get-executionpoli 13 May 22 11:15 HKT https://blog.ctaoist.cn/blog/post/ctaoist/d28c741e3eb4 Leanote 改造笔记 https://blog.ctaoist.cn/blog/post/ctaoist/Leanote-%E6%94%B9%E9%80%A0%E7%AC%94%E8%AE%B0 背景 通过 Leanote 写笔记,经过整理后可以直接发布 Blog 的这种模式比较戳我了。 不过一直有点忍受不了 Leanote 的分类逻辑和 Hexo ,Hugo ,Jekyll 等静态博客不太一样,用着主题市场中半成品的主题,就这样凑合着过了两年。 但直到看到了一款 Jekyll 的主题 Chirpy,可以说是一间钟情了,果断移植到 Leanote 上。 在移植过程中越来越忍受不了 Leanote 奇怪的分类逻辑,移植的不够完美,越想越气,忍无可忍,又想到 Leanote 官方从 2018 年就基本上停止更新了,然后就 fork 了源码修改了对应部分的逻辑。 移植后的主题:le 25 Apr 22 23:53 HKT https://blog.ctaoist.cn/blog/post/ctaoist/Leanote-%E6%94%B9%E9%80%A0%E7%AC%94%E8%AE%B0 Leanote 支持 Mermaid,Chartjs 及修复 Bug https://blog.ctaoist.cn/blog/post/ctaoist/Leanote%E6%94%AF%E6%8C%81Mermaid-Chartjs%E5%8F%8A%E4%BF%AE%E5%A4%8DBug 支持 emoji、chart.js 以及 mermaid 参考的大佬地址:https://github.com/jim3ma/leanote 下载 note.html 替换 leanote/app/views/note/note.html 下载 note-dev.html 替换 leanote/app/views/note/note-dev.html 下载 md2html.js 替换 leanote/public/libs/md2html/md2html.js 下载 main-v2.js 替换 leanote/public/md/main-v2.js 下载 default.css 替换 25 Apr 22 23:16 HKT https://blog.ctaoist.cn/blog/post/ctaoist/Leanote%E6%94%AF%E6%8C%81Mermaid-Chartjs%E5%8F%8A%E4%BF%AE%E5%A4%8DBug N2N 搭建教程 https://blog.ctaoist.cn/blog/post/ctaoist/N2N-%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B 之前从 Zerotier 切换到 Tinc,但是在 ArchLinux 和创建的 Alpine 镜像中,连接成功一段时间后老是提示 Metadata socket read error for xxxxx: Connection reset by peer,搜了一圈也没有找到解决办法,干脆切换到 N2N 算了。 N2N是一款十分简单且强大的p2p组网软件。它可以实现组网和p2p直连。只需要拥有一台服务端,任何主机都可以接入进来做为客户端,功能更贴近 Zerotier。 安装 supernode 服务端 由于 VPS 的 Debian 软件仓库里的版本非常低,做了一个Dock 12 Apr 22 10:32 HKT https://blog.ctaoist.cn/blog/post/ctaoist/N2N-%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B Mathematica 模拟滑块摆运动 https://blog.ctaoist.cn/blog/post/ctaoist/Mathematica%E6%A8%A1%E6%8B%9F%E6%BB%91%E5%9D%97%E6%91%86%E8%BF%90%E5%8A%A8 写这个主要是为了Mathematica的动画制作,Mathematica官方文档给出的是用Animate及相关的函数,但这并不能满足题目的要求,所以选择创建GIF图片。 题目 滑块摆由一置于光滑杆上的质量为m的滑块A、一质量为M的小球B和长度为L,质量不计的刚性杆铰接而成,不计各处摩擦,以过A点的水平面为零势能面,通过Lagrange方程建立系统的运动方程,利用Maple软件画出: 1. 滑块A的位移x随时间t的变化曲线 2. 角度φ随时间t的变化曲线 3. 滑块摆的运动动画 拉格朗日力学分析 在力学中经常使用 Lagrange 方程来分析。 在滑块摆 06 Dec 21 16:45 HKT https://blog.ctaoist.cn/blog/post/ctaoist/Mathematica%E6%A8%A1%E6%8B%9F%E6%BB%91%E5%9D%97%E6%91%86%E8%BF%90%E5%8A%A8 Linux 创建 Swap 分区 https://blog.ctaoist.cn/blog/post/ctaoist/Linux%E5%88%9B%E5%BB%BASwap%E5%88%86%E5%8C%BA a.创建交换文件 fallocate -l 4G /swapfile# ordd if=/dev/zero of=/swapfile bs=1M count=4096 b.设置可访问权限 chmod 600 /swapfile c.格式化文件 mkswap /swapfile d.激活swap空间 swapon /swapfile f.开机自动启用swap空间 编辑/etc/fstab,添加下面这一句: /swapfile none swap default 0 0 或者在 /etc/rc.local 中添加: s 02 Dec 21 11:08 HKT https://blog.ctaoist.cn/blog/post/ctaoist/Linux%E5%88%9B%E5%BB%BASwap%E5%88%86%E5%8C%BA