Docker存储
Volume
举例:
Dockerfile.my-cron
123456789101112131415161718FROM alpine:latestRUN apk updateRUN apk --no-cache add curlENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.1.12/supercronic-linux-amd64 \ SUPERCRONIC=supercronic-linux-amd64 \ SUPERCRONIC_SHA1SUM=048b95b48b708983effb2e5c935a1ef8483d9e3eRUN curl -fsSLO "$SUPERCRONIC_URL" \ && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ && chmod +x "$SUPERCRONIC" \ &a ...
云服务器部署端口不能访问
Dockerfile:
123456789101112FROM python:3.9.5-slimCOPY app.py /src/app.pyRUN pip install flaskWORKDIR /srcENV FLASK_APP=app.pyEXPOSE 5000CMD ["flask", "run", "-h", "0.0.0.0"]
1docker buildx build -f Dockerfile -t demo-flask .
1docker container run -d -p 80:5000 demo-flask
云服务器部署端口不能访问
需要在云服务器防火墙配置入站规则:
假如想通过其他端口访问(Ex:5000)
仍然需要防火墙开放该端口(5000),外网才能访问
1docker container run -d -p 5000:5000 demo-flask
Dockerfile指南
RUN执行指令
Dockerfile.bad
1234567FROM ubuntu:20.04RUN apt-get updateRUN apt-get install -y wgetRUN wget https://github.com/ipinfo/cli/releases/download/ipinfo-2.0.1/ipinfo_2.0.1_linux_amd64.tar.gzRUN tar zxf ipinfo_2.0.1_linux_amd64.tar.gzRUN mv ipinfo_2.0.1_linux_amd64 /usr/bin/ipinfoRUN rm -rf ipinfo_2.0.1_linux_amd64.tar.gz
Dockerfile.good
1234567FROM ubuntu:20.04RUN apt-get update && \ apt-get install -y wget && \ wget https://github.com/ipinfo/cli/releases/ ...
镜像的创建、管理和发布
镜像
Docker\text {Docker}Docker 镜像是用于构建和运行容器的静态模板。镜像包含了运行应用程序所需的所有内容,包括代码、运行时、系统工具、库文件和依赖项:
镜像层:Docker\text {Docker}Docker 镜像由一系列称为“层”的文件系统构成,每一层代表一个差异。层级结构使镜像变得高效、可共享和轻量级。
不可修改性:镜像是不可修改的。一旦创建,镜像的内容不会发生变化。如果要更改应用程序或配置,需要基于现有镜像创建新的镜像。
分层结构:镜像的分层结构允许镜像共享共同的层,从而节省磁盘空间和带宽。这种分层结构还使得构建和分发镜像变得更加高效。
Dockerfile:Docker\text {Docker}Docker 镜像通常使用 Dockerfile\text {Dockerfile}Dockerfile 进行构建。Dockerfile\text {Dockerfile}Dockerfile 是一个包含构建步骤的文本文件,可以在其中定义如何构建镜像,包括基础镜像、应用程序配置、运行命令等。
标签(Tags):镜像可以有不同的标签,用于标识不同版本或配 ...
以普通用户运行Docker
以普通用户执行相关 Docker 命令,会提示:
1permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
原因:https://docs.docker.com/engine/install/linux-postinstall/
解决方法:
使用 sudo 获取 root 权限
1$ sudo xxx
切换 root 用户获取 root 权限
12$ su - root$ xxx
创建 docker 组并添加相关用户
创建 docker 组:sudo groupadd docker
将指定用户添加到 docker 组:sudo usermod ...
Docker的介绍与安装
容器
容器技术是一种虚拟化技术,用于在操作系统级别隔离应用程序及其依赖,以实现更高效、可移植和可扩展的软件部署。传统上,虚拟化技术通过在物理服务器上模拟多个虚拟机来实现隔离,每个虚拟机都运行完整的操作系统和应用程序。然而,这种方式通常会导致资源消耗较高,启动时间较长。
容器技术的目标是克服传统虚拟化的一些限制,提供更轻量级、更快速的应用程序隔离和部署方案。容器不需要模拟完整的操作系统,而是共享宿主操作系统的内核,并将应用程序及其运行时环境、依赖等打包到一个封闭的运行环境中—这个封闭的环境被称为容器。容器之间相互隔离,但与宿主操作系统共享资源,因此可以更高效地运行多个容器实例。
一些常见的容器技术包括 Docker\text {Docker}Docker 和 Podman\text {Podman}Podman。容器技术的主要优势包括:
轻量级:容器相对于虚拟机来说更加轻量,因为它们共享操作系统内核,无需模拟整个操作系统。
快速启动:由于容器不需要启动完整的操作系统,它们的启动时间比虚拟机更短,可以更快地部署和扩展应用。
可移植性:容器将应用程序及其所有依赖打包到一个封闭环境中,使得应 ...
C++ 基础语法
开发环境的安装与使用
下载安装 Visual Studio
Visual Studio 2019 Community
创建项目
配置项目
运行项目
语言标识符和关键字
变量与常量
注释
循环神经网络
引言
序列(sequence\text {sequence}sequence)
Slot Filling\text {Slot Filling}Slot Filling(槽填充)任务
网络记忆能力
延时神经网络(Time Delay Neural Network TDNN):建立一个额外的延时单元,用来存储历史信息(可以包括输入、输出、隐状态等)。
ht(l)=f(ht(l−1),ht−1(l−1),⋯ ,ht−K(l−1))\boldsymbol{h}_t^{(l)}=f\left(\boldsymbol{h}_t^{(l-1)}, \boldsymbol{h}_{t-1}^{(l-1)}, \cdots, \boldsymbol{h}_{t-K}^{(l-1)}\right)
ht(l)=f(ht(l−1),ht−1(l−1),⋯,ht−K(l−1))
自回归模型( Autoregressive Model AR):用变量的历史信息来预测自己。
yt=w0+∑k=1Kwkyt−k+ϵt\boldsymbol{y}_t=w_0+\sum_{k=1}^K w ...
深度模型优化与正则化
优化问题:
神经网络模型是非凸函数,且存在梯度消失原因
深度神经网络模型参数较多
泛化问题(正则化):训练数据集产生过拟合,需要通过正则化来改进泛化能力。
网络优化
网络优化目标:期望风险,最小化取自数据生成分布数据的预测误差期望。
J(θ)=E(x,y):pdata [L(f(x;θ),y)]J(\theta)=E_{(\mathbf{x}, \mathbf{y}): p_{\text {data }}}[L(f(\mathbf{x} ; \theta), \mathbf{y})]
J(θ)=E(x,y):pdata [L(f(x;θ),y)]
又通常 pdata p_{\text {data }}pdata 未知,故近似用训练集中的样本替代:pdata ≈p^data p_{\text {data }} \approx \hat{p}_{\text {data }}pdata ≈p^data
得到经验风险,并使其最小化:
E(x,y):p^data [L ...
卷积神经网络
卷积神经网络 I
卷积运算
卷积网络的动机:稀疏交互、参数共享、平移不变性
池化
卷积神经网络
给定一个卷积层:
参数
表示
卷积核数目
FFF
卷积核大小
KKK
步长
SSS
零填充个数
PPP
假如输入图片大小:W1×H1×D1W_1 \times H_1 \times D_1W1×H1×D1
经过卷积后输出大小:W2×H2×D2W_2 \times H_2 \times D_2W2×H2×D2
其中:
W2=(W1−K+2P)/S+1H2=(H1−K+2P)/S+1D2=F\begin{aligned}
& W_2=\left(W_1-K+2 P\right) / S+1 \\
& H_2=\left(H_1-K+2 P\right) / S+1 \\
& D_2=F
\end{aligned}
W2=(W1−K+2P)/S+1H2=(H1−K+2P)/S+1D2=F
通过参数共享,每个滤波器的参数:K×K×D1+1K \times K \times D_1+1K×K×D1+1(FFF 个滤 ...