【VSCode远程开发终极指南】:5步实现Docker容器高效构建与调试

VSCode远程连接Docker容器:实现高效可视化开发与调试 在软件开发中,环境一致性是保障应用稳定运行的基础。Docker容器化技术通过封装应用及其依赖,提供了标准化的运行环境,解决了“在我机器上能跑”的经典难题。其核心原理是利用操作系统级虚拟化,实现资源隔离与高效复用。这项技术的价值在于极大提升了开发、测试与部署流程的可重复性和效率。在实际应用场景中,开发者常需直接操作容器内部文件以进行问题排查或代码修改。传统命令行方式效率低下,而通过IDE远程连接则能提供更优体验。Visual Studio Code的Remote - Containers扩展正是为此设计,它基 阅读详情

第一章:VSCode远程开发环境概述

Visual Studio Code(简称 VSCode)作为当前最受欢迎的代码编辑器之一,凭借其轻量级、高扩展性和跨平台支持,已成为开发者日常工作的核心工具。随着分布式办公和云端开发的兴起,VSCode 提供了强大的远程开发能力,使开发者能够在本地编辑器中无缝连接并操作远程服务器上的项目。

远程开发的核心组件

VSCode 的远程开发功能主要由以下三个扩展构成:
  • Remote - SSH:通过 SSH 协议连接远程 Linux 或 macOS 服务器
  • Remote - Containers:在本地或远程的 Docker 容器中开发
  • Remote - WSL:在 Windows Subsystem for Linux 环境中进行开发

配置 SSH 远程连接示例

使用 Remote - SSH 扩展前,需确保本地已安装 OpenSSH 客户端,并配置好 SSH 密钥对。以下是添加远程主机的基本步骤:
  1. 打开命令面板(Ctrl+Shift+P),输入 "Remote-SSH: Connect to Host"
  2. 选择 "Add New SSH Host" 并输入连接命令,例如:

# 示例 SSH 连接指令
ssh user@192.168.1.100 -p 22
该命令将引导 VSCode 在配置文件 ~/.ssh/config 中添加主机条目,并建立安全连接通道。

远程开发的优势对比

特性本地开发VSCode远程开发
环境一致性依赖本地配置与生产环境一致
资源占用消耗本地计算资源利用远程服务器性能
协作效率配置差异易引发问题团队共享统一环境
graph TD A[本地VSCode] -->|SSH连接| B(远程服务器) B --> C[运行代码] B --> D[调试应用] B --> E[访问文件系统] C --> F[实时反馈至本地界面]

第二章:远程容器开发核心配置

2.1 理解devcontainer.json配置结构与关键字段

`devcontainer.json` 是 DevContainer 的核心配置文件,定义了开发容器的环境构建方式和运行时行为。该文件遵循 JSON 格式,支持多种关键字段来精确控制容器初始化流程。
核心字段解析
  • image:指定基础镜像,如 ubuntu:20.04 或自定义镜像。
  • build:用于本地构建 Docker 镜像,可指定 dockerfile 路径。
  • features:为容器添加预设功能,例如 Node.js、Python 支持。
  • forwardPorts:自动转发服务端口,便于本地访问。
{
  "image": "mcr.microsoft.com/vscode/devcontainers/base:ubuntu-20.04",
  "forwardPorts": [3000],
  "postCreateCommand": "npm install"
}
上述配置以 Ubuntu 20.04 为基础镜像,启动后自动转发 3000 端口,并执行依赖安装命令,确保开发环境开箱即用。

2.2 构建上下文与Dockerfile路径的正确设置

在使用 Docker 构建镜像时,构建上下文(Build Context)是指发送到 Docker 守护进程的文件和目录集合。该上下文通常包含 Dockerfile 及其依赖的资源文件。若路径设置不当,可能导致文件遗漏或构建失败。
构建上下文的工作机制
Docker CLI 将指定的上下文目录打包并上传至守护进程。即使 Dockerfile 位于子目录中,也必须确保上下文包含所有需要的文件。
Dockerfile 路径配置示例
# 假设 Dockerfile 位于 ./app/Dockerfile
docker build -f app/Dockerfile -t myapp:latest .
其中 -f 指定 Dockerfile 路径,. 表示当前目录为构建上下文根目录。若省略上下文路径,可能无法访问所需资源。
常见路径配置对照表
命令写法上下文目录结果分析
docker build -f app/Dockerfile .当前目录推荐方式,确保资源可访问
docker build app/app/ 目录若缺少上级文件则失败

2.3 容器启动时的初始化命令与环境变量注入

在容器启动过程中,初始化命令和环境变量的注入是控制应用行为的关键机制。通过定义启动命令,可以指定容器运行时执行的第一个进程。
初始化命令的定义方式
Dockerfile 中可通过 ENTRYPOINT 和 CMD 指令设置启动命令。例如:
ENTRYPOINT ["./start.sh"]
CMD ["--port=8080"]
其中,ENTRYPOINT 定义可执行文件,CMD 提供默认参数,可在运行时被覆盖。
环境变量的注入方法
环境变量可通过 ENV 指令在镜像构建时设置,也可在容器运行时动态传入:
  • 构建时定义:ENV DB_HOST=localhost
  • 运行时注入:docker run -e DB_HOST=10.0.0.1 image_name
这种方式实现了配置与代码的分离,提升部署灵活性。

2.4 挂载本地工作区与权限配置最佳实践

在容器化开发中,正确挂载本地工作区并配置文件权限是保障开发效率与系统安全的关键环节。
目录挂载与用户权限映射
使用 Docker 时,应通过绑定挂载将宿主机开发目录映射至容器内,同时避免因 UID 不一致导致的权限问题:
docker run -v $(pwd):/app:rw \
  --user $(id -u):$(id -g) \
  --env HOME=/app \
  your-dev-image
上述命令将当前目录挂载到容器的 /app,并通过 --user 参数使容器内进程以宿主机当前用户身份运行,避免生成 root 权限文件。
推荐挂载策略对比
策略适用场景优点
只读挂载生产环境依赖注入防止意外修改
读写挂载 + 用户映射本地开发调试实时同步且权限一致

2.5 多平台架构支持与镜像兼容性处理

在现代容器化部署中,应用常需运行于多种CPU架构环境(如x86_64、ARM64)。为确保镜像跨平台兼容,推荐使用Docker Buildx构建多架构镜像。
构建多平台镜像
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .
该命令启用Buildx并指定目标平台,最终生成对应架构的镜像并推送到注册中心。--platform参数明确声明支持的系统架构,避免运行时不兼容。
平台兼容性策略
  • 使用manifest list统一管理多架构镜像
  • CI/CD流水线中集成多平台构建任务
  • 基础镜像应优先选择官方支持多架构版本

第三章:Dockerfile高效构建策略

3.1 分层优化与缓存机制提升构建速度

在现代应用构建流程中,分层优化是加速镜像生成的核心策略。通过合理划分 Dockerfile 的构建层级,可最大化利用缓存机制,避免重复构建。
分层构建最佳实践
将不变依赖与频繁变更的代码分离,确保基础依赖层缓存长期有效:
FROM golang:1.21 AS builder
WORKDIR /app
# 先拷贝 go.mod 提前缓存依赖层
COPY go.mod .
COPY go.sum .
RUN go mod download
# 再拷贝源码并构建
COPY . .
RUN go build -o main ./cmd/api
上述步骤中,仅当 go.mod 或 go.sum 变更时才会重新下载依赖,显著减少构建时间。
缓存命中率优化
  • 使用多阶段构建减少最终镜像体积
  • 固定基础镜像标签以增强可复现性
  • 启用 BuildKit 缓存:设置 DOCKER_BUILDKIT=1

3.2 使用多阶段构建减少最终镜像体积

在Docker镜像构建过程中,最终镜像常包含大量不必要的中间文件和依赖,导致体积膨胀。多阶段构建通过分离构建环境与运行环境,仅将必要产物复制到最终镜像,显著减小体积。
构建阶段分离
使用多个FROM指令定义不同阶段,前一阶段用于编译,后一阶段仅复制所需二进制文件。
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp main.go

FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
第一阶段基于golang:1.21编译生成二进制文件;第二阶段使用轻量alpine镜像,通过--from=builder仅复制可执行文件,避免携带Go编译器和源码。
优化效果对比
构建方式基础镜像镜像大小
单阶段golang:1.21~900MB
多阶段alpine + 二进制~15MB

3.3 自定义基础镜像与依赖预安装方案

在容器化部署中,使用自定义基础镜像是提升应用构建效率与运行时一致性的关键手段。通过将通用依赖提前固化到镜像层,可显著减少构建时间并降低环境差异带来的风险。
构建轻量且可复用的基础镜像
选择精简操作系统(如 Alpine Linux)作为基础系统,并集成常用工具链(curl、git、openssl)和语言运行时(Node.js、Python)。以下是一个 Node.js 应用的定制镜像示例:
FROM node:18-alpine
LABEL maintainer="devops@example.com"
RUN apk add --no-cache \
    curl=8.4.0-r0 \
    git=2.42.0-r0 \
    openssl=3.1.4-r0
WORKDIR /app
该 Dockerfile 基于 Node.js 18 构建,使用 apk add --no-cache 安装必要工具,避免缓存占用镜像空间,提升安全性与传输效率。
依赖预安装优化策略
  • 将频繁变更的依赖与静态依赖分层,利用 Docker 层缓存机制加速构建
  • 使用多阶段构建分离编译环境与运行环境
  • 通过私有镜像仓库统一版本控制,确保跨团队一致性

第四章:容器内调试与开发体验优化

4.1 集成调试器与断点调试的实操配置

在现代开发环境中,集成调试器是排查逻辑错误的核心工具。以 Visual Studio Code 为例,通过配置 launch.json 文件可实现断点调试。
调试配置文件示例
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Node.js App",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/app.js",
      "outFiles": ["${workspaceFolder}/**/*.js"],
      "env": {
        "NODE_ENV": "development"
      }
    }
  ]
}
该配置指定启动入口文件 app.js,并设置环境变量 NODE_ENV 为开发模式,便于启用调试日志。
断点调试操作流程
  1. 在代码行号左侧点击设置断点
  2. 启动调试会话(F5)
  3. 程序执行至断点处暂停,查看调用栈与变量状态
  4. 使用步进(Step Over/Into)逐行分析执行流

4.2 实时文件同步与热重载开发模式搭建

在现代开发流程中,提升迭代效率的关键在于实现代码变更的实时反馈。通过构建文件监听机制与自动重载系统,开发者可即时查看修改效果。
数据同步机制
利用 fs.watch 或第三方库如 chokidar 监听文件系统变化,触发后续操作:

const chokidar = require('chokidar');
const watcher = chokidar.watch('./src', { ignored: /node_modules/ });

watcher.on('change', (path) => {
  console.log(`文件已修改: ${path}`);
  // 触发热重载逻辑
});
上述代码监听 ./src 目录下所有变动,忽略指定路径,确保响应精准。
热重载通信流程
使用 WebSocket 建立客户端与开发服务器的双向通道,文件变更后推送通知:

文件变更 → 构建工具编译 → WebSocket 广播 → 浏览器刷新模块

  • 支持局部更新,避免整页刷新
  • 显著降低调试等待时间

4.3 终端集成与容器内工具链调用技巧

在现代开发流程中,终端与容器化环境的无缝集成至关重要。通过合理配置,开发者可在宿主机终端直接调用容器内的编译、调试与测试工具链。
容器内工具链调用方式
常用方法包括使用 docker exec 进入运行中的容器执行命令:
docker exec -it my-container bash -c "npm run build"
该命令在名为 my-container 的容器中执行构建脚本,适用于持续集成场景。
持久化终端会话
为提升效率,可挂载本地代码目录并保持交互式终端:
docker run -v $(pwd):/app -w /app -it node:18-dev bash
此命令将当前目录映射至容器 /app 路径,并以交互模式启动 Bash,便于实时调试。
  • 推荐使用别名简化高频命令
  • 结合 makefile 统一调用接口

4.4 扩展推荐与个性化开发环境定制

现代开发环境的高效性离不开插件生态与个性化配置。通过扩展工具,开发者可按项目需求定制语言支持、调试能力与界面布局。
常用VS Code扩展推荐
  • GitLens:增强代码版本可视化,快速查看提交历史与作者信息
  • Prettier:统一代码格式,支持多语言自动格式化
  • ESLint:实时检测JavaScript/TypeScript代码质量问题
自定义快捷键配置示例
{
  "key": "ctrl+shift+t",
  "command": "workbench.action.files.revert",
  "when": "editorTextFocus"
}
该配置将“撤销文件更改”绑定至 Ctrl+Shift+T,提升文件恢复效率。`command` 指定执行动作,`when` 定义触发上下文。
主题与字体优化
个性化配色与等宽字体(如 Fira Code、JetBrains Mono)显著提升阅读舒适度,结合语义高亮,可降低长时间编码的认知负荷。

第五章:总结与生产环境迁移建议

迁移前的评估清单
  • 确认当前系统的依赖版本与目标环境兼容
  • 验证数据库备份与恢复流程的有效性
  • 检查服务间的通信协议是否支持跨环境调用
  • 评估日志采集方案在新环境中的可实施性
蓝绿部署配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-green
  labels:
    version: v2
    env: production
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      version: v2
  template:
    metadata:
      labels:
        app: myapp
        version: v2
    spec:
      containers:
      - name: app
        image: myapp:v2.1.0
        ports:
        - containerPort: 8080
关键指标监控表
指标类型采集工具告警阈值刷新频率
CPU 使用率Prometheus + Node Exporter>80%15s
请求延迟 P99OpenTelemetry + Jaeger>500ms10s
错误率ELK + Metricbeat>1%30s
灰度发布策略建议
用户流量按百分比逐步导入新版本,初始阶段控制在 5%,结合 A/B 测试验证核心交易链路稳定性。当连续 30 分钟内错误率低于 0.5% 且延迟无显著上升时,可递增 10% 流量。使用 Istio 的 VirtualService 配置权重路由:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: app-route
spec:
  hosts:
  - myapp.example.com
  http:
  - route:
    - destination:
        host: myapp
        subset: v1
      weight: 95
    - destination:
        host: myapp
        subset: v2
      weight: 5
VSCode远程开发:5分钟搞定Docker容器连接(含SSH配置指南) 本文提供了一份详尽的VSCode远程开发指南,重点讲解如何通过SSH快速连接远程Docker容器。文章涵盖了从环境准备、SSH免密配置、插件安装到容器附着与内部调试的全流程,帮助开发者在5分钟内建立高效、隔离的远程开发环境,显著提升工作效率。 阅读详情

相关推荐

python系列:配置VS Code + Ubuntu服务器 + Docker + Python:远程调试Debug

配置VS Code + Ubuntu服务器 + Docker + Python:远程调试Debug

weixin_54626591的博客 1836

VScode远程连接服务器开发并使用docker环境debug总结

一、安装 安装Remote Development和Docker组件 二、连接 选择“远程资源管理器”,配置连接配置选项: 后输入密码即可连接。 三、Docker 安装Docker拓展组件 但环境只能使用服务器上的环境进行debug,并不能使用Docker中的miniconda环境,所以在服务器本机上可以找到映射地址,进行访问debug调试。 ...

不撸先疯。 4380

PIC单片机应用开发实践教程(二): 新建工程

File---New ProjectMicrochip Embedded --- Standalone Project 选择所用MCU对应型号 点击 Finish 后,工程就建好了 至止,我们的一个新工程就建完成了!

qq_57798018的博客 2888

VSCode连接远程docker环境进行开发

本文介绍了如何搭建远程到容器内进行开发的场景

liglas的专栏 2297

别再只盯着轨迹线了!FLUENT DPM后处理实战:从粒子采样到直方图报告的完整流程

本文详细介绍了FLUENT DPM后处理的完整流程,从粒子采样到直方图报告的实战技巧。通过设置采样面、分析.dpm文件数据以及创建加权直方图,帮助工程师获取粒子速度、粒径分布等定量信息,提升多相流模拟的深度分析能力。特别适合需要超越轨迹线分析的CFD工程师。

weixin_28730353的博客 278

【Bug已解决】Codex Desktop 报错 Computer Use 插件不可用的解决方案

方案适用场景推荐指数让 Codex 自查修复首选的快速尝试方式⭐⭐⭐⭐⭐清理插件缓存重启明确怀疑是本地缓存损坏⭐⭐⭐⭐彻底卸载重装前两个方案无效时的进阶方案⭐⭐⭐⭐检查安全软件拦截企业电脑/装有严格安全软件的环境⭐⭐⭐确认账号权限范围排除功能本身未开放的可能性⭐⭐⭐Codex Desktop 报Computer Use 插件不可用的本质是客户端内置的插件资源在本地未被正确解包或注册到插件市场索引中,而不是真的缺少安装包。优先尝试让 Codex 自身检测并修复本地插件环境。

一键难忘的博客 5982

VSCode连接远程的docker容器进行代码调试

前言 Docker 是一个开源软件,也是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 而Visual Studio Code(简称VSCode)是一款由微软开发且跨平台的免费源代码编辑器。默认支持非常多的编程语言,作为一款简洁而又强大的编辑器,通过安装插件后可以武装成IDE。 本文内容简要介绍如何使用VSCode调试远程docker容器内的代码。 实

TracelessLe的专栏 9780

3.详解Labview串口通讯--从串口线连接到串口通讯保姆级教程

本文非常详细的介绍了使用Labview实现串口通讯,读完题主这篇文章,即使你是今天刚下载的Labview,也能熟练的连接并驱动串口执行,接下来和我一起学习下,记得关注并点赞不迷路

关注我,更多技术问题欢迎私聊~ 1万+

【Linux】浏览器写代码!部署code-server远程vscode网页

注意,这不是在linux系统上安装vscode软件(和windows一样的vscode客户端)开源仓库 https://github.com/coder/code-servercode-server是一个社区项目(非微软官方)其作用是在你的linux主机(云服务器)上部署一个可以在浏览器上访问的vscode页面,类似官方的vscode.dev微软官方推出的vscode网页版 https://vscode.dev/它可以通过浏览器的api访问你电脑上的本地文件,此时浏览器就是一个vscode客户端。

慕雪华年的博客 2万+

30天入门 SAP BTP 开发系列之十八:保姆级教程 - 如何部署 SAP UI5 到 SAP BTP Cloud Foundry 环境

本文摘要: 本文详细介绍了如何将SAP UI5应用部署到Cloud Foundry环境。首先需完成前17篇教程学习,创建SAP BTP子账户并启用Cloud Foundry环境。在SAP Business Application Studio中创建Fiori开发空间,导入GitHub上的UI5项目代码。通过npm run build命令打包成mtar文件后,使用cf deploy命令部署到Cloud Foundry。部署成功后,可在BTP控制台查看应用或通过命令行获取访问URL。整个过程涵盖了环境准备、代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

从零开始跑通3DGS教程:(三)坐标系与尺度编辑(CloudCompare)

本文所属《从零开始跑通3DGS教程》系列文章; sfm重建的点云已经丢掉了尺度信息,并且坐标系跟图像数据有关(SFM初始化选择的图像),所以如果想恢复物理真实尺度,以及在想要的视角下渲染,那么需要对尺度和坐标系进行编辑修正,下文介绍如何使用CloudCompare修改坐标系和尺度

诺有缸的高飞鸟的博客 2871

【VSCode远程容器构建终极指南】:揭秘高效开发环境搭建的5大核心步骤

掌握VSCode远程容器的构建,轻松实现跨平台高效开发。本文详解环境配置、容器定义、开发容器连接等五大核心步骤,适用于全栈与云原生开发场景,提升协作效率与环境一致性。方法实用,步骤清晰,值得收藏。

VarIsle的博客 861

已解决“TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败“,亲测有效!!!

已解决"TimeouEror [WinEror 10060由于连接方在一段时间后没有正确答复 或连接的主机没有反应,连接尝试失败",亲测有效!!!

wbajsjhhhhh的博客 1万+

【GenAI开发必看】:5步实现VSCode无缝远程调试Docker容器内模型服务

解决GenAI模型调试难题,5步实现VSCode远程调试Docker GenAI的端口映射。适用于本地开发调试容器化模型服务场景,通过SSH连接与端口映射技术,实现代码实时同步与断点调试,提升开发效率。配置简单、稳定高效,值得收藏。

PoliVein的博客 740

【基于 CasADi 的欠驱动无人船实时非线性模型预测控制(NMPC)实现 Visual Studio 2022 C++】

本文介绍了基于CasADi和IPOPT在Visual Studio 2022 C++环境下实现的欠驱动无人船实时非线性模型预测控制(NMPC)方案。文章详细阐述了NMPC基本原理、欠驱动无人船动力学模型(包含状态变量和控制变量定义),并给出了C++实现的核心代码框架。该方案通过显式引入系统动力学模型和约束条件,在每个采样周期滚动优化控制序列,有效解决了欠驱动无人船的轨迹跟踪与避碰问题。文中还提供了VS2022配置CasADi环境的详细步骤,包括预编译包下载、工程属性设置等关键环节,为工程实现提供了完整的技术

vor234的博客 653

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【VSCode远程调试终极指南】:5步实现高效文件同步与实时调试

掌握VSCode远程调试的文件同步技巧,5步实现本地与远程环境高效协同。适用于开发服务器、容器及远程主机场景,支持实时代码同步与断点调试,提升开发效率。配置简单、稳定可靠,值得收藏。

QuickCode的博客 930

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【VSCode远程容器开发全攻略】:5步实现高效隔离开发环境搭建

快速搭建高效隔离开发环境,详解VSCode远程容器构建全流程。涵盖开发场景、五步搭建方法及环境一致性优势,支持多项目独立运行。操作简单,提升协作效率,值得收藏。

GatherLume的博客 1165

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【VSCode远程开发终极指南】:5步实现Docker容器内高效编码

轻松实现vscode连接docker容器内进行开发,5步配置远程编码环境。适用于Python、Node.js等多语言场景,利用Dev Container插件隔离依赖、提升协作效率。配置一次,随处运行,开发环境高度一致,值得收藏。

BreakVein的博客 318

【VSCode与Docker集成开发终极指南】:揭秘高效容器化开发流程的5大核心技巧

掌握高效开发利器,详解VSCode与Docker集成开发流程,覆盖本地调试、容器化部署、自动化配置等核心场景。通过Remote-SSH、Dev Containers插件实现一键开发,提升协作效率与环境一致性。5大实战技巧助力全栈开发者,值得收藏。

BreakNexus的博客 765

vscode连接docker容器开发

unbantu20.04中安装vscode1.99,连接ubuntu16.04版本时报了类似错误,通过降低底本地版本到vscode1.87.0解决。说明容器编译环境版本与VSCODE不兼容,需要更新容器编译环境版本或者更新VSCODE版本。启动右侧边栏里的远程资源管理器,开发容器下找到刚启动的容器,右键点击,选择在当前窗口附加。6.1如果遇到以下VScode服务问题,主要是容器端服务安装失败,可以手动安装。获取到本机vscode版本,用于以下命令使用。进入容器交互命令界面,按以下命令处理。

jianren2hao的专栏 5545

gem5-gcn3-gpu模拟器的开发环境搭建(使用docker镜像+vscode调试,十分便捷)

目录一、前言二、 基于docker镜像搭建环境(成功)2.1 在docker容器内安装gem52.1.1 pull镜像直接pull离线pull2.1.2 在容器内编译gem52.1.3 在容器内运行gem52.2 在容器内编译gpu程序2.3 使用vscode的remote-container开发代码附:常规环境安装(失败)3.1 方法13.2 方法23.3 方法3 我的环境: win10 我自己的电脑,用来连远程服务器 vscode ubuntu16.04 远程服务器 docker 没有amd的显

"my"的博客 8313

树莓派5高效开发:VSCode远程调试与自动化部署实战

本文详细介绍了树莓派5的高效开发实践,重点讲解VSCode远程调试与自动化部署流程。涵盖系统配置优化、SSH安全设置、VNC远程桌面应用,以及Docker容器化开发和Git钩子自动化部署,帮助开发者构建稳定高效的树莓派开发环境。

h0i1j2k3l的博客 751

【VSCode远程调试Docker GenAI环境】:揭秘高效AI开发工作流的5大核心技巧

掌握VSCode远程调试Docker GenAI环境,提升AI开发效率。适用于本地资源有限、需隔离运行AI模型的场景,通过容器化部署实现环境一致与高效调试。揭秘5大核心技巧,涵盖配置优化、断点调试与性能监控,助力开发者无缝协作,值得收藏。

FastDebug的博客 803

远程开发效率提升300%,VSCode+Docker+GenAI调试秘籍首次公开

提升远程开发效率300%!本文详解如何通过VSCode远程调试Docker GenAI环境,适用于AI模型开发与团队协作场景。结合容器化部署与智能辅助编程,实现高效、一致的开发体验。配置简单、稳定可靠,开发效率飞跃,值得收藏。

codeink的博客 825

MicroK8s开发环境搭建:VSCode远程调试配置指南

你还在为Kubernetes开发环境配置繁琐而困扰?本地资源不足、远程集群调试困难、多节点协作复杂?本文将通过5个步骤,帮助你使用VSCode远程开发功能快速搭建MicroK8s调试环境,实现代码修改实时同步、断点调试和集群状态监控,让Kubernetes开发效率提升300%。读完本文你将掌握:MicroK8s单节点部署、VSCode远程连接配置、调试环境变量设置、服务热重载技巧以及常见问题排查方...

gitblog_00845的博客 1191

使用VSCode的Remote-SSH插件高效连接远程Docker容器

本文详细介绍了如何使用VSCode的Remote-SSH插件高效连接远程Docker容器,提升开发效率。从SSH服务配置、VSCode插件安装到连接实战和性能优化,提供了一套完整的解决方案,特别适合需要特定环境支持的开发场景。通过文件系统映射和开发环境配置,实现本地与远程容器的无缝协作。

weixin_30879169的博客 435
上一篇: 掌握这3个设置,让你的VSCode Ctrl+/多行注释秒变专业
下一篇: 揭秘VSCode远程SSH超时问题:5种高效配置方案一键掌握
ProceGlow
博客等级 码龄1年 139粉丝 2005原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值