Shellbye.github.io
Shellbye.github.io copied to clipboard
my blog --> see https://github.com/Shellbye/Shellbye.github.io/issues for recent update
在将`Python`代码转为`C++`的过程中,需要一步一步的查看以确保转化过程的正确性,对于常见的数据类型,基本打印出来就可以进行对比查验,但是对于模型输出的`Tensor`,本以为它就是个多维向量而已,循环打印之就好,但是缺也是费了很大的周折,最终还是通过看源码找到了解决方案。 因为我也刚开始接触[`TenserFlow`](https://tensorflow.google.cn/?hl=zh-cn),所以很多东西还没有搞特别明白,比如`C++`模型的输出,在我们的项目中,输出是一个`std::vector`,我想做的事儿就是遍历这个`Tensor`,查看里面的数据是否与我们的`Python`版一致。 在尝试了各种方法之后,最后通过通读文档,凭感觉觉得这个[`vec`](https://tensorflow.google.cn/api_docs/cc/class/tensorflow/tensor?hl=zh-cn#vec)可能就是我要找的东西,然后发现了`Eigen`这么一个概念,继续顺藤摸瓜,又找到了[这篇](https://blog.csdn.net/hjimce/article/details/71710893)博客,最终确定我需要的应该是[`tensor`](https://tensorflow.google.cn/api_docs/cc/class/tensorflow/tensor?hl=zh-cn#tensor_20)这个方法, 代码如下: ```C++ Status run_status = session_->Run(input, { "BiasAdd:0", }, {}, &outputs); if (run_status.ok()) { auto f = outputs[0]; auto t0 = f.tensor(); // 3来自f.shape() std::cout
最近在做语音合成的相关工作,其中用的一个功能点就是获取汉字的拼音,这个在`Python`中可以通过[`pypinyin`](https://github.com/mozillazg/python-pinyin)来完成, ```Python >>> from pypinyin import pinyin >>> pinyin('中心') [['zhōng'], ['xīn']] ``` 但是在我们的项目中,需要的是`C++`版本的,所以需要把这部分功能转化为`C++`代码,看了一下`pypinyin`的代码,大概就是先把汉字转化成`code point`,然后在一个超级大的字典里找这个汉字的拼音。于是,把这个超级大的字典拷贝出来放到`C++``里就基本大功告成了,但是还缺一步,就是汉字到code point`的过程。在`Python`中,汉字到`code point`就是一行代码, ```Python ord('白') 30333 ``` 但是就这样一个简单的操作,把它翻译到`C++`缺用了我很长时间(很大程度上也是因为我对`C++`不熟),最终还是在万能的[`SO`](https://stackoverflow.com/questions/25201528/get-codepoint-of-unicode-character-in-c)上找到了解决的代码: ```C++ #include #include #include #include "data_pinyin.hpp" int main(int argc,...
最近在公司内部转岗到了AI lab,开始做模型工程化的工作,也开始接触C++了,估计会有不少新的笔记产生,毕竟是从头开始学一个全新的语言。 今天尝试了从零开始在VS2015中配置boost,网络上的[中文资料](https://www.cnblogs.com/sqxy110/p/4881078.html)帮了一些忙,但是依然没有完全配置好,最终还是参考了[官方文档](https://www.boost.org/doc/libs/1_67_0/more/getting_started/windows.html#build-from-the-visual-studio-ide),才解决了遇到的问题。 # 下载boost 从[官网](https://www.boost.org/)下载最新的包即可,解压之后进入目录中,依次执行 ```bash bootstrap .\b2 ``` 这里可能需要很久,完成之后就需要打开VS2015进行如下三项配置: 在工程中右键-->属性 1. C/C++ -->常规-->附加包含目录-->选择boost的根目录 2. C/C++ -->预编译头-->预编译头-->不使用预编译头 3. 链接器 --> 附加库目录 --> boost根目录\stage\lib 然后就可以啦
# 1.`related_name` 首先是`related_name`,[官网](https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ForeignKey.related_name)是这么说明的: > The name to use for the relation from the related object back to this one. > 这个名字是用来反向查找与其有关的对象时使用的 我看过好几次,但是一直没搞明白是啥,知道实际再别人的代码看到具体的使用,才明白。举例说假设你有如下的`models.py`文件,用来定义老师与学生: ```python class Teacher(models.Model): name = models.CharField(max_length=50) class Student(models.Model):...
[Bottle](http://bottlepy.org/docs/0.12/)支持在开发过程中自动监听文件改动,并[重启服务](http://bottlepy.org/docs/0.12/tutorial.html#auto-reloading)。本文通过阅读其源码,来探究它是如何做到这一点的。 # 执行代码 本文使用`0.12`的稳定版本,完整源码见[这里](https://github.com/bottlepy/bottle/blob/release-0.12/bottle.py)。 以下代码就可以启动一个WEB服务,并监听文件改动。 ```python # -*- coding:utf-8 -*- # Created by shellbye on 2018/5/24. from bottle import run, route @route('/') def hello(): return "Hello World! " run(host='localhost', port=8050,...
之前有若干博客分别介绍了`Logstash`的安装( #7 #14 )、导入文本文件( #11 )、导入`json`文件( #10 )以及从`MySQL`导入文件( #8 #16 )。以上导的数据都是从一个地方,一次性到了另一个地方,虽然来源不一样,但是整体逻辑还是比较简单的,今天记录一个比较复杂的逻辑,即从`MySQL`(或其他来源)获取数据之后,将拿到的数据发送到远程`restful`接口(感谢[JSONPlaceholder](https://jsonplaceholder.typicode.com/)),然后将返回的内容经过处理之后输出到`output`。 # 构造MySQL数据 创建并切换数据库,然后创建demo需要的表,插入3条数据 ```bash mysql> CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql> use demo; mysql> CREATE TABLE...
偷得浮生半日闲,最近外派归来,新的任务还没下来,刚好赋闲几天。 前几天在论坛里看到一个不错的创业公司的招聘贴,里面有一个加分项,即个人博客,让我想起来了我拿域名都过期了的博客,于是改了下[Github Page](https://pages.github.com/)的CNAME,想着直接用[shellbye.github.io](http://shellbye.github.io/)就好,结果整来整去,每次对[shellbye.github.io](http://shellbye.github.io/)的访问都被重定向了到老域名,折腾了好久,实在没看出来哪里有问题,于是给Github Page发了邮件,在客服人员的回复下才知道,原来浏览器还会缓存域名(301),于是清空了缓存,一切就正常了。 说起来收拾博客,还有一个原因,就是因为一直找不到合适的读源码的相关的书籍或者博客,恰好我年前读了几天[`bottle`](http://bottlepy.org/docs/dev/),于是我就冒出来一个想法,是不是可以尝试写本书,记录读源码的过程,一方面激励自己读源码,一方面也可以解决市面上目前没有读源码相关书籍这样一个问题。不过我也知道,这肯定不是一个一蹴而就的事儿,真要做起来,一定是需要很大的付出,否则难成。 写书这个事儿,除了需要很大的付出外,其实好处真的是非常多的, 1. 首先,这是一个非常好的提高自己代码能力的机会。就我目前看来,还真很难找到合适的途径,能够快速的提高代码水平和能力的途径。我之前有过一个小小的尝试,读了howdoi,收获其实就非常大,只可惜自己没有长期坚持下来,否则一定是有长足的进步的 2. 其次,这也是一个提升知名度的机会。阮一峰就是通过一系列的博客教程,进而在业界有了一定的知名度,这不仅在工作中有一定好处,就是寻找下一个工作机会或者创业,也是有很多的好处的。 3. 最后,说不定还可以赚点钱。😊 目前还仅仅只是一个idea,而且产生这个idea很大程度上也是自己最近比较闲,说不定过几天忙起来,也就彻底没这个念头了,哈哈哈哈
雨夜 ---- 2015-09-08 漫漫长夜,淅淅沥沥的雨 一切都是那么的熟悉 我又一次从噩梦中醒来 想到的还是熟悉的你 熟悉的场景里熟悉的疼痛 我又一次回到了过去的自己 爱上你, 让我还是那么的手足无措 原来我没有想象中的坚强 还是十六岁那个懦弱的自己 我躲在墙角默默地哭泣 祈祷着这一切尽快过去 好想去黑色的狂野中奔跑 融入老友的怀抱 此时的我已缺乏勇气 只想象着漫漫长夜,听着淅淅沥沥的雨 那个酒吧的女子 ---- 2014-03-12 那个酒吧的女子 抱着双肩静静地坐在那里 这是她第一次来到这里么? 她看起来是那么的惊慌失措 那个酒吧的女子 优雅地举着装有红酒的高脚杯 她那性感的红唇 暗淡了她身边的所有存在...