Oracle Client(配环境+代码+报错+Python连接)

windows下Python连接Oracle distutils.errors.DistutilsSetupError: cannot locate Oracle include files in cx_Oracle.InterfaceError: Unable to acquire Oracle environment handle 阅读详情

Oracle Client 安装

1、环境

  • 日期:2019年8月1日
  • 公司已经安装好Oracle服务端
  • Windows版本:Windows10专业版
  • 系统类型:64位操作系统,基于x64的处理器
  • Python版本:Python 3.6.4 :: Anaconda, Inc.

2、下载网址

https://www.oracle.com/database/technologies/instant-client/downloads.html

3、解压至目录

压缩包

解压后(这里放D盘)

4、配置环境变量

控制面板\系统和安全\系统 -> 高级系统设置 -> 环境变量

新建ORACLE_HOME,值为包解压的路径

编辑PATH,添加%ORACLE_HOME%

Navicat连接测试

一个简单的建表示例

-- 建表
CREATE TABLE table_name
(
serial_number     NUMBER(10),
collect_date      DATE,
url               VARCHAR2(255),
long_text         CLOB,
price             NUMBER(10)-- 若需要精确到小数点2位,按分存储,/100还原到元
);
-- 给表添加备注
COMMENT ON TABLE table_name IS '中文表名';
-- 给表字段添加备注
COMMENT ON COLUMN table_name.serial_number IS '编号';
COMMENT ON COLUMN table_name.collect_date IS '日期';
COMMENT ON COLUMN table_name.url IS 'URL';
COMMENT ON COLUMN table_name.long_text IS '长文本';
COMMENT ON COLUMN table_name.price IS '价钱';
-- 插入
INSERT INTO table_name(collect_date) VALUES (DATE'2019-08-23');
INSERT INTO table_name(long_text) VALUES ('a');
INSERT INTO table_name(long_text) VALUES ('b');
-- 查询
SELECT * FROM table_name WHERE TO_CHAR(long_text) in ('a','b');
-- 查建表语句(表名大写)
SELECT dbms_metadata.get_ddl('TABLE','TABLE_NAME') FROM dual;
-- 删表
DROP TABLE table_name;

cx_Oracle

基础

安装命令:conda install cx_Oracle

import cx_Oracle

def execute(query):
    db = cx_Oracle.connect('用户名/密码@IP/ServiceName')
    cursor = db.cursor()
    cursor.execute(query)
    result = cursor.fetchall()
    cursor.close()
    db.close()
    return result

def commit(sql):
    db = cx_Oracle.connect('用户名/密码@IP/ServiceName')
    cursor = db.cursor()
    cursor.execute(sql)
    db.commit()
    cursor.close()
    db.close()

封装成类

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker


class Engine:
    def __init__(self, conn):
        self.engine = create_engine(conn, encoding='utf8')  # 这engine直到第一次被使用才真实创建

    def execute(self, sql, **kwargs):
        """含commit操作,返回<class 'sqlalchemy.engine.result.ResultProxy'>"""
        return self.engine.execute(sql, **kwargs)

    def fetchall(self, sql):
        return self.execute(sql).fetchall()  # 能解释CLOB

    def fetchone(self, sql, n=999999):
        self.yellow(sql)
        result = self.execute(sql)
        for _ in range(n):
            one = result.fetchone()
            if one:
                yield one  # <class 'sqlalchemy.engine.result.RowProxy'>

    def fetchone_dt(self, sql, n=999999):
        self.yellow(sql)
        result = self.execute(sql)
        columns = result.keys()
        length = len(columns)
        for _ in range(n):
            one = result.fetchone()
            if one:
                yield {columns[i]: one[i] for i in range(length)}

    @staticmethod
    def yellow(x):
        print('\033[033m{}\033[0m'.format(x))

    @staticmethod
    def red(x):
        print('\033[031m{}\033[0m'.format(x))


class ORM(Engine):
    """对象关系映射(Object Relational Mapping)"""
    def __init__(self, conn, Base):
        super().__init__(conn)
        _Session = sessionmaker(bind=self.engine)  # 创建ORM基类
        self.session = _Session()  # 创建ORM对象
        self.Base = Base
        self.create_all()

    def __del__(self):
        self.session.close()

    def create_all(self):
        self.Base.metadata.create_all(bind=self.engine)

    def add(self, Table, dt):
        self.session.add(Table(**dt))  # 添加到ORM对象
        self.session.commit()  # 提交

    def update(self, Table, condition, dt):
        """有则更新,没则插入"""
        q = self.session.query(Table).filter_by(**condition)
        if q.all():
            q.update(dt)  # 更新
            self.session.commit()  # 提交
        else:
            self.add(Table, dt)


class Oracle(ORM):
    def show_tables(self):
        for i in self.fetchone('SELECT t.table_name,t.num_rows FROM user_tables t'):
            print(*i)

    def show_create_table(self, tb=''):
        """查看表注释"""
        if tb:
            tb = tb.upper()
            self.yellow('表注释')
            sql = "SELECT comments FROM user_tab_comments WHERE table_name='%s'" % tb
            print(self.fetchall(sql)[0][0])
            self.yellow('字段注释')
            sql = "SELECT column_name,comments FROM user_col_comments WHERE table_name='%s'" % tb
            for i in self.fetchall(sql):print(i)
            self.yellow('建表语句')
            sql = "SELECT dbms_metadata.get_ddl('TABLE','%s')FROM dual" % tb
            print(self.fetchall(sql)[0][0].strip())
        else:
            sql = 'SELECT table_name,column_name,comments FROM user_col_comments ORDER BY table_name'
            for i in self.fetchall(sql):print(i)

    def drop(self, tb):
        sql = 'DROP TABLE %s PURGE' % tb
        self.yellow(sql)
        self.execute(sql)  # 彻底删表

    def truncate(self, tb):
        sql = 'TRUNCATE TABLE %s DROP STORAGE' % tb
        self.yellow(sql)
        self.execute(sql)  # 彻底清空表

    def recreate(self, tb='all'):
        """慎用!重建数据仓库"""
        tables = self.Base.metadata.tables.keys() if tb == 'all' else [tb]
        for table in tables:
            self.drop(table)
        self.create_all()

    def count(self, tb=None):
        if tb:
            return self.fetchall('SELECT COUNT(*) FROM ' + tb)[0][0]
        for tb in self.Base.metadata.tables.keys():
            print(tb, self.count(tb))

    def proportion_not_null(self, table, field=None):
        """非空占比"""
        if field:
            # oracle表和字段是有大小写的区别;若用双引号括起,就区分大小写;若冇,系统会默认转大写
            sql = '''
            SELECT
                t1.f1 amount,
                t1.f1/t2.f1 proportion
            FROM
                (SELECT COUNT(*)f1 FROM {table} WHERE "{field}" IS NOT NULL)t1,
                (SELECT COUNT(*)f1 FROM {table})t2
            '''.format(table=table, field=field.upper())  # 将双引号里面的字段名转成大写
            result = self.fetchall(sql)[0]
            print(field, result[0], '%.2f%%' % (result[1] * 100), sep=' '*6)
        else:
            sql = "SELECT column_name FROM user_tab_columns WHERE table_name='%s'" % table.upper()
            for i, in self.fetchall(sql):
                self.proportion_not_null(table, i)

    def proportion_group_by(self, table, field, prints=''):
        """单字段各项占比"""
        sql = '''
        SELECT
            t1.f2 fullname,
            t1.f1 amount,
            t1.f1/t2.f1 proportion
        FROM
            (SELECT COUNT(*)f1,"{field}"f2 FROM {table} GROUP BY "{field}")t1,
            (SELECT COUNT(*)f1 FROM {table})t2
        ORDER BY amount DESC
        '''.format(table=table, field=field.upper())  # 将双引号里面的字段名转成大写
        result = self.fetchall(sql)
        for i, j, k in prints and result:
            print(i, j, '%.2f%%' % (k*100), sep=' '*6)
        return result

    def discretize(self, table, field, n=10, start=0.0, end=1.0):
        """单字段离散化"""
        scope = (end - start) / n
        when = '\n'.join(
            "\t\t\tWHEN {field}>=%.2f AND {field}<%.2f THEN '[%.2f,%.2f)'".format(field=field) % (
                start+i*scope, start+(i+1)*scope, start+i*scope, start+(i+1)*scope)
            for i in range(n)
        )
        sql = '''
        SELECT {field},COUNT(1) FROM
        (
        SELECT CASE\n{when}
        END {field}
        FROM {table}
        )
        GROUP BY {field}
        ORDER BY {field}
        '''.format(table=table, field=field, when=when)
        for i in self.fetchone(sql):
            print(*i)

conf

Color

CONN = ('用户名', '密码', 'IP/ServiceName')
conn = '用户名/密码@IP/ServiceName'

正则表达式高亮

from corpora.oracle.cx import Analysis
from segment import tk, clean


class Highlight(Analysis):
    """文本字符串查询"""
    def instr(self, keyword, field, table):
        for i in super().instr(keyword, field, table):
            yield clean.replace_tag(i)

    def instr_highlight_s(self, keyword, field, table, half=54):
        tk.highlight_prints(self.instr(keyword, field, table), keyword, half)

    def regexp_instr(self, pattern, field, table):
        for i in super().regexp_instr(pattern, field, table):
            yield clean.replace_tag(i)

    def regexp_instr_highlight(self, pattern, field, table, max_len=23):
        tk.highlight_print_re(self.regexp_instr(pattern, field, table), pattern, max_len)

    def regexp_instr_highlight_s(self, pattern, field, table, half=54, max_len=23):
        tk.highlight_prints_re(self.regexp_instr(pattern, field, table), pattern, half, max_len)

sqlalchemy

Oracle编码环境

import os  # 解决【UnicodeEncodeError: 'ascii' codec can't encode character】问题
os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8'
# os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

Oracle专用字段

from sqlalchemy.dialects.oracle import VARCHAR2, NUMBER

建表写数据

from cx_Oracle import makedsn
from sqlalchemy import create_engine, Column, String, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 连接数据库(ORA-12505: TNS:listener does not currently know of SID given in connect descriptor)
ip = ''
port = ''
tnsname = ''  # 实例名
uname = ''  # 用户名
pwd = ''  # 密码
dsnStr = makedsn(ip, port, service_name=tnsname)
connect_str = "oracle://%s:%s@%s" % (uname, pwd, dsnStr)
# 创建连接引擎,这个engine是lazy模式,直到第一次被使用才真实创建
engine = create_engine(connect_str, encoding='utf-8')

# 创建对象的基类
Base = declarative_base()

class Student(Base):
    # 表名
    __tablename__ = 'student'
    # 表字段
    sid = Column(String(20), primary_key=True)
    age = Column(Integer)

# 建表(继承Base的所有表)
Base.metadata.create_all(bind=engine)

# 使用ORM操作数据库
Session = sessionmaker(bind=engine)  # 创建ORM基类
session = Session()  # 创建ORM对象
tb_obj = Student(sid='a6', age=18)  # 创建表对象
session.add(tb_obj)  # 添加到ORM对象(插入数据)
session.commit()  # 提交
session.close()  # 关闭ORM对象

# 删表(继承Base的所有表)
Base.metadata.drop_all(engine)

报错处理

DPI-1047: 64-bit Oracle Client library cannot be loaded
首先操作系统位数、python位数、cx_Oracle版本要对应上;另外可能缺【Visual C++】
每次装完后,要 重启pycharm和python
ORA-12170: TNS:Connect timeout occurred
打开终端ping一下
检查【主机名或IP地址】、【服务名或SID】、【用户名】和【密码】是否填对
中文乱码
encoding=‘utf8’
ORA-00972: identifier is too long
insert语句中出现 '之类的字符
解决方法:将可能报错的字符替换掉
ORA-64203: Destination buffer too small to hold CLOB data after character set conversion.
select TO_CHAR(long_text) from table_name,目标缓冲区太小,无法储存CLOB转换字符后的数据
解决方法:不在SQL用 TO_CHAR,改在Python中用 read(如上代码所示)
ORA-01704: string literal too long
虽然 CLOB可以保存长文本,但是 SQL语句有长度限制
解决方法:把超长文本保存在一个变量中(如上代码所示)
PLS-00172: string literal too long
字符串长度>32767(2 15-1)
解决方法:使用 '||'来连接字符串(如上代码所示)
ORA-00928: missing SELECT keyword
INSERT操作时,表字段命名与数据库内置名称冲突,如:ID、LEVEL、DATE等
解决方法:建立命名规范
ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
使用 sqlalchemy时的报错
原因可能是目标数据库是集群部署的,可以咨询一下DBA,或见上面代码 from cx_Oracle import makedsn
UnicodeEncodeError: 'ascii' codec can't encode character
使用 sqlalchemy时的报错,插入中文字符引起
解决方法是设置 os.environ['NLS_LANG']
ORA-03113: end-of-file on communication channel
oracle闲置超时,会失联
python连接oracle数据库 python连接oracle数据库 2019-06-04 环境:Windows8 python3.7+pycharm2019 oracle11g instantclient_18_5 首先要安装python3.7,pycharm,均可在官网下载安装最新版本,pycharm专业版需要破解 python有一个cx_Oracle的模块可以用来访问和操作Oracle数据库 ... 阅读详情

相关推荐

OmniDB 连接 ORACLE 报错提示DP-1047:Cannot locate a 32-bit Oracle Client library

使用 OmniDB 软件 连接Oracle数据库时 ,报错 Cannot locate a 32-bit Oracle Client library ; 在网上查看说这是由于Oracle客户端instanceclient, 系统, Python 三者版本位数不对应。 解决过程 首先查看数据库服务端的版本: SELECT * FROM V$VERSION 查询结果是64位 查看python版本: 也是64位; 按理说Oracle客户端instanceclient不匹配的话应该要报错 Canno

wj的博客 3427

开源oracle client,oracle client安装与配置

(一)安装Oracle client环境:windows7 64-bit、oracle client 64-bit(1)解压client安装包 (2)双击setup.exe,选择管理员,一直next (3)执行先决条件检查,有的电脑在状态栏会出现“Failure”的情况,点击右上角的“全部忽略”即可 (4)点击完成 (5)开始安装 (6)完成关闭 (7)可在所有程序中发现我们已经安装的client...

weixin_35995661的博客 780

python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案

操作系统,python3.5, oracle_11, 均为64位;plsql 正常连接。 也顺利安装了cx_oracle 6.3,但是python进行连接的时候就会报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: " 。   原因:         instantclient版本为32位,需...

guimaxingmc的博客 4万+

什么是环境变量?

前言在初学 Java 时,相信大家下载安装完 JDK 后的第一件事就是 「配置环境变量」,几乎所有的教程都会告诉你当你在命令行工具中输入了 java 命令和 javac 命令后看到类似如...

399

Python连接Oracle别再踩坑了!手把手教你用Instant Client解决DPI-1047报错(附Anaconda环境配置)

本文详细介绍了如何通过Oracle Instant Client解决Python连接Oracle时常见的DPI-1047报错问题,包括下载配置Instant Client、设置环境变量、Anaconda环境配置及TNS连接管理,帮助开发者快速搭建稳定的Oracle数据库连接环境。

weixin_30471561的博客 489

macos下用python使用cx_Oracle连接oracle数据库,报错cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client librar

File "/Users/lukezhi/Lucas/Lucas-Projects/PythonProj/hongDaoProjects/symptomCluster/extract_Dis_Sym_Umls.py", line 8, in &lt;module&gt;     conn=cx_Oracle.connect('umls/umls733@211.71.76.139:1521/orcl...

卢克治-BJTU-NLP-的博客 7425

python--连接oracle数据库

在进行数据库连接之前,一般都需要导入依赖的库,通过专门的库去处理对应的数据库连接,所以没安装对应的处理库的话,需要先进行安装、再导入,导入后即可正常使用。

weixin_43936332的博客 1万+

oracle-client

包含 oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

配置Oracle Client 登陆管理远程数据库

-------------------------配置Oracle client连接远程数据库------------------------- 众所周知,Oracle服务器是相当庞大的,功能当然也是最齐全的。Oracle Client主要就是产生SQLPLUS 命令,EXP和IMP命令。Orale服务器也是包含这个工具的。Oracle Client 相对Oracle 服务器来说,那还相当小了。本机不想安装巨大的oracle服务器,故而安装的是Client,对于我来说足够用了。

浴血重生-学习空间 1万+

ai获客系统功能代码

AI 获客系统是一个复杂的体系,以下为你提供一个简化的 Python 示例,聚焦于客户行为分析与销售线索筛选功能,模拟实现从多渠道收集数据后的初步处理流程。假设已有从官网、线上商城等渠道收集到的客户数据,以字典列表形式存储,每个字典包含客户基本信息及购买行为数据。通过分析客户购买频率与金额,筛选出高价值销售线索。python上述代码仅为基础示例,实际 AI 获客系统还涉及更复杂的数据采集、清洗、存储,以及运用机器学习算法进行深度客户洞察等功能。

weixin_ggwwsscc的博客 896

Wireshark抓包实战:5个CTF比赛中高频出现的流量分析技巧(附真实案例)

本文分享了Wireshark在CTF比赛和实战渗透中的五个核心流量分析技巧。内容涵盖从宏观统计概览锁定可疑目标、深度解析ICMP与HTTP等协议、追踪重组完整会话流,到利用字符串搜索和命令行工具进行自动化分析。掌握这些高阶技巧能显著提升分析海量网络流量的效率与精准度。

rrr55的博客 262

windows本地安装配置oracle客户端完整流程(截图版)

因为工作需要,需要通过本地oracle客户端将数据导入到远程服务器上的oracle数据库中。从csdn下了很多oracle客户端,都是属于精简版,缺少imp.exe文件,造成无法导入数据。所以最终从oracle官网下载了oracle客户端标准版,标准版的oracle客户端大小570Mb左右,地址;http://www.oracle.com/technetwork/database/en...

涤生大数据 10万+

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

Linux环境下Python连接Oracle

       最近公司要求在linux下对Mysql,Oracle进行增加用户,用户改密等操作。Mysql数据库实现起来比较简单,这个Oracle让我头疼了一阵。于是从网上查阅资料,经自己的测试以后终于成功,现将方法总结如下:python数据库接口python DB API支持非常多的数据库。python连接Oracle需要使用cx-Oracle。一、安装cx_Oracle1、下载组件:cx_Or...

center_line的博客 9165

把 SAP BTP Destination 写进 MTA:一段 com.sap.application.content 配置背后的部署编排学

MTA内容模块解析:SAP BTP中的声明式部署机制 本文详细解析了mta.yaml中com.sap.application.content模块在SAP BTP云环境中的作用。该模块通过声明式配置实现内容投递,无需编译或部署代码。核心功能包括: Destination创建:通过content-target:true标识将配置投递到Destination服务 HTML5应用部署:将静态资源投递到HTML5 Application Repository 安全集成:配置XSUAA服务实现OAuth2用户令牌交换

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

PCL 区域生长分割【2026最新版】

区域生长算法原理介绍、代码实现以及一个具体实验场景的应用案例进一步实现将分割结果的分类保存至本地文件夹。最近一次更新时间为:2026年5月4日。

点云侠的博客 40万+

python sqlalchemy连接oracle_Python连接Oracle之环境配置、实例代码及报错解决方法详解...

Oracle Client 安装1、环境日期:2019年8月1日公司已经安装好Oracle服务端Windows版本:Windows10专业版系统类型:64位操作系统,基于x64的处理器Python版本:Python 3.6.4 :: Anaconda, Inc.2、下载网址https://www.oracle.com/database/technologies/instant-client/dow...

weixin_39658318的博客 1053

系统架构设计(以飞控系统、航电系统、机电管理系统、电子电气架构为例)

系统架构涉及对系统的结构和行为进行高层次的描述。它包括系统的组成部分、这些部分之间的关系、与外部环境的交互方式,以及满足特定功能和非功能性需求的方法。系统架构定义了系统的总体设计蓝图,指导系统的开发、集成、部署和维护。系统架构设计的目的是通过合理的结构和设计原则,确保系统能够高效、稳定、安全地运行,满足当前和未来的需求,同时具备良好的维护性、扩展性和可持续性。良好的系统架构不仅能够提高系统的开发效率和运行性能,还能降低长期的维护和运营成本,支持系统的持续演进和技术更新。

qq_41854911的博客 3056

python连接oracle报错dpi 1047,Python连接Oracle时的报错

Python连接Oracle时的报错Python连接Oracle时的报错@[Python]Python连接Oracle时的报错今天在研究使用Python连接Oracle,找到了对应的范例文章:pyhton安装之cx_Oracle模块参考步骤完成后在优快云上用了别人的范例代码后跑不通,报错如下:DatabaseError Traceback ...

weixin_34593388的博客 1125

学Simulink--基础储能管理场景实例:基于Simulink的储能系统恒流-恒压(CC-CV)充电策略仿真

本文详细介绍了基于Simulink的储能系统恒流-恒压(CC-CV)充电策略仿真方法。CC-CV策略通过恒流阶段快速充电(CC阶段)和恒压阶段防过充(CV阶段)的协同控制,实现了充电效率与电池寿命的平衡。文章系统阐述了CC-CV工作原理、控制架构和Simulink建模步骤,包括Thevenin电池模型搭建、阶段切换逻辑实现和动态电流调节。仿真结果显示,该策略能在3.5小时内完成10Ah电池充电,电压超调<2%,SOC跟踪误差0.8%,能量效率96.2%,显著优于纯CC充电策略。最后提出了多阶段扩展、温

amy_mhd的博客 255

第30篇:Vibe Coding时代:LangGraph 评估体系实战,解决 Agent 效果只能凭感觉判断的问题

摘要: 本文提出了一套基于LangGraph的Agent评估体系,解决Agent优化缺乏量化指标的问题。评估框架包含6类核心指标(任务成功率、测试通过率、结构化输出等),并通过代码演示实现方案: 评估集设计:用datasets.py定义包含关键检查点的测试用例 Agent构建:通过agent.py模拟LangGraph工作流 评估器实现:在evaluator.py中完成用例执行、结果分析和指标计算 可视化报告:输出通过率、平均耗时等聚合指标及详细错误分析 该方案可快速验证Prompt改进、模型切换等优化效果

sundong_81的博客 37

Linux下python远程连接Oracle记录

连接远程Oracle记录 python 想远程访问 Oracle 数据库,需要依赖两个模块: Oracle Instant Client,(作用:代替完整的Oracle Clien); 根据系统配置,下载Oracle Instant Client,(此系统是Linux x86-64,可以输入 uname -a 命令来查看),所以以下两个文件:basic和sdk; instantclie...

tqywd的博客 1730

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

如何解决 pip install cx_Oracle 报错 未找到 Oracle Instant Client 问题

摘要: Python开发中连接Oracle数据库时,使用pip install cx_Oracle常因缺少Oracle Instant Client库报错(如DPI-1047)。本文提供跨平台解决方案: 安装Oracle Instant Client(核心步骤): macOS:下载对应架构版本,配置环境变量并创建软链接至~/lib Windows:解压至无空格路径(如C:\oracle),添加系统变量并重启PyCharm Linux:安装libaio1依赖后配置环境变量 验证安装:检查库文件是否存在,确保架

官方推荐:站内优质创作者 1924

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python连接Oracle时的报错

@[Python] Python连接Oracle时的报错 今天在研究使用Python连接Oracle,找到了对应的范例文章:pyhton安装之cx_Oracle模块 参考步骤完成后在优快云上用了别人的范例代码后跑不通,报错如下: DatabaseError Traceback (most recent call last) <ipython-input-5-c45d4d670d66> in <module> 1 i

weixin_45567524的博客 704

IEM模型,地表粗糙度模拟

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

python 配置 oracle instant client

而我本地是安装了PL/SQL developer的,图中的instant client也是设置过的,PL/SQL developer可以正常使用。那么如何设置让python cx_Oracle找到我之前的instant client,在。这篇文章中的做法是将instant client目录下的dll文件复制到python的Lib\site-packages目录下,经验证,确实可用。想用python连接oracle数据库,百度得知需要cx_Oracle这个第三方库。

little_kid_pea的博客 729

Linux上Python连接Oracle解决报错cx_Oracle.DatabaseError: DPI-1047

解决Linux上Python连接Oracle出现报错cx_Oracle.DatabaseError: DPI-1047的方法总结。

dltan 2万+
上一篇: 自写Python操作MySQL模块(二次封装)
下一篇: Python相对导入(附图)
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值