GEE 批量上传 GeoJSON 文件到 Google Earth Engine 资产存储

geemap学习笔记006:GeoJSON和Earth Engine格式数据相互转换 GeoJSON和Earth Engine格式数据相互转换 阅读详情

批量上传 GeoJSON 文件到 Google Earth Engine (GEE) 资产存储 🚀

在遥感和地理信息系统(GIS)领域,处理和分析地理数据是日常工作的重要组成部分。Google Earth Engine(GEE)作为一个功能强大的云平台,提供了全球范围内的地理数据管理、分析和可视化能力。然而,当用户手头有大量的 GeoJSON 文件时,手动上传这些文件到 GEE 的资产存储库可能会变得繁琐且耗时。本文将介绍一种高效的批量上传方法,帮助您自动化这一过程,提升工作效率。


完整版本地址

  • 详细原文见:
    • https://mp.weixin.qq.com/s?__biz=Mzk0MTU1MjU5Mw==&mid=2247485071&idx=1&sn=12c9e83b4ed7be84f70ab8d22ed1d36e&chksm=c2d1e031f5a6692760a0463bd4a923f93ec5e203a4d146f19c81b764e3589b8bc82676fc1488#rd

使用方法 🛠️

1. 环境准备

  • 安装 earthengine-api 库:用于与 Google Earth Engine 进行交互。

    pip install earthengine-api
    
  • 配置 Google Earth Engine 账户:确保已经完成 ee.Authenticate() 的授权认证。

2. 代码使用步骤

  1. 准备 GeoJSON 文件:将本地的 GeoJSON 文件放置在一个指定的文件夹中。

  2. 修改代码路径:

    • json_folder_path:设置为 GeoJSON 文件所在的目录。
    • asset_path:设置为 GEE 中目标存储的路径。
  3. 运行代码:系统将自动上传每一个 GeoJSON 文件至 GEE,并处理任务状态。

3. 运行环境

  • 编程语言:Python 3
  • 依赖库:Google Earth Engine (GEE) API

代码详情 🖥️

以下是用于批量上传 GeoJSON 文件到 GEE 资产存储的完整 Python 代码:

# -*- coding:utf-8 -*-
"""
此代码用于批量上传本地 GeoJSON 文件到 Google Earth Engine (GEE) 资产存储。
在上传前,自动删除同名资产,确保数据唯一性。

"""

import ee
import os
import json
import time

# 配置网络代理(如无代理,请注释以下两行)
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:XXXX'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:XXXX'

# 解决 OpenSSL 3.0 兼容性问题
os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = '1'

# 授权并初始化 Earth Engine API
ee.Authenticate()
ee.Initialize(project='XXXX')


def delete_asset_if_exists(asset_path):
    """
    检查并删除指定的资产路径(如果存在)。

    参数:
    asset_path (str): 资产路径。
    """
    try:
        ee.data.getAsset(asset_path)
        ee.data.deleteAsset(asset_path)
    except ee.EEException as e:
        if "not found" not in str(e):
            raise


def get_files_with_extension(directory, extension):
    """
    获取指定文件夹中具有特定扩展名的所有文件。

    参数:
    directory (str): 文件夹路径。
    extension (str): 文件扩展名(包括点,例如 '.geojson')。

    返回:
    list: 符合条件的文件名列表。
    """
    directory = os.path.normpath(directory)
    all_files = os.listdir(directory)
    return [file for file in all_files if file.endswith(extension)]


def main():
    """
    主函数,用于批量上传 GeoJSON 文件到 GEE 资产存储。
    """
    json_folder_path = r"E:\_Geojson"
    json_files = get_files_with_extension(directory=json_folder_path, extension='.geojson')

    for json_file in json_files:
        json_name = os.path.splitext(json_file.split('_')[-1])[0]
        local_geojson_path = os.path.join(json_folder_path, json_file)

        # 读取 GeoJSON 文件
        with open(local_geojson_path, 'r', encoding='utf-8') as file:
            geojson_data = json.load(file)

        # 转换为 GEE 的 FeatureCollection
        feature_collection = ee.FeatureCollection([
            ee.Feature(
                ee.Geometry(feature['geometry']),
                {**feature['properties'], 'system:index': str(index)}
            )
            for index, feature in enumerate(geojson_data['features'])
        ])

        # 设置 GEE 资产路径
        asset_path = f'users/XXXX/{json_name}'

        # 删除同名资产(如果存在)
        delete_asset_if_exists(asset_path)

        # 创建并启动上传任务
        task = ee.batch.Export.table.toAsset(
            collection=feature_collection,
            description=f'Upload_geojson_to_asset_{json_name}',
            assetId=asset_path,
            fileFormat='GeoJSON'
        )
        task.start()
        print(f"已启动上传任务:{json_file}")

        # 监控任务状态
        while task.active():
            time.sleep(1)
        print("任务已完成。")


if __name__ == '__main__':
    main()

代码优势 ✨

  1. 自动化处理:批量上传多个 GeoJSON 文件,显著减少手动操作的时间和劳动强度。
  2. 错误处理:在上传前自动检查并删除同名资产,避免因重名导致的上传失败。
  3. 高灵活性:用户可根据需求轻松修改文件路径和 GEE 资产路径,适应不同应用场景。
  4. 任务状态监控:实时监控上传任务状态,确保每个任务顺利完成,防止遗漏。

注意事项 ⚠️

  1. 网络代理设置:若未使用代理服务器,请注释或移除以下代码行:
    os.environ['HTTP_PROXY'] = 'http://127.0.0.1:XXXX'
    os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:XXXX'
    
  2. GEE 配额限制:GEE 对上传频率和存储空间有一定限制,上传大量文件时需注意配额,避免触发限制。
  3. 文件格式要求:本代码仅支持 .geojson 格式,其他格式(如 .shp)需先进行格式转换。
  4. 资产命名:确保资产路径唯一,避免因重名导致的数据覆盖或丢失。
  5. OpenSSL 兼容性:根据本地环境需求,可能需调整 CRYPTOGRAPHY_OPENSSL_NO_LEGACY 设置。

相关函数讲解 📚

函数名称功能描述参数说明
delete_asset_if_exists(asset_path)检查并删除指定的 GEE 资产路径(如果存在)。asset_path:GEE 资产的路径,例如 'users/nicexian0011/_DGS_GSV_Grids/{json_name}'。
get_files_with_extension(directory, extension)从指定文件夹中提取所有特定扩展名的文件。directory:文件夹路径。extension:文件扩展名(包括点,如 .geojson)。
ee.batch.Export.table.toAsset()将本地的 FeatureCollection 数据上传至 GEE 资产存储。collection:需要上传的数据(FeatureCollection)。description:任务描述。assetId:目标资产路径。fileFormat:文件格式(如 GeoJSON)。

结论 🎯

通过本文提供的批量上传脚本,用户可以高效地将大量本地 GeoJSON 文件自动上传至 Google Earth Engine (GEE) 资产存储中。该方法不仅简化了操作流程,还通过自动化处理和错误检查,确保数据的唯一性和一致性。在实际应用中,请注意 GEE 的配额限制,并确保网络代理和认证配置正确,以实现最佳效果。


术语解释表 📖

术语解释
GeoJSON一种基于 JSON 格式的开放标准,用于表示地理特征及其属性。
Google Earth Engine (GEE)一个基于云的地理空间分析平台,支持大规模的地理数据存储、处理和可视化。
FeatureCollectionGEE 中用于存储一组地理特征(Feature)的数据结构。
Asset在 GEE 中,资产是用户上传和管理的地理数据资源。
earthengine-apiGoogle 提供的 Python 库,用于与 GEE 进行交互。
ee.Authenticate()Earth Engine API 的认证函数,用于验证用户身份。
ee.Initialize()初始化 Earth Engine API,准备进行数据操作。
ee.batch.Export.table.toAsset()将数据导出为 GEE 资产的函数。

如果这对您有所帮助,希望点赞支持一下作者! 😊

详细全文-点击查看

file

GEE数据上传与导出核心报错全解析:从权限配额到参数配置的避坑指南 在遥感数据处理与地理空间分析领域,数据的高效流转是核心工作流。其背后涉及云端存储、计算配额与数据格式规范等基础技术原理。理解这些原理对于保障数据处理管道的稳定运行具有重要技术价值,尤其是在使用Google Earth Engine(GEE)这类云端平台进行大规模地学分析时。数据上传(Upload)和导出(Export)作为连接本地与云端、计算与成果的关键环节,常因权限不足、存储配额超限、数据格式不规范或导出参数配置错误等问题而中断,直接影响研究进度。本文聚焦于GEE平台,系统梳理了从Shapefile、Ge 阅读详情

相关推荐

基于GEE与深度学习的全球海上风机自动化识别与数据集构建

遥感影像分析是获取地球表面信息的关键技术,其核心原理是通过传感器接收地物反射或辐射的电磁波信息,形成图像数据。在新能源领域,这项技术展现出巨大价值,能够对大规模基础设施进行宏观监测与评估。具体到海上风电行业,利用合成孔径雷达(SAR)影像,特别是Sentinel-1数据,可以实现对海上风机这类点状目标的稳定探测。结合Google Earth Engine(GEE)提供的云端海量数据与强大算力,以及U-Net等语义分割模型对小目标像素级分类的优势,能够构建自动化、低成本的数据处理流水线。这一技术方案有效解决了

weixin_30448603的博客 326

GEE 将本地 GeoJSON 文件上传到谷歌资产

在地理信息系统(GIS)领域,Google Earth Engine(GEE)是一个强大的平台,它允许用户处理和分析大规模地理空间数据。本文将介绍如何使用 Python 脚本批量上传本地 GeoJSON 文件到 GEE 资产存储,这对于需要将地理数据上传到 GEE 进行进一步分析的用户来说非常有用。

ThsPool的博客 2134

GEE实战:5分钟搞定ESA WorldCover 10m土地覆盖数据下载与可视化(2020版)

本文提供了一份基于Google Earth Engine(GEE)平台快速获取与可视化ESA WorldCover 10米分辨率土地覆盖数据(2020版)的实战指南。通过清晰的代码示例,手把手教你完成数据加载、区域裁剪、地图可视化及统计分析,帮助研究人员和开发者高效利用这一高精度全球土地利用数据,大幅提升地理空间分析效率。

weixin_29218963的博客 789

重磅通知:GEE将于2026年4月实施项目级计算配额制度,科研用户必看指南​

Google Earth Engine(GEE)将于2026年4月引入项目级计算配额制度,对非商业项目进行资源分级管控。新制度将项目分为Community(50EECU-hours)、Contributor(1000EECU-hours)和Partner(100000EECU-hours)三个层级,用户需根据研究需求选择对应配额。科研用户建议优先选择Contributor层级,大型项目团队需提前申请Partner配额。现有用户需在2026年4月27日前完成层级选择,新用户注册时直接绑定配额层级。

lwbCUMT的博客 2270

Google Earth Engine(GEE)——geemap介绍(PYTHON API)

介绍 geemap是一个 Python 包,用于与Google Earth Engine(GEE)进行交互式地图绘制,GEE 是一个云计算平台,具有数 PB的卫星图像和地理空间数据集目录。在过去的几年中,GEE 在地理空间社区中变得非常流行,它在本地、区域和全球范围内为众多环境应用提供了支持。GEE 提供 JavaScript 和 Python API 来向地球引擎服务器发出计算请求。与全面的文档和交互式 IDE(即GEE JavaScript 代码编辑器)相比) 的 GEE JavaScript AP.

此星光明博客 1910

Google Earth Engine (GEE)——GEE制作gif动态图(北京市为例)

palette (逗号分隔的字符串) CSS风格的颜色字符串的列表(仅适用于单频段预览)。bands (逗号分隔的字符串) 以逗号分隔的要映射到RGB的波段名称列表。bias (逗号分隔的数字) 映射到00-FF的偏移(或每个波段一个)。gain(逗号分隔的数字)映射到00-FF的增益(或每个波段的一个)。gamma 伽玛(逗号分隔的数字) 伽玛校正因子(或每个波段一个)。min (逗号分隔的数字) 要映射到00的值(或每个波段一个)。max (以逗号分隔的数字) 映射到FF的值(或每个波段一个)。

此星光明博客 1417

【如何在GEE中创建多级目录/GEE使用技巧】

如何在Google Earth Engine中创建多级目录

m0_46468163的博客 1162

GEE初学:谷歌地球引擎GEE入门指南(最新注册全流程)

本教程详细介绍了谷歌地球引擎(GEE)的注册与基础操作流程。主要内容包括:1)非商业账号注册步骤,需提供学术机构凭证和研究目的;2)Google Cloud项目创建与API激活;3)Shapefile文件上传方法及资源ID获取;4)JavaScript脚本编写与地图可视化实现。教程通过代码示例展示了两种多边形显示方式(填充和轮廓模式),并强调了GEE的云端处理优势,包括免费访问40多年卫星数据、无需本地高性能硬件等特点。整个流程从账号注册到首个地图可视化完成约需10-15分钟,适合遥感分析初学者快速入门。

此星光明博客 2143

GEE获取气象数据

1. **更高的时间分辨率**:每日数据提供更频繁的观测值,这有助于更精确地捕捉气温的日变化和异常情况。3. **捕捉极端事件**:在评估气候变化的影响时,每日数据可以帮助识别和分析短暂的极端天气事件,如热浪或寒潮,这些可能在月度平均数据中不那么显著。2. **灵活性**:每日数据可以自定义到不同的时间聚合级别,例如可以从每日数据计算季节性平均值或其他非标准时间段的平均值。1. **计算简便**:月度数据已经是聚合过的,减少了处理数据的计算负担,使得快速获取和分析长时间序列变得更加容易。

whu2017302590176的博客 2326

GEE案例:如何将GEE中的影像文件中的列表转化为集合然后下载(单景影像转化为影像集合)

我最近将我的 Google Earth Engine 帐户切换到云项目。我在“Assets”中创建了一个文件夹,以便从 PC 下载,并将所有需要的图像放在此文件夹中。之后,我在脚本中导入文件夹时遇到问题,因为它未被识别为图像集合。我将其列出以在控制台中打印信息,但无法将其转换为图像集合。

此星光明博客 281

GEE极端降水分析:50行Python实现全球暴雨事件识别

极端降水分析是气象灾害预警与气候变化归因的核心技术,其本质是基于高时空分辨率降水数据,通过动态分位数阈值(如P95)识别异常强降水事件。关键技术依赖于遥感降水产品(如CHIRPS)的在线时空立方体处理能力,结合地理空间统计(reduceRegion)、动态阈值建模与布尔影像运算,实现免本地GIS、免原始数据下载的云原生分析。该方法显著提升水文气象领域对区域洪涝风险的快速评估效率,广泛应用于防汛指挥、气候适应规划及科研验证场景。本文以长江流域为例,详解基于Google Earth Engine与Python

weixin_29057695的博客 295

Google Earth Engine(GEE)——全球建筑物数据集(MSBuildings数据集)包含微软7.77忆建筑物

全球ML建筑脚印必应地图正在发布全球范围内的公开建筑脚印。我们从2014年至2021年的Bing地图图像中检测到777M的建筑,包括Maxar和Airbus的图像。为了完整起见,早期发布的数据集也包括在这个数据集中,并被纳入其中。你可以在这里找到Github repo和关于方法的更多信息。数据集是压缩的,可作为不同地区的GeoJSON和GeoJSONL文件。关于预处理的其他信息和一些更多的背景,可以在这里的博客上找到免责声明:数据集的全部或部分描述是由作者或其作品提供的。数据预处理。

此星光明博客 2833

DeepSeek 在 PostgreSQL 中,执行 `DELETE` 操作后,数据占用的空间并不会立即释放给操作系统

操作后,数据占用的空间并不会立即释放给操作系统。这是 PostgreSQL 的 MVCC(多版本并发控制)机制决定的——删除的数据只是被标记为“死元组”,物理空间仍然被表占用。这是最彻底的释放方式,会将表重写为一个没有空洞的新文件,将空间返回给操作系统。如果你的表非常大(如几百GB),或者这是生产环境的核心表,建议优先考虑。你可以告诉我你的表大概多大、是否能接受锁表,我可以给你更精确的建议。要真正释放空间,需要根据你的实际需求,从以下三种方案中选择一种。如果你既想彻底释放空间,又无法接受锁表,

m0_37843156的博客 404

名称不存在或不是目录_GEE学习笔记 五十六:GEE中如何把文件导出到Google Drive的子目录...

经济不景气让这个炙热的夏天依然寒风凌厉! 今天在群里看到有人在问一个问题,如何使用GEE把文件导出到Google Drive的子目录中?这里我就简单的说一下这个问题。 首先,在GEE中我们都知道了如何将数据导出导出Google Drive的文件夹中,如下面的一个例子: var geometry = /* color: #d63000 */ee.FeatureCollection( ...

weixin_39613561的博客 348

从DBC到ARXML:用RTA-CAR7实现车载通信协议栈自动化生成全流程

本文详细介绍了如何利用ETAS RTA-CAR7工具链,特别是ISOLAR-A和RTA-BSW ConfGen,实现从车载通信DBC文件到AUTOSAR ARXML系统描述文件,再到基础软件(BSW)协议栈代码的自动化生成全流程。该流程通过深度配置、信号路由、PDU复用及规则定制,大幅提升开发效率与一致性,是应对现代汽车电子复杂网络开发的关键实践。

brandy的博客 221

Basilisk vs. STK:开源航天仿真工具在Windows上的实战体验与生态对比

本文对比了开源航天仿真工具Basilisk与商业软件STK在Windows平台上的实战体验与生态差异。从技术架构、安装配置、使用成本、功能覆盖、社区生态到适用场景,全面分析了二者的优劣势,为航天工程师和研究人员提供选型参考。Basilisk在性能和扩展性上表现突出,而STK在可视化与专业模块上更具优势。

weixin_30632089的博客 589

基于 Google Earth Engine 的遥感影像下载(分为裁剪版本和无裁剪版本,完整代码在最后)

搜索GEE,找到网站首页第一行的platform,进入下滑弹出的Code Editor,进入代码编辑界面,你会看到三个界面。请看最左侧的界面,进入Assets界面点击NEW并上传我们的shp文件。本文档旨在说明如何利用 Google Earth Engine(GEE)平台,基于研究区矢量数据(shapefile),批量筛选、可视化并导出 Sentinel-2 遥感影像。最常见的是哨兵影像(分辨率:10m)和landsat影像(分辨率:30m)assets路径 你的shp上传路径 换成自己的资产路径。

qq_45425261的博客 261

STM32接入CH340芯片的升级电路及初始化进入升级模式(死机)问题处理

MCU-REST 在 MCU-BOOT0 处于低电平状态下,进行下拉操作,在MCU-REST 与 MCU-BOOT0 恢复正常电平时,将导致MCU死机,MCU-REST 先于 MCU-BOOT0 下拉可解决该问题;MCU-REST 在 上升沿结束时将判断 MCU-BOOT0 的状态,MCU-BOOT0 处于高电平,MCU死机,MCU-BOOT0 处于低电平 MCU 正常;

LuDvei的博客 2493

基于 GEE 实现长时间序列 NDVI、LST、降水多指标年度合成与批量下载

基于 GEE 实现长时间序列 NDVI、LST、降水多指标年度合成与批量下载。

@HNUSTer的博客 916

如何用Python实现SPEI指数计算?从数据准备到结果可视化完整指南

本文提供了一份完整的Python实现SPEI指数计算指南,涵盖从数据准备、潜在蒸散量计算到结果可视化的全流程。详细介绍了使用Thornthwaite方法计算PET、拟合三参数log-logistic分布以及标准化转换的核心算法,并提供了模块化代码和可视化方案,帮助用户构建可复用的干旱分析工具。

cola5的博客 268

Arduino IDE 2配置ESP32-S3工程全指南

嵌入式开发中,Arduino框架通过硬件抽象层(HAL)大幅降低MCU入门门槛,其核心在于板级支持包(BSP)与底层构建系统(如ESP-IDF)的精准协同。理解CPU频率、Flash模式、分区表、PSRAM等关键配置,本质是掌握SoC时钟树、SPI Flash通信协议、内存映射与FreeRTOS调度机制的技术原理。这些参数不仅决定固件能否启动,更直接影响功耗、实时性、OTA升级与大容量应用(如LVGL、TFLite Micro)的可行性。本文以ESP32-S3为例,聚焦Arduino IDE 2.x环境下从

root9的博客 783

别再只盯着公共数据集了!手把手教你用GEE Assets搭建个人遥感数据仓库

本文详细介绍了如何利用GEE Assets构建个人遥感数据仓库,解决公共数据集不足和数据管理混乱的问题。通过智能命名体系、目录架构设计和元数据自动化管理等实战策略,提升数据管理效率。文章还分享了成本优化和性能调优技巧,帮助用户高效利用GEE Assets进行遥感数据分析。

weixin_30684743的博客 487

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

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

使用 Google Earth Engine 下载中国CLCD土地利用数据(含GEE代码)

CLCD,全称为,是中科院遥感地球所发布的覆盖中国的高精度土地覆盖分类数据。该数据集覆盖1985~2022年,空间分辨率为30米,数据类型为多类土地利用栅格数据,广泛应用于:城市扩张分析土地利用变化检测(LUCC)绿地系统监测热岛效应、碳储量等环境研究CLCD数据为我们提供了30米分辨率、覆盖全国的高质量土地利用数据,是遥感与GIS学习与科研的宝贵资源。利用GEE平台,我们可以轻松获取、处理并分析这些数据,为论文研究、毕设选题提供有力支持。

2301_76972702的博客 3685

IPOP 使用详解 (附IPOP工具包)

IP 地址动态绑定功能;路由信息查询和配置功能;MAC 地址信息查询和修改功能;MAC 、主机信息扫描功能;本机网络报文统计功能;本机端口列表、远程端口扫描功能;端口映射功能;网卡流量统计功能;本机 IP 报文捕获和发送功能;终端控制功能(支持 telnet 、 dos、 ssh、 sftp 、ftp、com 等协议);TCL 脚本支持;多种服务功能( tcp/udp/ping/telnet/ftp/tftp/web/team/syslog/smtp );

悦分享 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

GEE FeatureCollection 详解:从构造到实战的完整指南

矢量数据是地理空间分析的基础,在遥感领域常用于描述点、线、面等地理实体。Google Earth Engine (GEE) 作为云端遥感计算平台,以 FeatureCollection 为核心类型管理矢量集合,其所有操作均在服务端执行,通过构建计算图实现大规模并行处理。理解这种服务端架构,是高效进行空间分析的关键。在实际业务中,从随机点采样到缓冲区生成,再到属性查询与聚合统计,FeatureCollection 都扮演着不可替代的角色。本文从构造方式谈起,详细介绍了四种创建 FeatureCollectio

weixin_34094282的博客 241

深度学习工具包 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")

上一篇: Python 批量转换 Shapefile 为 GeoJSON
下一篇: GEE 批量删除 Assets 资产文件夹
ThsPool
博客等级 码龄3年 2万+粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值