Hexo

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

字符编码

发表于 2019-07-14 | 更新于 2019-07-15 | 分类于 linux相关

字符编码

基础知识

编码规范中存在三个概念,字库表、编码字符集、字符编码(编码方式)。字库表存储了能显示的所有字符;编码字符集是一个二进制的集合,在字库表中,每一个字符都对应编码字符集中的一个二进制编码;字符编码也是编码方式,不同的编码方式适应不同的场景。

常见字符编码

编码与解码

几种报错

第一种

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe6 in position 36: ordinal not in range(128)
python默认的编码是ascii,当程序中出现非ascii字符时,python常常会报出这种错误(比如中文字),所以这种错误的解决方案是修改python的默认编码

1
2
3
4
> import sys 
> reload(sys)
> sys.setdefaultencoding(’utf8’)
>

第二种

SyntaxError: Non-ASCII character ‘\xe6’ in file test.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
这是未加 #-*- coding: utf-8 -*- 导致的。

参考资料:
https://blog.csdn.net/qq_42068856/article/details/83792174
https://www.cnblogs.com/wxsblog/p/7297859.html

修复硬盘

发表于 2019-07-06 | 更新于 2019-07-07 | 分类于 硬件

修复硬盘

MacBook一个最大的缺陷是只能读不能写NFTS格式的硬盘或U盘,尽管有一些软件(Mounty)可以挂载上述硬盘,但依然存在一些小问题

  1. 用Mounty挂载硬盘,然后将本地的压缩文件(zip)写入硬盘中,用Mounty重新挂载硬盘,会发现该文件不能复制。
  2. 如果没有卸载硬盘,热拔出,一般会导致下次挂载不了,但硬盘仍可以在windows上正常挂载;或者一些新手不知道硬盘格式问题,在MacBook上插入NTFS格式的硬盘,一顿瞎操作后,像在windows上一样热拔出硬盘,这有可能导致硬盘数据损坏,在windows上也不能读取,甚至还会报出数据错误。一般这种问题可以在windows上用管理者用户开启cmd,然后用下面的命令可以修复硬盘
    chkdsk /f 盘符:

神经网络之梯度下降

发表于 2019-07-04 | 更新于 2019-07-06 | 分类于 ML

神经网络之梯度下降(神经网络是怎么学习得到参数的?)

神经网络结构

发表于 2019-07-04 | 分类于 ML

神经网络的结构

3Blue1Brown用最简单的 多层感知器MLP 结构解释了神经网络的工作流程,弄懂多层感知器MLP,理解其它神经网络也会相对简单一点。

其它神经网络展示如下:

1.什么是神经网络,它们是怎么连接在一起的?


3Blue1Brown将神经元(neuron)看做装有一个数字的容器。每个数字由28x28的数字矩阵组成,这对应着784个神经元,每个神经元中的数字为激活值,表示灰度值,该值越大表示该神经元激活。

在输出层,神经元的激活值表示概率,中间神经元为隐藏层,进行识别数字的工作。

神经网络运行的时候,上一层的激活值通过计算,决定着下一层的激活值。

2.我们为什么认为这种结构会起到智能识别的作用?

正如图中所看到的,中间层的一些神经元可能是负责局部数字的识别,它类似人类识别数字的过程。这样从第三层到最后一层只需要学习哪些部件能组合出哪个数字就可以了。

如何识别这些局部呢?神经网络的第二层识别数字的各个边,最后再第三层组合成局部,如下图。

3.连线是干嘛用的?(工作原理)

每条连线表示权重,第二层的某个神经元只关注某一块区域是否存在边,所以只有该区域的神经元连接到该神经元的权重值为绿色(表示正),其它都为0,这样只会累加我们关注区域的像素值了。

为了识别出是一条边(直线),只需要给周围一圈的像素赋予负的权重,这样当中间的像素亮,周围的像素暗时,加权和就能达到最大。

但是我们计算出来的权重和是一个随机数,我们需要把它规范到某一个区域中。

这里用到了SIGMOD函数

所以第二层神经元的激活值实际上就是一个对加权和到底有多正的打分,但有时我们不希望该加权和大于0就点亮该神经元,所以我们会减一个偏置值,最后将整体放进SIGMOD函数中。

总而言之,权重告诉你这个第二层的神经元关注什么样的像素图案,偏置则告诉你加权和得有多大,才能让神经元的激发变得有意义。所以从整体来看,该神经网络包含13002个权重和偏置,机器学习就是在找这些正确的权重和偏置,从而正确地解决问题。深挖权重和偏置的实际意义,能更好地理解神经网络,给参数赋予实际问题的某些意义,也能更好地解决实际问题。

用矩阵表示计算过程更加方便。

3Blue1Brown最后谈到其实神经元更像一个函数,输入来自上一层输出。

4.神经网络是如何通过数据来获取合适的权重和偏置?

参考资料:3Blue1Brown大神

安装双系统

发表于 2019-07-03 | 更新于 2019-07-04 | 分类于 linux相关

安装双系统windows+ubuntu

1.下载镜像

首先需要去ubuntu官网下载镜像文件

2.制作U盘镜像

利用ultraiso将ubuntu镜像写入空U盘中

这里区分一下ultraiso和win32diskimager的区别
ultraiso主要是写以iso为后缀的镜像
fwin32diskimager主要是写以img为后缀的镜像,例如树莓派镜像

3.空出硬盘分区

可以使用windows自带磁盘管理工具或者diskgenius对打算安装ubuntu的硬盘区域进行空闲处理。

4.重启进入bios

重启进入bios,选择从U盘启动。不同型号笔记本进入的方式不一样,华硕是按F2,联想是按F12也有可能是用针捅某个洞。。。

bios和uefi是两种不同启动引导方式,具体区别我很难讲清楚,如果是bios启动,在成功装完双系统后,可以通过easybcd修改默认启动顺序,但是uefi修改不了。

5.安装ubuntu系统

需要注意两点

  1. 如果没有联网,不要选择安装第三方软件
  2. 磁盘分区问题
    在第三步的空闲磁盘上,分别分出/,/boot,swap和/home四个分区
    根分区可能需要安装一些大型软件,建议三四十个GB吧

    boot分区大概200MB或300MB

    交换分区的大小为主存的两倍(未考证为什么?)

    home分区主要存储平时用到的文件,如文档、视频等

    最关键的是安装启动引导器的设备要和/boot所在分区一样

以上,完事,其它步骤都是一些基础配置。文中一些图片来自网络。

linux日志文件

发表于 2019-06-29 | 分类于 linux相关

linux常见日志文件

  1. /var/log/boot.log 自检过程;
  2. /var/log/cron crontab守护进程crond所派生的子进程的动作;
  3. /var/log/maillog 发送到系统或从系统发出的电子邮件的活动;
  4. /var/log/syslog
    要让系统生成syslog日志文件,需要在 /etc/rsyslog.conf 文件中加入:
    *.warning /var/log/syslog
    cento6以前的系统可能是 /etc/syslog.conf 文件。
  5. /var/run/utmp (用于记录当前打开的会话)被 who 和 w 工具用来记录当前有谁登录以及他们正在做什么,而uptime用来记录系统启动时间。
  6. /var/log/wtmp (用于存储系统连接历史记录)被 last 工具用来记录最后登录的用户的列表。所以我们可以通过统计字符找到某些用户的登录次数。 在/var/log/wtmp中,一次新的登录事件的特征是,第一个字段为‘7’,第三个字段是一个终端编号(或伪终端id),第四个字段为用户名。相关的登出事件会在第一个字段显示‘8’,第二个字段显示与登录一样的PID,而终端编号字段空白。
  7. /var/log/btmp 用于存储尝试连接系统历史记录。
    在/var/log/btmp输出中,每个日志行都与一个失败的登录尝试相关(如使用不正确的密码,或者一个不存在的用户ID)。

    以上三个文件可以通过utmpdump查看:
    utmpdump /var/log/utmp
  8. /var/log/lastlog 每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。


    参考网站:
    https://www.jb51.net/os/RedHat/343795.html
    https://www.cnblogs.com/wayne173/p/3768185.html

C语言小知识😂

发表于 2017-11-16 | 更新于 2019-06-29 | 分类于 语言 , C语言

C 主函数参数

之前一直没懂C语言中主函数的几个参数是什么意思,今天突然想到,就在这搞清楚吧!

先看代码

1
2
3
4
5
6
int main(int argc, char const *argv[]){
for (int i = 0; i <= argc; ++i){
printf("argv[%d]:%s\n",i,argv[i]);
}
return 0;
}

这是一个很简单的程序,接下来,我们先对其进行编译,然后在命令行下运行

我做了一个小测试

相信大家能看懂这两个参数是干什么的了!😊

自我介绍

发表于 2017-11-05 | 更新于 2019-06-24 | 分类于 博客介绍

自律,学习,分享

彭欣健

彭欣健

天行健,君子以自强不息。
8 日志
6 分类
5 标签
GitHub
© 2019 彭欣健
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.2
|