老项目js工具组件

AI辅助重构:TypeScript+Three.js老项目现代化实践 在软件开发领域,技术栈的持续演进是常态,而遗留项目的现代化重构是开发者常面临的挑战。其核心原理在于通过引入类型系统、更新依赖版本和优化架构设计,提升代码的可维护性和开发体验。从技术价值看,这不仅减少了运行时错误,还显著提高了团队协作效率。在实际应用场景中,结合React、Three.js等流行框架进行重构尤为常见。本文以AI辅助重构一个基于React和Three.js的线上娃娃机游戏为例,展示了如何利用现代工具链和AI编程助手,快速完成从JavaScript到TypeScript的迁移、Three.js A 阅读详情

 记录一下老项目自定义js工具组件(ES5),持续补充方法

目前涉及如下

字符处理:trim,补0,hashcode

日期处理:字符日期时间转Date,format等

js处理:动态js脚本导入

数组处理:去重等

函数处理:函数重载续写等

var _commonUtil = {
    str: {
        toString: function(s) {
            return typeof s === 'string' ? s : s + "";
        },
        trim: function (s) {
            return s ? this.toString(s).trim() : "";
        },
        adjust: function (s, max) {
            var sub = max - s.length;
            if (sub === 0) {
                return s;
            } else if (sub < 0) {
                return s.substring(0, max);
            } else {
                var _s = "";
                for (var i = 0; i < sub; i++) {
                    _s += "0";
                }
                _s += s;
                return _s;
            }
        },
        hashCode: function (s) {
            var hash = 0;
            if (!s) {
                return hash;
            }
            for (var i = 0; i < s.length; i++) {
                var char = s.charCodeAt(i);
                hash = ((hash << 5) - hash) + char;
                hash = hash & hash;
            }
            return hash;
        }
    },
    date: {
        parseStr: function () {
            if (arguments.length) {
                return new Date(
                    arguments[0] || 1999,
                    arguments[1] - 1 || 0,
                    arguments[2] || 1,
                    arguments[3] || 0,
                    arguments[4] || 0,
                    arguments[5] || 0,
                    arguments[6] || 0
                );
            }
            return null;
        },
        parse: function (dateStr) {
            dateStr = _commonUtil.str.trim(dateStr);
            var numbers = dateStr.match(/\d+/g);
            if (numbers) {
                // yyyy MM dd HH mm ss SSS
                var values = [];
                var patternLens = [4, 2, 2, 2, 2, 2, 3];
                if (numbers.length === 1) {
                    var s = numbers[0];
                    var index = 0;
                    for (var i = 0; i < patternLens.length; i++) {
                        var len = patternLens[i];
                        var end = index + len;
                        if (end <= s.length) {
                            values.push(+s.substring(index, end));
                            index += len;
                        } else {
                            break;
                        }
                    }
                } else {
                    for (var j = 0; j < patternLens.length; j++) {
                        if (j < numbers.length) {
                            var n = numbers[j];
                            var l = patternLens[j];
                            if (n.length > l) {
                                numbers.splice(j + 1, 0, n.substring(l));
                            }
                            if (j === 0) {
                                // yyyy默认两位年份都拼接20
                                n = n.length === 2 ? "20" + n : n;
                            }
                            values.push(+_commonUtil.str.adjust(n, l))
                        } else {
                            break;
                        }
                    }
                }
                return this.parseStr.apply(this, values);
            }
            return null;
        },
        getCurrentDate: function () {
            var today = new Date();
            var yyyy = today.getFullYear();
            var mm = ('0' + (today.getMonth() + 1)).slice(-2); // 月份从0开始,需要+1
            var dd = ('0' + today.getDate()).slice(-2);
            return yyyy + '-' + mm + '-' + dd;
        },
        getCurrentTime: function () {
            var today = new Date();
            var hh = ('0' + today.getHours()).slice(-2);
            var mm = ('0' + today.getMinutes()).slice(-2);
            var ss = ('0' + today.getSeconds()).slice(-2);
            return hh + ':' + mm + ':' + ss;
        },
        formatDate: function (date, format) {
            if (!this.isDate(date)) {
                return null;
            }
            var map = {
                'yyyy': date.getFullYear(),
                'MM': ('0' + (date.getMonth() + 1)).slice(-2),
                'dd': ('0' + date.getDate()).slice(-2),
                'HH': ('0' + date.getHours()).slice(-2),
                'mm': ('0' + date.getMinutes()).slice(-2),
                'ss': ('0' + date.getSeconds()).slice(-2),
                'SSS': ('00' + date.getMilliseconds()).slice(-3)
            };
            return format.replace(/yyyy|MM|dd|HH|mm|ss|SSS/g, function (matched) {
                return map[matched];
            });
        },
        isDate: function (d) {
            return Object.prototype.toString.call(d) === '[object Date]';
        },
        compare: function (d1, d2) {
            d1 = this.isDate(d1) ? d1 : this.parse(d1);
            d2 = this.isDate(d2) ? d2 : this.parse(d2);
            if (d1 && d2) {
                var sub = d1.getTime() - d2.getTime();
                if (sub === 0) {
                    return 0;
                } else {
                    return sub > 0 ? 1 : -1;
                }
            }
            return NaN;
        }
    },
    file: {
        impJs: function (src, callback) {
            var script = document.createElement('script');
            script.src = src;
            script.type = "text/javascript";
            script.onload = callback;
            script.onerror = function () {
                console.error('Failed to load script: ' + src);
            };
            document.head.appendChild(script);
        }
    },
    list: {
        sort: function (list, options) {
            if (list && list.length) {
                var func;
                var desc = options && options.desc;
                var map = options && options.map;
                if (typeof list[0] === 'number') {
                    if (typeof map === 'function') {
                        func = function (a, b) {
                            return desc ? map(b) - map(a) : map(a) - map(b);
                        };
                    } else {
                        func = function (a, b) {
                            return desc ? b - a : a - b;
                        };
                    }
                } else {
                    if (typeof map === 'function') {
                        func = function (a, b) {
                            return desc ? (map(b) + "").localeCompare(map(a) + "") : (map(a) + "").localeCompare(map(b) + "");
                        };
                    } else {
                        func = function (a, b) {
                            return desc ? (b + "").localeCompare(a + "") : (a + "").localeCompare(b + "");
                        };
                    }

                }
                return list.sort(func);
            }
            return [];
        },
        set: function (list, options) {
            if (list && list.length) {
                var map = typeof (options && options.map) === 'function' ? options.map : null;
                var uniqueList = [];
                var source;
                if (map) {
                    var uniIds = [];
                    for (var i = 0; i < list.length; i++) {
                        source = list[i];
                        var d = map(source);
                        if (uniIds.indexOf(d, 0) === -1) {
                            uniIds.push(d);
                            uniqueList.push(source);
                        }
                    }
                } else {
                    for (var j = 0; j < list.length; j++) {
                        source = list[j];
                        if (uniqueList.indexOf(source, 0) === -1) {
                            uniqueList.push(source);
                        }
                    }
                }
                return uniqueList;
            }
            return [];
        },
        setThenSort: function (list, options) {
            return this.sort(this.set(list, options), options);
        },
        join: function (list, s) {
            var str = "";
            if (list && list.length) {
                s = s ? s : ",";
                for (var i = 0; i < list.length; i++) {
                    str += list[i] + s;
                }
                return str.substring(0, str.length - 1);
            }
            return str;
        },
        deal: function(list, callback){
            if (list && typeof callback === 'function'){
                var v;
                for (var i = 0; i < list.length; i++){
                    if (callback(v = list[i], i) === -1){
                        return {"index": i, "value": v};
                    }
                }
            }
            return null;
        },
        hashCode: function (list) {
            return _commonUtil.str.hashCode(this.join(list));
        }
    },
    obj: {
        parse: function(str, log) {
            try {
                if (str){
                    return JSON.parse(str);
                }
            }catch (e) {
                if (log){
                    _commonUtil.console.log(e);
                }
            }
            return null;
        },
        deal: function (obj, callback) {
            if (obj && typeof callback === 'function'){
                var v;
                for (var k in obj){
                    if (obj.hasOwnProperty(k) && callback(v = obj[k], k) === -1){
                        return {"key": k, "value": v};
                    }
                }
            }
            return null;
        },
        equals : function (o1, o2, isNum) {
            if (isNum){
                return _commonUtil.num.convert(o1, NaN) === _commonUtil.num.convert(o2, NaN);
            }
            return _commonUtil.str.toString(o1) === _commonUtil.str.toString(o2);
        },
        len: function (o) {
            return o && o.constructor === Object && Object.keys(o).length || 0;
        }
    },
    num: {
        convert: function (s, def) {
            if (typeof s === 'number'){
                return isFinite(s) ? s : def;
            }
            var n = s ? +s : NaN;
            return isFinite(n) ? n : def;
        }
    },
    func: {
        overwrite: function (target, name, newFunc) {
            var f = target[name];
            if (typeof f === 'function') {
                target[name] = function () {
                    return newFunc.apply(
                        {
                            inherit: function () {
                                return f.apply(target, arguments);
                            }
                        }
                        , arguments);
                };
            } else {
                target[name] = function () {
                    return newFunc.apply(
                        {
                            inherit: function () {}
                        }
                        , arguments);
                };
            }
        }
    },
    console: {
        c: function() {
            var _console = window.console;
            if (_console && _console.dir && _console.debug){
                return _console;
            }
            _console = window.parent.console;
            if (_console && _console.dir && _console.debug){
                return _console;
            }
            return null;
        },
        execute: function(){
            var _c = this.c();
            var method;
            var target;
            if(_c && arguments.length > 1 && (method = arguments[0]) && (target = _c[method])) {
                target.apply(null, Array.prototype.slice.call(arguments, 1))
            }
        },
        log: function () {
            var args = Array.prototype.slice.call(arguments);
            args.unshift("log");
            this.execute.apply(this, args);
        },
        error: function(){
            var args = Array.prototype.slice.call(arguments);
            args.unshift("error");
            this.execute.apply(this, args);
        },
        warn: function(){
            var args = Array.prototype.slice.call(arguments);
            args.unshift("warn");
            this.execute.apply(this, args);
        },
        dir: function() {
            var args = Array.prototype.slice.call(arguments);
            args.unshift("dir");
            this.execute.apply(this, args);
        },
        alert: function () {
            var str = "";
            for (var i = 0; i < arguments.length; i++) {
                var _p = arguments[i];
                try {
                    str += (_p && typeof _p === 'object' ? JSON.stringify(_p) : _p) + " ";
                } catch (e) {
                    str += _p + " ";
                }
            }
            alert(str.substring(0, str.length - 1));
        }
    }
};

统计项目中组件的使用次数(JavaScript) 在开发大型项目时,了解每个组件在代码中的使用频率对于维护和优化代码非常重要。通过使用命令行界面(CLI)工具,我们可以快速统计项目中各个组件的使用次数。本文将介绍如何使用JavaScript编写一个简单的CLI工具来实现这个功能。步骤 1:准备工作 首先,我们需要确保在本地计算机上安装了Node.js环境。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以让我们在命令行中运行JavaScript代码。步骤 2:创建项目并安装依赖 在命令行中,创建一个新的文件夹作为项目的根目录 阅读详情

相关推荐

替换 JavaScript 依赖库/组件的快速工具

我们将使用 Node.js 平台和 npm 包管理器来开发这个工具。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,而 npm 是 Node.js 的默认包管理器,用于安装和管理 JavaScript 包。搜索指定依赖库/组件的现有版本;列出可用的替代版本;自动替换项目中的依赖库/组件;生成报告,包括替换的依赖库/组件列表和相关统计信息。

XymkMl的博客 220

JS打包工具 Vite

Vite是 JS 新一代的打包的工具,它所解决的问题,是前端打包慢的问题,随着前端应用复杂度越来越大,项目文件越来越多,通常项目中都是使用 Webpack 进行打包,Webpack是个静态的打包工具,每次改动都会打包所有文件,即使使用 HMR,速度也是很慢。Vite 的推出旨在加速打包,提高前端开发效率,Vite 的核心就是将项目的代码分为两个部分,一部分是类库,另外一部分是应用逻辑代码。对于类库,开发中是不会修改的,这部分代码只要启动了 dev-server,打包一次,就可以保持不动。

hawk2014bj的博客 955

JavaScript任务菜单组件:TaskMenu项目实战

本文还有配套的精品资源,点击获取 简介:TaskMenu是一个用JavaScript编写的前端任务菜单组件,它允许在网页中添加具有专业外观的任务菜单。该组件通过核心脚本 TaskMenu.js 实现添加、删除和管理菜单项的功能,并支持多种样式选择。该项目提供了全面的文档和演示资源,包括API文档、使用说明、示例和源代码,旨在帮助开发者快速理解和集成任务菜单功能...

weixin_35636570的博客 876

用vue开发老项目

用vue开发老项目一、原项目结构二、技术栈三、需求四、改造后的页面五、request.js 接口文件 一、原项目结构 html css js images font 没有项目管理工具 二、技术栈 js + jquery 三、需求 在老项目的基础上,增加新的页面。 由于jquery玩的不熟,且包比较重,所以想加入vue来改造成自己习惯的技术栈 四、改造后的页面 <!DOCTYPE html...

丁大聪明的博客 1423

构建Web项目的关键JS组件实现与实践指南

本文还有配套的精品资源,点击获取 简介:JS组件在现代Web开发中扮演着核心角色,它们使得网页功能化与互动性增强。组件化编程通过模块化来提高代码的可维护性与复用性。本文将深入探讨模块化编程的不同规范如CommonJS和ES6模块,以及如何有效使用这些组件。同时,还会关注组件的许可与版权问题,并介绍一个典型的JS组件项目目录结构。通过学习这些组件的使用和开发,可以有效提升We...

weixin_36123300的博客 1085

用Butter.js开发一个完整的JavaScript表格组件

本文还有配套的精品资源,点击获取 简介:Butter.js是一个为TaBest项目开发的开源JavaScript表格组件,其目标是提供高效和功能丰富的数据展示和操作方式。它支持动态数据加载、可定制化列模板、排序与过滤、分页、行选择和丰富的事件处理,且具备响应式设计。组件的实现基于DOM操作和事件监听,通过数据驱动进行数据绑定和更新。本组件易用性强,适用于需要高度定制化的We...

weixin_26907223的博客 930

vue.js组件库的搭建教程

Vue.js是一款用于构建用户界面的渐进式JavaScript框架。它的核心库只关注视图层,并且非常容易学习。本文将介绍如何搭建一个Vue.js组件库,包括创建项目、编写组件、发布组件等步骤。本篇介绍了从零开始搭建一个 Vue3 组件库的第一步,完成了一个最简单的组件库项目,并且能够打包。同时还介绍了三个 Lint 工具的装配,以及如何实现提交规范化及自动格式化代码。尽管我们没有真的发布到 npm 上,不过我们如果想试试的话,可以使用 link 协议在本地的其他项目上试一试。同样用创建一个项目,在的。

qq_63055262的博客 1758

使用Moment.js库打造JavaScript日历组件

在现代Web开发中,处理日期和时间是一个常见而复杂的需求。Moment.js是一个流行的JavaScript库,它提供了强大的工具来解析、验证、操作以及格式化日期和时间。其简洁的API和广泛的功能使得Moment.js成为处理日期时间的首选库之一。除了默认格式外,Moment.js也支持自定义日期格式化。开发者可以根据需要定义自己的格式,以满足不同的显示需求。下面的例子展示了如何创建自定义日期格式:// 自定义日期格式// 输出自定义格式的日期和时间// 使用自定义格式展示日期和时间。

weixin_35755562的博客 1139

Vue.js组件开发

恭喜你,通过以上步骤,你已经学会了Vue.js组件开发的基础知识!今天我们学了:如何创建Vue项目。如何创建和使用组件。如何给组件添加交互功能。如何传递数据给组件。这只是Vue.js组件开发的冰山一角,但已经为你打下了坚实的基础。接下来,你可以多看看官方文档,尝试开发更多复杂的组件。记住,学习编程就像玩游戏,多动手实践,你一定会越来越厉害的!如果你在学习过程中遇到任何问题,别忘了去Vue.js社区或者论坛寻求帮助。加油,你一定可以成为Vue.js大神的!公众号:周盛欢AI。

qq_33449977的博客 980

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

5G MBS(组播广播服务)深度解析:从标准架构到商用实践

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1084

如何处理NC数据?(Python和IDL语言实现)

如何处理NC数据?(Python和IDL语言实现) NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。(参考自:https://zhuanlan.zhihu.com/p/129351199) 在我看来,nc和hdf有异曲同工之妙,我用的数据以hdf结构为主(HDF:层次文件格式,相当于

zhanglingfeng1的博客 4637

Vue老项目由js转换ts指南

Vue(2.x)老项目由js转换ts指南 其实在网上有不少关于,vue迁入ts的教程,但是很多并不完善,故做此篇 本项目基于 vue-admin-template进行改造 ,它是有ts版本的,因此本文章讨论的是老项目,由vue-cli构建的迁移 如果你的项目是由vue-cli构建的那么转换项目并不需要手动去添加各种配置文件等,因为vue-cli有内置的ts迁入命令进入项目 vue add typescript 如果使用git管理代码,请先保证工作区clear,输入完命令后,终端会自动为你安装 @vue/cl

Aren的博客 1万+

水下机器人仿真平台选型指南:从AirSim到Unity3D的深度对比

本文深入对比了AirSim+UE和Unity3D两大水下机器人仿真平台的核心架构、传感器仿真能力和水下环境建模特点。AirSim+UE凭借高精度物理仿真和丰富传感器支持成为专业研发首选,而Unity3D则以快速开发和灵活扩展见长。文章为研发团队提供了全面的选型指南,帮助优化水下实验的仿真效率与成本。

weixin_29009669的博客 453

# Vue 组件开发打包、Vue 项目打包、js库组件库打包使用

Vue 项目打包、组件打包使用 vue-cli 脚手架项目打包步骤 使用 vue-cli 脚手架新建项目 新建vue项目的过程见:https://blog.youkuaiyun.com/qq_37248504/article/details/107169812 打包配置说明 打包的配置在build下 常量config在vue/config/index.js 文件下配置 需要修改vue/config/index.js 文件下的将build对象下的assetsPublicPath中的/,改为./ 采用npm run

不积跬步,无以至千里;不积小流,无以成江海 1万+

阻抗匹配与史密斯(Smith)圆图

在找到点B和B'后,我们就能够测量A'到B和B'到D的弧长,前者就是C的归一化电纳值,后者为L的归一化电抗值。当然,表面上看新的点好像是一个不同的阻抗,实际上Z和1/Y表示的是同一个元件(这个新值在圆图上呈现为一个不同的点,而且反射系数也不相同,依次类推)。出现这种情况的原因是我们的图形本身是一个阻抗图,而新的点代表的是一个导纳。这个方程是在复平面(Γr, Γi)上、圆的参数方程(x - a)² + (y - b)² = R²,它以[r/(r + 1), 0]为圆心,半径为1/(1 + r)。

qq_55759599的博客 3963

射频功率放大器设计实战:从理论到Layout的全流程解析

本文以一款40W、960MHz LDMOS功率放大器为例,系统解析了从理论分析、仿真设计到版图实现的射频功率放大器设计全流程。内容涵盖AB类放大器选型、核心指标定义、稳定性分析、Load-Pull/源牵引仿真、史密斯圆图匹配、偏置网络设计,以及最终的谐波平衡仿真与版图电磁验证,为工程师提供了一套从理论到实践的完整设计方法论。

weixin_29266007的博客 249

JavaScript浏览器开发入门:JSBrowser项目架构与组件详解

JSBrowser是一个使用JavaScript构建的Windows应用浏览器项目,它为开发者提供了一个探索浏览器内部工作原理的绝佳实践平台。通过分析JSBrowser的架构设计和组件实现,新手开发者可以快速掌握现代浏览器应用的核心开发思路。 ## 项目整体架构概览 JSBrowser采用模块化架构设计,主要分为前端界面层和后端功能层两大核心部分。项目根目录下的`JSBrowser.sln`是

gitblog_00436的博客 1091

qq对接openclaw,通过qq发送命令

把 OpenClaw 接入 QQ 和微信,目前主流的微信文章和教程主要提供了两种截然不同的路径。我为你梳理了它们的核心区别和关键步骤,你可以根据自己的需求来选择。

suny8的专栏 272

从JavaScript老项目迁移到TypeScript:一个真实React组件的重构避坑指南

本文详细介绍了如何将React项目从JavaScript迁移到TypeScript的实战指南,包括迁移前的准备工作、具体重构步骤和常见问题解决方案。通过真实组件案例演示,帮助开发者规避迁移过程中的常见陷阱,提升代码类型安全性和可维护性,特别适合TypeScript入门开发者参考。

weixin_30335575的博客 472

PCL 切片法实现点云模型的体积测量、面积测量(二)

通过PCL VTK进行切片法,实现点云模型的体积测量、面积测量。

weixin_43896283的博客 1712

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3087

Vue.js 组件开发

在 Vue.js 里,组件就像是一个个小零件。你可以把它们想象成乐高积木,每个积木都有自己的功能和样子。比如,一个按钮组件、一个输入框组件,或者一个导航栏组件。你可以把这些组件组合起来,拼成一个完整的页面。组件的好处是,你可以重复使用它们,而且代码更清晰,维护起来也方便。今天我们一起学习了 Vue.js 组件开发的基础知识。我们搭建了开发环境,创建了一个简单的组件,并给它添加了交互功能。Vue.js 的组件开发就是这样简单,只要你掌握了基本的结构和语法,就可以轻松上手啦。

qq_33449977的博客 2276

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

vue.js组件开发

想象一下,你正在搭积木,每个积木块都有自己的形状和功能。在 Vue.js 里,组件就像是这些积木块。你可以把它们拼凑起来,搭建出一个完整的网页。每个组件都有自己的模板、样式和逻辑,而且可以重复使用。比如,你做了一个按钮组件,以后每次需要按钮,直接用这个组件就行,超方便!今天咱们学了怎么创建一个 Vue.js 项目,怎么开发组件,以及怎么在组件之间传值。其实,Vue.js 的组件开发就是这么简单,就像搭积木一样。你可以用同样的方法,开发出各种各样的组件,然后把它们组合起来,搭建出一个完整的网页。

qq_33449977的博客 1019

WINCC7.3破解文件

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

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

js 调用react组件_React JS组件简介

js 调用react组件In this article, I will help you walk through the process of creating or working with React JS components for your projects. 在本文中,我将帮助您逐步完成为项目创建或使用React JS组件的过程 。 As it's always said, ev...

cumubi7552的博客 1536

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

在传统的HTML、CSS与JavaScript项目中加入vue

本文介绍了在现有项目中逐步引入Vue.js的多种方法。Vue作为轻量级渐进式框架,具有双向数据绑定、组件化、高性能等优势。主要集成方式包括:通过CDN直接引入、创建Vue实例、渐进式局部替换、组件化迁移、构建工具集成以及路由整合。文章还提供了实际开发案例,展示如何在报表系统中通过CDN引入Vue,并分别控制登录页面和主页面。这种渐进式集成策略允许开发者在不重写现有代码的前提下,逐步享受Vue带来的开发便利和性能优势。

qq_44020125的博客 1804

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 149
上一篇: 防抖(debounce)函数
下一篇: Redis+Lua限流的四种算法
strap
博客等级 码龄3年 60粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值