在docker中构建django项目

在docker中构建django项目 (需安装docker-compose, 安装教程) 1. 定义项目组件 对于此项目,您需要创建Dockerfile,Python依赖项文件和docker-compose.yml文件。(您可以使用此文件的扩展名.yml或.yaml扩展名。) 1.1. 创建一个空目录 该目录应仅包含构建该映像的资源。 1.2 创建Dockerfile 内容如下: FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/ 对于DockerFile的解释 1.3 创建requirements.txt 内容如下: django django-ckeditor pillow numpy 1.4 创建docker-compose.yml 该docker-compose.yml文件描述了构成应用程序的服务。在此示例中,这些服务是Web服务器和数据库。撰写文件还描述了这些服务使用哪些Docker映像,它们如何链接在一起,以及它们可能需要安装在容器内的任何卷。最后,该docker-compose.yml文件描述了这些服务公开的端口。有关此文件如何工作的更多信息,请参阅docker-compose.yml参考。 内容如下: version: '3' services: db: image: postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db 2 创建django项目 切换到项目跟目录】 通过运行docker-compose run 命令创建django项目 sudo docker-compose run web django-admin startproject mysite ....

February 25, 2021 · 1 min · 李昌

基于卷积神经网络和决策树的体域网数据融合方法

基于卷积神经网络和决策树的体域网数据融合方法 现阶段想法:在softmax层后接随机森林,通过种树增加分类准确率 import tensorflow as tf import numpy as np import tensorflow.examples.tutorials.mnist.input_data as input_data import scipy as sp %matplotlib inline sess = tf.Session() DEPTH = 3 # Depth of a tree N_LEAF = 2 ** (DEPTH + 1) # Number of leaf node N_LABEL = 10 # Number of classes N_TREE = 5 # Number of trees (ensemble) N_BATCH = 128 # Number of data points per mini-batch 分批训练,每一批128个 初始化矩阵 def init_weights(shape): return tf....

February 25, 2021 · 3 min · 李昌

基本计算指令

基本计算指令 这里的汇编指令均基于x86-64架构 0. 先验知识 0.1 寄存器设置 一个x86-64的中央处理单元包含一组16个64位通用目的寄存器。这些寄存器用来存储整数数据和指针。指令可以对这16个寄存器的低位字节中存放的不同大小的数据进行操作。字节级操作可以访问最低的字节,16位操作可以访问最低的2个字节,32位操作可以访问最低的4个字节,而64位操作可以访问整个寄存器。 3. 寻址方式 1. 数据传送指令 最简单形式的数据传送指令–mov类。这些指令把数据从源位置复制到目的位置,不做任何变化。mov类指令由四条指令组成:movb, movw, movl,movq.这些指令都执行相同的操作,区别在于它们操作的数据大小不同:分别是1,2,4,8字节。 由于历史原因,Intel处理器将16位作为一个字(w),8位为一个字节(b),32位为双字(l),64位为4字(q) 指令 效果 描述 MOV S D D <- S 传送 movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq I, R 传送绝对的四字 传送指令的两个操作数不能都指向内存位置。将一个值从一个内存位置复制到另一个内存位置需要两个步骤,第一个指令将源值加载到寄存器,第二条指令将该寄存器写入目的位置。 example C code...

February 25, 2021 · 2 min · 李昌

处理文本数据

处理文本数据 1. 单词和字符的one-hot编码 one-hot编码是将标记转换为向量的最常用,最基本的方法。它将每个单词与一个唯一的整数索引相关联,然后将这个整数索引i转换为长度为N的二进制向量(N是词表大小),这个向量只有第i个元素是1,其余元素都是0. 当然,也可以进行字符级的one-hot编码。 1.1. 单词级的one-hot编码 import numpy as np samples = ['The cat sat on the mat.', 'The dog ate my homework.'] token_index = {} for sample in samples: for word in sample.split(): if word not in token_index: token_index[word] = len(token_index) + 1 # 为每个唯一单词指定一个唯一索引,没有为0索引指定单词 max_length = 10 results = np.zeros(shape=(len(samples), max_length, max(token_index.values())+1)) for i, sample in enumerate(samples): for j, word in list(enumerate(sample.split()))[:max_length]: index = token_index.get(word) results[i, j, index] = 1 results array([[[0....

February 25, 2021 · 7 min · 李昌

多输入模型

多输入模型 函数式API可以用于构建具有多个输入的模型,通常情况下,这种模型会在某一时刻用一个可以组合多个张量的层将不同的输入分支合并,张量组合方式可能是相加,连接等。这通常利用Keras的合并运算来实现,比如keras.layers.add, keras.layers.concatenate等。 下面来看一个非常简单的多输入模型示例:一个问答模型 典型的问答模型有两个输入,一个自然语言描述的问题和一个文本片段(比如新闻文章),后者提供用于回答问题的信息。然后模型要生成一个回答,在最简单的情况下,这个回答只包含一个词,可以通过对某个预定义的词表做softmax得到。 # 具有两个输入的模型 from keras.models import Model from keras import layers from keras import Input text_vocabulary_size = 10000 question_vocabulary_size = 10000 answer_vocabulary_size = 500 text_input = Input(shape=(None, ), dtype='int32', name='text') embedded_text = layers.Embedding( text_vocabulary_size, 64) (text_input) # 将输入嵌入到长度为64的向量 encoded_text = layers.LSTM(32)(embedded_text) # 对问题进行相同的处理,使用不同的层实例 question_input = Input(shape=(None, ), dtype='int32', name='question') embedded_question = layers.Embedding( question_vocabulary_size, 32)(question_input) encoded_question = layers.LSTM(16)(embedded_question) # 将编码后的问题和文本连接起来 concatenated = layers.concatenate([encoded_text, encoded_question], axis=-1) # 在上面添加一个softmax分类器 answer = layers....

February 25, 2021 · 2 min · 李昌

安装完virtualbox后,提示内核问题

安装完virtualbox后,提示内核问题 解决方法 安装内核匹配版本 sudo pacman -S linux419-virtualbox-host-modules 重新加载内核模块 sudo /sbin/rcvboxdrv 然后重启即可

February 25, 2021 · 1 min · 李昌

快速入门Matplotlib教程

快速入门Matplotlib教程 介绍 Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 pylab pylab 是 matplotlib 面向对象绘图库的一个接口。它的语法和 Matlab 十分相近。也就是说,它主要的绘图命令和 Matlab 对应的命令有相似的参数。 初级绘制 这一节中,我们将从简到繁:先尝试用默认配置在同一张图上绘制正弦和余弦函数图像,然后逐步美化它。 第一步,是取得正弦函数和余弦函数的值: import numpy as np X = np.linspace(-np.pi, np.pi, 256,endpoint=True) C,S = np.cos(X), np.sin(X) X 是一个 numpy 数组,包含了从 −π−π 到 +π+π 等间隔的 256 个值。C和 S 则分别是这 256 个值对应的余弦和正弦函数值组成的 numpy 数组。 np.linspace 使用默认配置 Matplotlib 的默认配置都允许用户自定义。你可以调整大多数的默认配置:图片大小和分辨率(dpi)、线宽、颜色、风格、坐标轴、坐标轴以及网格的属性、文字与字体属性等。不过,matplotlib 的默认配置在大多数情况下已经做得足够好,你可能只在很少的情况下才会想更改这些默认配置。 plot函数详解 from pylab import * plot(X,C) plot(X,S) show() <Figure size 640x480 with 1 Axes> 默认配置的具体内容 下面的代码中,我们展现了 matplotlib 的默认配置并辅以注释说明,这部分配置包含了有关绘图样式的所有配置。代码中的配置与默认配置完全相同,你可以在交互模式中修改其中的值来观察效果。...

February 25, 2021 · 5 min · 李昌

朴素贝叶斯

朴素贝叶斯 1、理论部分 1.1、贝叶斯公式 $$P(c|x)=\frac{P(c)P(x|c)}{P(x)}\qquad\dots(1)$$ 其中,$P(c)$是类“先验概率”;$P(x|c)$是样本$x$相对于类标记$c$的类条件概率,或称为“似然”;$P(x)$是用于归一化的“证据因子”。对给定样本$x$,证据因子$P(x)$与类标记无关,因此估计$P(c|x)$的问题就转化为如何基于训练数据$D$来估计先验$P(c)$和似然$P(x|c)$ 类先验概率$P(c)$表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时,$P(c)$可通过各类样本出现的频率来进行估计。 对类条件概率$(P(x|c))$来说,由于它涉及关于$x$所有属性的联合概率,直接根据样本出现的频率来估计将会遇到严重的困难。为避开这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”;对已知类别,假设所有属性相互独立。换言之,假设每个属性独立的对分类结果产生影响。 基于属性条件独立性假设,贝叶斯公式可重写为: $$P(c|x)=\frac{P(c)P(x|c)}{P(x)}\qquad=\frac{P(c)}{P(x)}\prod_{i=1}^d{P(x_i|c)}\dots(2)$$ 其中$d$为属性数目,$x_i$为$x$在第i个属性上的取值 由于对于所有类别来说$P(x)$相同,因此贝叶斯判定准则:$$h_{nb}(x)=arg max_{c\in y}P(c)\prod_{i=1}^d{P(x_i|c)}\dots(3)$$ 显然,朴素贝叶斯分类器的训练过程就是基于训练集$D$来估计类先验概率$P(c)$,并为每个属性估计条件概率$P(x_i|c)$ 令$D_c$表示训练集$D$中第$c$类样本组成的集合,若有充足的独立同分布样本,则可容易的估计出先验概率:$$P(c)=\frac{|D_c|}{|D|}\dots(4)$$ 对离散属性而言,令$D_{c,x_i}$表示$D_c$中在第$i$个属性上取值为$x_i$的样本组成的集合,则条件概率$P(x_i|c)$可估计为$$P(x_i|c)=\frac{|D_{c,x_i}|}{|D_c|}\qquad\dots(5)$$ 为了避免其他属性携带的信息被训练集中未出现的属性值抹去,在估计概率值时通常要进行“平滑”,常用“拉普拉斯修正”。具体来说,令$N$表示训练集$D$中可能的类别数,$N_i$表示第$i$个属性可能的取值数,则(4)(5)两式分别修正为:$$\hat{P}(c)=\frac{D_c+1}{|D|+N}\qquad\dots(6)$$ $$\hat{P}(x_i|c)=\frac{D_{c,x_i}+1}{|D|+N}\qquad\dots(7)$$ 2、实战演练 2.1、加载数据集 import numpy as np def loadDataSet(): """ 导入数据, 1代表脏话 @ return postingList: 数据集 @ return classVec: 分类向量 """ postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'], ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'], ['stop', 'posting', 'stupid', 'worthless', 'garbage'], ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'], ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']] classVec = [0, 1, 0, 1, 0, 1] return postingList, classVec 导入训练集及其分类,1代表是脏话,0代表不是...

February 25, 2021 · 4 min · 李昌

检查Apache配置文件语法错误

检查Apache配置文件语法错误 在/etc/apache2目录下输入apache2ctl configtest即可检查错误

February 25, 2021 · 1 min · 李昌

检查nginx的语法错误

检查nginx的语法错误 使用nginx -t

February 25, 2021 · 1 min · 李昌