Fullstar

Archives

  • December 2025
  • August 2024
  • July 2024
  • February 2024
  • November 2023
  • August 2023
  • July 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • February 2022
  • January 2022
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020

Categories

  • Code
  • Lens
  • Life
0
Fullstar

Posts by month

July 2020

11 posts
  • Code

Java 编码

  • July 31, 2020
  • Brandon
一.乱码问题 使用 FileReader 读取文件时,可以正常读取IDE默认编码格式(UTF-8)的文件,但若读取系统默认编码(中文GBK)则会产生乱码如: ���。当用记事本写入内容并保存为不同的编码时其保存的二进制码也是不同的,如UTF-8编码使用3个字节保存一个中文,GBK用2个字节保存一个中文。FileReader 底层为 FileInputStream ,在以字节流的方式读入后查询IDE默认码表,并用此码表进行转换,因此若文件保存为GBK,而 FileReader 使用 UTF-8 进行解码,二者并不匹配,因此产生乱码。 同样的,在使用 FileWriter 进行文件写入时,其首先查询IDE默认编码表,将字符转换为字节,再利用 FileOutPutStream 将字节流输入文件,此时文件内的编码即为IDE默认编码,而若想更改编码类型,则可以使用 OutputStreamWriter 指定编码表进行输出。 二.转换流转换流程图示 使用 InputStreamReader 进行转换时可自行指定编码表,从而防止乱码 使用 OutputStreamWriter 可自行指定文件保存所用编码表 三. OutputStreamWriter 的使用 OutputStreamWriter…
View Post
Share
  • Code

Java IO流

  • July 31, 2020
  • Brandon
一.字节输出流-FileOutputStream 当执行上述代码时表示创建test.txt文件并向其中写入内容,由于使用字节输出流,因此此处的十进制97将转换为二进制1100001输入文件内,则文件所占大小为1字节,且由于记事本打开文件时会查询编码表,将字节转化为字符,若值大小在0-127则查询Ascii表,其余将查询系统默认编码表,如中文系统则为GBK,因此此时打开记事本文件显示的字符为a。 若想一次输出多个字节则可以采用上述代码形式,且若第一个字节范围为0~127则会查询ASCII表,而若第一个字节为负数则将与第二个字节组成一个中文显示,查询系统默认表(GBK)。除了上述使用形式外还有以下两种使用形式。 二.字节输入流-FileInputStream test.txt文件内容为abc,若采用 fileInputStream.read() 则读入一个字节,而a的ASCII码为97,因此读入后转换为十进制则输出97,当读入到结尾时将输出-1,则输出全部内容可使用如下代码 除了上述读入方式还可以使用byte[]数组作为缓冲区,从文件内读入byte小于等于数组大小的字节数,且可以使用 String(byte[]) 构造方法将内容输出。通常byte数组长度取1024(1kb)或1024的整数倍。 若文件已经读到结尾继续读入,即在len<byte.length的情况下继续读入,则由于byte数组没有被完全覆盖,因此输出的值将残留上次输出的内容,如上述示例中若继续读入将输出fgcde,同样的,可以利用循环读取数据 三.利用字节输入/输出流实现文件复制 四.字符输入流-FileReader read() 函数一次读入一个字符,且java中的一个中文字符也为一个char类型字符,因此可以直接输出中文句子 同样可以采用char[]数组作为缓冲区加快存储 五.字符输出流-FileWriter 字符输出流与字节输出流的最大区别在于字符输出流的write()为写入内存缓冲区而不是硬盘中,因此若不使用close()或flush()方法则文件内不会有内容写入 以下为输入文件的其他常用形式 六.字节缓冲输入流-BufferedInputStream 为字节输入流(FileInputStream)增加一个缓冲区,增加写入效率 七.字节缓冲输出流-BufferedOutputStream 八.利用字节缓冲输入/输出流实现文件复制 九.字符缓冲输出流-BufferedWriter 十.字符缓冲输入流-BufferedReader
View Post
Share
  • Code

基于vue的微信小程序开发

  • July 30, 2020
  • Brandon
一.脚手架搭建项目1.创建项目(使用github上的uni-app远程预设选项) vue create -p dcloudio/uni-preset-vue project 2.启动项目 npm run dev:mp-weixin 3.微信小程序开发者工具导入项目 4.可使用如下开发方式微信开发者工具仅用于调试程序运行情况,将项目导入Idea,使用Idea对程序代码进行编辑即可。 5.导入uni-ui组件库 npm install @dcloudio/uni-ui 具体使用方式见官方文档: https://www.npmjs.com/package/@dcloudio/uni-ui 注:使用uni-ui需要安装sass依赖,安装方式: npm install sass-loader node-sass 二.导航栏设置导航栏设置位置位于pages.json文件内,以下为导航栏设置样例,设置完毕后将自动生成位于底部的导航栏 三.使用uni-api发起网络请求使用uni.request发起网络请求与使用axios进行网络请求语法完全一致 扩展:由于uni-api的网络请求与wx自带的网络请求无法方便地显示正在加载图像,因此可自行封装网络请求模块,封装过程如下:1.新建utils文件夹,并在其下建立request.js文件,在文件内添加如下代码 2.在main.js中挂载request.js中的request 3.在.vue文件内发起网络请求 结尾:音乐推荐
View Post
Share
  • Code

Memory Network

  • July 27, 2020
  • Brandon
Memory Network 一.模型意义Memory Network用于训练类似于机器的阅读理解能力,首先输入文本内容,再对输入的问题进行解答。 二.模型构建Memory Network实际上为attention model的应用。machine首先将输入的Document中的每一个句子变为一个个vector,再将输入的query同样转化为vector,再将query vector与document vectors经过match函数得到$\alpha_i$,再将$\alpha_i$与$x^i$依次相加求和,并将结果输入DNN从而得到Answer。 其中query vector实际上是对attention model中的初始参数$z^0$的取代,通过match函数控制不同的query对于document不同句子的关注度,从而得到与query相对应的answer。 Neural Turing Machine 一.模型意义Neural Turing Machine(神经图灵机)不仅从memory里训练出信息,还可以根据match score修改存在memory中的内容,即不仅读memory中的内容还可以改memory中的内容。 二.模型构建(简化版) 1.首先设置初始memory值$m^i_0$与初始attention值$\hat{\alpha}_0^i$,将各值分别相加求和得到$r^0$,再与第一个时间点的input$x^1$经过自定义函数f从而输出三个vector:$k^1,e^1,a^1$。其中$k^1$的作用在于产生attention,其与$m_0^i$经过 cosine similarity 得到$\alpha_1^i$,再将它们经过softmax从而得到新的$\hat{\alpha}_1^i$ 2.修改memory的值,$e^1$的作用为清空memory,$a^1$的作用为将新的值写入memory中。利用如下公式即可对$m_1^i$进行更新 $m_1^i = m_0^i – \hat{\alpha}_1^i…
View Post
Share
  • Code

attention model

  • July 26, 2020
  • Brandon
一.Encoder与Decoder的意义在单纯使用RNN进行generation时其生成的东西非常pool,以生成文本为例,RNN只能通过学习后输出与输入语言风格类似的句子,但我们无法对句子的内容进行控制,因此无法实现模拟对话等功能。 因此可以采用Encoder-Decoder模型进行训练。以文本翻译为例,Encoder指将输入的句子先通过一次RNN,从而生成一个vector,再将此vector输入另一个用于输出翻译结果的RNN,此RNN即称作Decoder。在Decoder中每一个time均将Encoder中生成的vector作为输入,从而避免后续节点忘记训练的内容。 二.attention model的意义attention model能够使得decoder中输入的vector每个time都不一样,此操作的意义在于:1.Encoder中的输入可能非常复杂,无法用一个vector来描述 2.可以让Decoder专注于它所需要的信息,如encoder输入机器学习,则decoder的第一个time仅希望考虑机器两个字而不是一整个句子,因此通过这个方式machine可以学的更好。 三.attention-based model建立步骤以机器翻译为例1.定义初始参数$z^0$,将$h^i$(RNN的hidden layer的output)与$z^0$通过match函数计算得到$\alpha ^i_0$,其中0表示此时计算time为0,match函数可以自行设计,常见的有cosine similarity of z and h等 2.将$\alpha ^i_0$经过softmax层生成$\hat{\alpha}^i_0$,再利用公式$c^0= \sum_{i=1}^n \hat{\alpha}^i_0 h^i $得到$c^0$。则$c^0$的值将受到$\hat{\alpha}^i_0$的影响,从而实现不同的time专注于不同的信息 3.将得到的$c^0$输入Decoder中,则得到第一个输出machine,其中训练得到的$z^1$为RNN中的hidden layer output,可再将其作为参数放入Encoder进行训练,从而得到$c^1$。通过重复上述步骤从而完成训练。 四.attention-based model在Image Caption Generation的应用基本思路:利用CNN对一张图像进行训练,将模型中作flatten之前的filter output取出,利用attention-based model逐步生成word,则能够得到能够描述图片的一段句子
View Post
Share
  • Code

基于RNN的自动文本生成

  • July 22, 2020
  • Brandon
一.基本思路1.假设有一段文本:the apple is red,首先对在句子中的各个字母用set进行收集,并利用index生成(index, alpha)形式的dict 2.将文本利用dict中的key进行转化,如t对应index值为1,h为2,e为3,则the可转化为1 2 3,因此文本转化为array[1 2 3 …] 3.对每一个数字进行编码转换方式1:手动进行one-hot编码假设len(dict)=10,则一个数字转化的vendor长度为10,如2中的1可转化为$[1,0,0…,0]^T$方式2:利用Embedding层进行自动转换假设将shape=(1,10)输入Embedding(a,b)层,则将输出shape=(1,10,b),即利用embedding对输入矩阵的每一个值进行向量转化 4.构建模型(1)建立SimpleRNN层,输入shape=(array_len,dict_len),输出shape=(1,dict_len),其中 array_len 表示文本转化的array的长度,dict_len表示dict的长度,由于输入一个句子输出一个字母,因此输出值shape即一个字母的数值表示,shape=(1,dict_len)(2)建立Dense层,设置units=dict_len,使用softmax激活函数将输出值进行压缩,并利用 categorical_crossentropy 作为loss function。即将问题转化为classification,利用全连接层进行训练,计算其与label的loss并进行反向传播调整参数,从而完成训练 参考链接:用Keras实现SimpleRNN:生成文本
View Post
Share
  • Code

Keras Embedding层

  • July 21, 2020
  • Brandon
意义:embedding层的意义在于将文字向量化,如有10句话,每句话有5个单词,那么若用简单的one hot进行表示无法体现出单词与单词间的关系,而利用embedding层能够使得一个单词变为一个向量,从而能够利用向量间的计算方法对单词间的关系进行数值化估计 keras中提供了Embedding层,其常用形式如下: 上述代码中参数input_dim表示所输入的数组的最大值所不能超过的界限值,output_dim表示将输入的矩阵中的一个值用长度为多少的向量来表示,input_length表示一个数据所含有的特征数目,即矩阵的列数。若输入为(10,5)的矩阵,则可以理解为输入10句话,每句话有5个单词,每个单词用长度为3的向量来表示,因此输出shape为(10,5,3)。函数测试如下: 输出如下: 参考博客:Keras里Embedding层的理解
View Post
Share
  • Code

网址收藏夹

  • July 16, 2020
  • Brandon
一.软件文档 1.keras文档 2.uni-app文档 3.oatpp文档 二.常用工具网站 1.文档协同:石墨文档2.图形绘制:diagrams.net 3.聚合图床4.sm.ms图床 三.学习资料网站 1.javafx教程2.Lex教程 3.Yacc教程 四.其他网站 1.壁纸网站 WallHaven2.05的资源小站
View Post
Share
  • Code

将python脚本挂至服务器后台自动运行

  • July 5, 2020
  • Brandon
代码解释: nohub: not hang up,在运行进程时若不想让进程在退出远程连接时关闭使用此命令,在未规定情况下默认将输出输出至nohup.out 0表示标准输入,即用户键盘输入;1表示标准输出,即输出至显示屏的内容;2表示标准错误,即保存内容 2>&1表示将错误内容重定向输入到标准输出中,&用以判别不为输入至名为1的文件 &表示后台运行 综上,上述代码意义为在后台将my.py的错误输出和标准输出输出至my.log中 Linux中与后台运行相关的常用命令: ctrl+z: 将当前前台运行的进程转至后台,并将其暂停 jobs: 查看当前在后台执行的进程 fg %n: 将后台中运行的命令调至前台运行 bg %n: 将后台中暂停运行的命令继续运行 kill %n: 结束后台运行的命令n 注意:在退出连接再进行连接时使用jobs指令无法显示出后台运行的指令,需要使用 #ps -ef| grep 指令名称 进行查找 参考链接:1.…
View Post
Share
  • Code

php调用python脚本

  • July 5, 2020
  • Brandon
1.php使用exec函数,函数原型:string exec(string
View Post
Share
Fullstar

Input your search keywords and press Enter.