精华内容
下载资源
问答
  • 由于不少初学者不会判断电路究竟属于哪一种负反馈,这里我们就来详细介绍一下如何判断负反馈的类型。 1、电压负反馈与电流负反馈的判断 判断一个放大电路是电压负反馈和电流负反馈时,可以看一下,若反馈信号是直接...
  •  (3)判断反馈信号对输入信号是加强还是削弱。如果反馈信号增强了输入信号的作用,使放大电路的放大倍增加数为正反馈,反之为负反馈。  欢迎转载,信息来自维库电子市场网(www.dzsc.com) 来源:ks99
  • 负反馈放大电路从输出端的取样方式可以分为电压反馈和电流反馈 从输入端的接入电路...在判断电压反馈时,可以采用一种简便的方法,即根据电压反馈的定义——反馈信号与输出电压成比例,设想将放大电路的负载RL两端短路
  • 反馈电路

    千次阅读 2019-06-11 15:12:38
    概念性理解什么是反馈电路、什么是负反馈、什么是正反馈如何判断正负反馈? 一、反馈放大电路 基本放大电路中,有源器件(晶体管等)具有信号单向传递性,被放大信号从输入端输入放大电路以后输出,存在输入信号...

    概念性理解什么是反馈电路、什么是负反馈、什么是正反馈、如何判断正负反馈?

    一、反馈放大电路

    基本放大电路中,有源器件(晶体管等)具有信号单向传递性,被放大信号从输入端输入放大电路以后输出,存在输入信号对输出信号的单向控制;如果在电路中存在某些通路,将输出信号的一部分反馈送到放大器的输入端,与外部输入信号叠加,产生基本放大电路的净输入信号,实现输出信号对输入的控制,即构成了反馈。
    
    这里有几点:
    1、反馈信号和外部输入信号叠加,没有表明是相加、相减,从此就分开了负反馈、正反馈。
    2、不管反馈极性,都是放大电路。
    3、所谓“放大”从表面来看,似乎就是将信号的幅度由小变大,但是在电子技术中“放大”是这么理解的:
    A、“放大“的本质是实现能量的控制,即用能量比较小的输入信号控制能量比较大的输出信号。
    B、“放大“作用是针对变化量而言的。放大的对象是变化量。
    

    备注:
    放大电路中没有太多强调输入信号和输出信号的符号问题。

    二、反馈极性

    正、负反馈的说法对于初学者来说有很多种:
    1、反馈可分为负反馈和正反馈。前者使输出起到与输入相反的作用,使系统输出与系统目标的误差减小,系统趋于稳定;后者使输出起到与输入相似的作用,使系统偏差不断增大,使系统振荡,可以放大控制作用。
    2、若反馈信号使《净输入信号》减弱,则为负反馈;若反馈信号使净输入信号增强,则为正反馈。负反馈多用于改善放大期的功能;正反馈多用于振荡电路。
    3、反馈回来的信号如果使引入的信号增加则为正反馈,否则为负反馈。
    4、反馈是将放大器输出信号(电压或电流)的一部分或全部,回授到放大器输入端与输入信号进行比较(相加或相减),并用比较所得的有效输入信号去控制输出,这就是放大器的反馈过程.凡是回授到放大器输入端的反馈信号起加强输入原输入信号的,使输入信号增加的称正反馈.反之则反.
    5、如果反馈的信号通过相加点注入输入信号里后增强了原始信号,引起放大器的放大倍数增加,则是正反馈,否则就是负反馈。
    6、反馈有正、负之分。若引入反馈后使净输入信号Xid减小,即Xid比Xi 小,则称为负反馈。此时闭环放大倍数小于开环放大倍数,故负反馈使放大电路增益减小。若引入反馈后使净输入信号Xid增大,即Xid比Xi大,则称为正反馈。正反馈使放大电路增益提高。
    负反馈使输出起到与输入相反的作用,使系统输出与系统目标的误差减小,系统趋于稳定;正反馈使输出起到与输入相似的作用,使系统偏差不断增大,使系统振荡,可以放大控制作用。
    7、负反馈就是把放大器的输出信号反过来,再送回到输入端去,负反馈的“负”就是把信号反过来的意思。把信号反过来,就是将输入和输出信号相减,得到的是2者之间的差别,再经过放大器的放大将这种差别送到输出端。因为是反相的信号,所以就会将输出端与输入端的差别抵消掉,也就是减少了放大器的失真。理论上电信号的传输速度非常快,因此这种抵消可以瞬间完成,难以觉察。这是负反馈可以减少失真的原理。
    8、正反馈:输入量不变时,引入反馈后输出量变大了;负反馈:输入量不变时,引入反馈后输出量变小了。另一角度,正反馈:引入反馈后,使净输入量变大乐;负反馈,引入反馈后,使净输入量变小了。
    
    对于上面8种说法,都是一个意思,抽象的表达了正负反馈的概念。相对来说第6种说法更易理解。
    

    三、负反馈变正反馈

    负反馈原理仅仅是理论上的,是建立在器件的半理想化的基础上的,即只考虑了放大器增益会随频率升高而下降,没有考虑到放大器的输出信号和输入信号相比是有一定延迟的,即那个瞬间完成的抵消作用其实是不存在的。有关这个延迟的问题要讲的内容实在太多,以后有机会再讨论,这里只要知道这点就行了。
    可以想象,当输入信号的频率高到一个值的时候,经过延迟的输出信号被“反过来”送回放大器的输入端,恰好和输入信号是同相的,也就是说放大器的延迟抵消了信号反相,使得负反馈变成了正反馈!那么正反馈会造成什么呢?当然是加强了输入信号,而且当放大器的放大倍数大于1的时候,这种增强会反复加强,直到达到放大器的输出极限,这就是所谓的“自激”现象,自激现象有时是灾难性的,不仅仅导致放大器不能正常工作,而且有可能导致放大器中器件的损坏或者后面负载的烧毁。因此在进行放大器的设计的时候,一定要根据放大器的工作性能来计算放大器的工作频率范围,通过各种措施来防止放大器发生自激现象。
    
    注意:
    通过改变输入频率使得电路变为正反馈。
    

    四、正相、反相电路

    电子电路中的运算放大器,有同相输入端和反相输入端,输入端的极性和输出端是同一极性的就是同相放大器,而输入端的极性和输出端相反极性的则称为反相放大器。
    

    五、反馈电路公式
    基本公式在这里插入图片描述 表明了开环和闭环增益之间的关系。

    注意:
    1、该公式是在中频区推导出来的;
    2、净输入信号Xid = Xi - Xf,为什么是减法?
    3、A ̇和F ̇在高频区或低频区产生的附加相移达到了180°,使中频区的负反馈在高频区或低频区变成了正反馈,当满足了一定的幅值条件时,便产生了自激振荡。(两个条件)。另一种说法,单级和两级放大电路是稳定的,而三级或三级以上的负反馈放大电路,只要有一定的反馈深度,就可能产生自激振荡,因为在低频段和高频段可以分别找出一个满足相移为180度的频率(满足相位条件),此时如果满足幅值条件|AF|=1,则将产生自激振荡。
    4、反馈深度可以分为以下几种情况:
        (1)当|1+AF|远大于1时,此时的反馈就叫深度负反馈,此时的负反馈增益等于1/F。分压式共基极偏置放大电路就是一个深度负反馈放大电路;
        (2)当|1+AF|等于1时,则表明反馈效果为零;
        (3)当|1+AF|远小于1时,表明放大器的净输入量增大,放大倍数升高,这种反馈称为正反馈。多用于振荡器。
        (4)当|1+AF|等于0时,则表明闭环增益为无穷大,此时的放大器无输入量,也有输出量,放大器处于“自激振荡”状态,严重时放大电路不能正常工作,必须消除。
    
    注意:
    第三点、第四点说明了两种产生自己振荡的条件。
    

    六、提出问题

    1. 正相电路、反相电路、正反馈电路、负反馈电路之间的关系;
    2. 负反馈电路通过改变电路参数变为正反馈电路;
    3. 负反馈电路中基本参数开环放大倍数、闭环放大倍数、反馈系数的关系。
    

    七、好文章
    这是一篇学习过程中觉得不错的文章,大家可以详细阅读。

    反馈概念、反馈分类、判断反馈极性的3φ法

    八、请高手回复第六点提出的问题,谢谢!

    展开全文
  • 资深工程师教你如何选择运放

    千次阅读 2018-10-30 13:24:29
    工作在线性区就是工作在放大状态。 1、分析电路结构,判断电路的性质。...2、根据放大器的性质,套用公式计算放大倍数,再结合输入信号的电压范围、电源电压范围,判断输出信号电压是否超出运放最大输出电压。...

    工作在线性区就是工作在放大状态。
    1、分析电路结构,判断电路的性质。
    如:反相放大器、同相放大器、差分放大器、加法器、减法器工作在线性区;积分放大器、微分放大器、比较器工作在非线性区。二者的外围元件连接方式不同,尤其是负反馈元件的性质不同,非线性的反馈网络含有电容器。
    2、根据放大器的性质,套用公式计算放大倍数,再结合输入信号的电压范围、电源电压范围,判断输出信号电压是否超出运放最大输出电压。输出信号被电源电压限幅,即使是线性放大器的结构,输出信号与输入信号的关系也是非线性的。

    出处:http://m.elecfans.com/article/685803.html

    目前市场运放种类繁多,面对不同的使用条件和环境,是否都能选择一样的运放呢?没关系,这是很多电子工程师都会困惑的问题,接下来为你揭开运放选型的神秘面纱。

    该如何分析运放电路呢?

    在学习运放选型前,我们需要先来透测的学习运放电路的内部结构和原理,对于我们来说运算放大器是模拟电路中十分重要的元件,它能组成放大、加法、减法、转换等各种电路,我们可以运用运放的“虚短”和“虚断”来分析电路,然后应用欧姆定律等电流电压关系,即可得输入输出的放大关系等。

    由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压放大倍数都在80 dB以上。而运放的输出电压是有限的,一般在 10 V~14 V。因此运放的差模输入电压不足1 mV,两输入端近似等电位,相当于“短路”。开环电压放大倍数越大,两输入端的电位越接近相等。“虚短”是指在分析运算放大器处于线性状态时,可把两输入端视为等电位,这一特性称为虚假短路,简称虚短。显然不能将两输入端真正短路。

    由于运放的差模输入电阻很大,一般通用型运算放大器的输入电阻都在1MΩ以上。因此流入运放输入端的电流往往不足1uA,远小于输入端外电路的电流。故通常可把运放的两输入端视为开路,且输入电阻越大,两输入端越接近开路。“虚断”是指在分析运放处于线性状态时,可以把两输入端视为等效开路,这一特性称为虚假开路,简称虚断。显然不能将两输入端真正断路。

    下面本文用虚断和虚断方法来对实际的电路进行分析,如图1-1所示,是常见的反相比例运算放大电路:

     

     

    图1-1.方向比例运算放大电路

    在反相放大电路中,信号电压通过电阻R1加至运放的反相输入端,输出电压Vo通过反馈电阻Rf反馈到运放的反相输入端,构成电压并联负反馈放大电路。

    运放的同相端接地=0V,反相端和同相端虚短,所以也是0V,反相输入端输入电阻很高,虚断,几乎没有电流注入和流出,那么R1和Rf相当于是串联的,流过一个串联电路中的每一只组件的电流是相同的,即流过R1的电流和流过Rf的电流是相同的。

    根据欧姆定律:

    Is= (Vs- V-)/R1……......…(1)

    If= (V- - Vo)/Rf……...........(2)

    V- = V+ = 0 ……......………(3)

    Is= If ……………......………(4)

    求解后可能Vo== (-Rf/R1)*Vi

    在分析电路的过程中,暂时不用管运放的其他特性,就根据虚短和虚断的特性来分析。当然,若运放不工作在放大区时,不满足虚短和虚断发条件,不能使用此种方法来分析,如比较器。

    如下图1-2,是运放实现的加法器,用虚短和虚断的方法来分析此电路。

     

     

    图1-2.运放实现的加法器

    由于电路存在虚短,运放的净输入电压vI=0,反相端为虚地。

    vI=0,vN=0…………………............................(5)

    反相端输入电流iI=0的概念,通过R2与R1的电流之和等于通过Rf的电流故

    (Vs1 – V-)/R1 + (Vs2 – V-)/R2 = (V- –Vo)/Rf....(6)

    如果取R1=R2=R3,由a,b两式解得

    -Vout=Vs1+Vs………..................................……(7)

    式(7)中负号为反相输入所致,若再接一级反相电路,可消去负号。

    简言之,虚短是运放正输入端和负输入端的电压相等,近似短路;虚断是流入正负输入端的电流为0。只要掌握了这一点,再运用欧姆定律,即可很容易的分析同相比例放大电路,反向比例放大电路等常用的运放放大电路。

    运放具体该怎么选择呢?

    1、通用型运算放大器

    通用型运算放大器就是以通用为目的而设计的。这类器件的主要特点是价格低廉、产品量大面广,其性能指标能适合于一般性使用。例mA741(单运放)、LM358(双运放)、LM324(四运放),它们是目前应用最为广泛的集成运算放大器。

    2、精密运算放大器

    精密运算放大器一般指失调电压低于1mV的运放,对于直流输入信号,输入失调电压(VOS)和它的温漂小就行,但对于交流输入信号,我们还必须考虑运放的输入电压噪声和输入电流噪声,在很多应用情况下输入电压噪声和输入电流噪声显得更为重要一些。在传感器类型和(或)其使用环境带来许多特别要求时,例如超低功耗、低噪声、零漂移、轨到轨输入及输出、可靠的热稳定性和对数以千计读数和(或)在恶劣工作条件下提供一致性能的可再现性,运算放大器的选择就会变得特别困难。精密放大电路会多一些电源去耦,滤波等特殊设计的电路。主要区别在于运算放大器上,精密运算放大器的性能比一般运放好很多,比如开环放大倍数更大,CMRR更大,速度比较慢,GBW,SR一般比较小。失调电压或失调电流比较小,温度漂移小,噪声低等等。好的精密运放的性能远不是一般运算放大器可以比得,一般运放的失调往往是几个mV,而精密运放可以小到1uV的水平。要放大微小的信号,必须用精密运放,用了一般的运放,它自身都会带入很大的干扰。要通过外围电路改善,小幅或者微调可以,但无法大幅度或者彻底改变。最常用的精密运放就是OP07,以及它的家族,OP27,OP37,OP177,OPA2333。其他的还有很多,比如美国AD公司的产品,很多都是OPA带头的。

    3、高阻型集成运算放大器

    高阻型集成运算放大器的特点是差模输入阻抗非常高,输入偏置电流非常小,一般rid>(109~1012)W,IIB为几皮安到几十皮安。实现这些指标的主要措施是利用场效应管高输入阻抗的特点,用场效应管组成运算放大器的差分输入级。用FET作输入级,不仅输入阻抗高,输入偏置电流低,而且具有高速、宽带和低噪声等优点,但输入失调电压较大。常见的集成器件有LF356、LF355、LF347(四运放)及更高输入阻抗的CA3130、CA3140等。

    4、低温漂型运算放大器

    在精密仪器、弱信号检测等自动控制仪表中,总是希望运算放大器的失调电压要小且不随温度的变化而变化。低温漂型运算放大器就是为此而设计的。常用的高精度、低温漂运算放大器有OP-07、OP-27、AD508及由MOSFET组成的斩波稳零型低漂移器件ICL7650等。

    5、高速型运放

    高速型运放在快速A/D和D/A转换器、视频放大器中,要求集成运算放大器的转换速率SR一定要高,单位增益带宽BWG一定要足够大,像通用型集成运放是不能适合于高速应用的场合的。高速型运算放大器主要特点是具有高的转换速率和宽的频率响应。常见的运放有LM318、mA715等,其SR=50~70V/us,BWG>20MHz。

    6、低功耗型运放

    低功耗型运放由于电子电路集成化的最大优点是能使复杂电路小型轻便,所以随着便携运算放大器式仪器应用范围的扩大,必须使用低电源电压供电、低功率消耗的运算放大器相适用。常用的运算放大器有TL-022C、TL-060C等,其工作电压为±2V~±18V,消耗电流为50~250mA。目前有的产品功耗已达微瓦级,例如ICL7600的供电电源为1.5V,功耗为10mW,可采用单节电池供电。

     

     

    7、高压大功率型运算放大器

    高压大功率型运算放大器的输出电压主要受供电电源的限制。在普通的运算放大器中,输出电压的最大值一般仅几十伏,输出电流仅几十毫安。若要提高输出电压或增大输出电流,集成运放外部必须要加辅助电路。高压大电流集成运算放大器外部不需附加任何电路,即可输出高电压和大电流。例如D41集成运放的电源电压可达±150V,mA791集成运放的输出电流可达1A。

    相信通过上面的介绍,对不同使用条件下是否能使用同一种运放,显然是比较清楚的,实际选择集成运放时,还应考虑其他因素。例如信号源的性质,是电压源还是电流源;负载的性质,集成运放输出电压和电流的是否满足要求;环境条件,集成运放允许工作范围、工作电压范围、功耗与体积等因素是否满足要求。

    最后再赠送大家一些评价运放的小经验,评价集成运放性能的优劣,应看其综合性能。SR为转换率,单位为V/ms,其值越大,表明运放的交流特性越好;Iib为运放的输入偏置电流,单位是nA;VOS为输入失调 电压,单位是mV。Iib和VOS值越小,表明运放的直流特性越好。所以,对于放大音频、视频等交流信号的电路,选SR(转换速率)大的运放比较合适;对于处理微弱的直流信号的电路,选用精度比较的高的运放比较合适(既失调电流、失调电压及温飘均比较小)。在没有特殊要求的场合,尽量选用通用型集成运放,这样既可降低成本,又容易保证货源。当一个系统中使用多个运放时,尽可能选用多运放集成电路,例如LM324、LF347等都是将四个运放封装在一起的集成电路。

     

    运放正相与反相放大性能的差异

     

    本文主要是关于运放正相与反相放大的相关介绍,并着重对运放正相与反相放大性能的差异进行了详尽的阐述。

      运算放大器

      运算放大器(简称“运放”)是具有很高放大倍数的电路单元。在实际电路中,通常结合反馈网络共同组成某种功能模块。它是一种带有特殊耦合电路及反馈的放大器。其输出信号可以是输入信号加、减或微分、积分等数学运算的结果。 [1] 由于早期应用于模拟计算机中,用以实现数学运算,故得名“运算放大器”。运放是一个从功能的角度命名的电路单元,可以由分立的器件实现,也可以实现在半导体芯片当中。随着半导体技术的发展,大部分的运放是以单芯片的形式存在。运放的种类繁多,广泛应用于电子行业当中。

      运放如图有两个输入端a(反相输入端),b(同相输入端)和一个输出端o。也分别被称为倒向输入端非倒向输入端和输出端。当电压U-加在a端和公共端(公共端是电压为零的点,它相当于电路中的参考结点。)之间,且其实际方向从a 端高于公共端时,输出电压U实际方向则自公共端指向o端,即两者的方向正好相反。当输入电压U+加在b端和公共端之间,U与U+两者的实际方向相对公共端恰好相同。为了区别起见,a端和b 端分别用“-”和“+”号标出,但不要将它们误认为电压参考方向的正负极性。电压的正负极性应另外标出或用箭头表示。

      一般可将运放简单地视为:具有一个信号输出端口(Out)和同相、反相两个高阻抗输入端的高增益直接耦合电压放大单元,因此可采用运放制作同相、反相及差分放大器。

      运放的供电方式分双电源供电与单电源供电两种。对于双电源供电运放,其输出可在零电压两侧变化,在差动输入电压为零时输出也可置零。采用单电源供电的运放,输出在电源与地之间的某一范围变化。

      运放的输入电位通常要求高于负电源某一数值,而低于正电源某一数值。经过特殊设计的运放可以允许输入电位在从负电源到正电源的整个区间变化,甚至稍微高于正电源或稍微低于负电源也被允许。这种运放称为轨到轨(rail-to-rail)输入运算放大器。

      运算放大器的输出信号与两个输入端的信号电压差成正比,在音频段有:输出电压=A0(E1-E2),其中,A0 是运放的低频开环增益(如 100dB,即 100000 倍),E1 是同相端的输入信号电压,E2 是反相端的输入信号电压。

      运算放大器是用途广泛的器件,接入适当的反馈网络,可用作精密的交流和直流放大器、有源滤波器、振荡器及电压比较器。

      反相放大器

      电子电路中的运算放大器,有同相输入端和反相输入端,输入端的极性和输出端是同一极性的就是同相放大器,而输入端的极性和输出端相反极性的则称为反相放大器。反相放大器电路具有放大输入信号并反相输出的功能。

      反相放大器电路具有放大输入信号并反相输出的功能。“反相”的意思是正、负号颠倒。这个放大 器应用了负反馈技术。所谓负反馈,即将输出信号的一部分返回到输入,在图所示电路中,象把输出Vout经由R2 连接(返回)到反相输入端(-)的连接方法就是负反馈。

      运算放大器具有以下特点,当输出端不加电源电压时,正相输入端(+)和反相输入端(-)被认为施加了相同的电压,也就是说可以认为是虚短路。所以,当正相输入端 (+)为0V时,A点的电压也为0V。

      运算放大器的输入阻抗极高,反相输入端(-)中基本上没有电流。因此,当Ie经由A点流向R2时,I1和I2电流基本相等。由以上条件,对R2使用欧姆定律,则得出Vout=- I1xR2。I1为负是因为I2从电压为0V的点A 流出。换一个角度来看,当反相输入端(-)的输入电压上升时,输出会被反相,向负方向大幅度放大。由于这 个负方向的输出电压经由R2与反相输入端相连,因此,会使反相输入端(-)的电压上升受阻。反相输入端和正 相输入端电压都变为0V,输出电压稳定。

      通过这个放大器电路中输入与输出的关系来计算一下增益。增益是Vout和Vin的比,即 Vout/Vin= (-I1xR2) / (I1xR1) =- R2/R1。所得增益为-,表示波形反相。

      应用:

      积分器

      将原来反相放大器R2电阻,换成一颗电容器C2 , 此时输入信号Vi与输出信号Vo之关系,形成一积分关系。

      微分器

      将原来反相放大器R1电阻,换成一颗电电容器C ,此时输入信号Vi与输出信号Vo之关系,即变形成一微分关系。

      加法器

      若将反相放大器稍微变化一下,此时输入信号与输出信号Vo之关系,若R1 = R2 = R3 =。..= Rn = Rf,就可简化为Vo =-(V1+V2+V3+.。.+Vn),形成一加法关系。

      运放正相与反相放大性能的差异

      电子电路中的运算放大器,有同相输入端和反相输入端,输入端的极性和输出端是同一极性的就是同相放大 

      器,而输入端的极性和输出端相反极性的则称为反相放大器。

      

      

      

      运放的同相和反相区别:

      1、同相放大器的输入阻抗和运放的输入阻抗相等,接近无穷大,同相放大器的输入电阻取值大小不影响输入阻抗;而反相放大器的输入阻抗等于信号到输入端的串联电阻的阻值。因此当要求输入阻抗很高的时候就应选择同相放大器!

      2、同相放大器的输入信号范围受运放的共模输入电压范围的限制,反相放大器则无此限制。因此如果要求输入阻抗不高且相位无要求时,首选反相放大,因为反相放大只存在差模信号,抗干扰能力强,可以得到更大的输入信号范围。

      3、在设计中要求放大倍数相同的情况下尽量选择数值小的电阻配合,这样可以减小输入偏置电流的影响和分布电容的影响。如果很计较功耗,则要在电阻数值方面折中。

      结语

      关于运放正相与反相放大的相关介绍就到这了,如有不足之处欢迎指正。

    相关阅读推荐:工程师超简易方式理解运放——不学后悔

    相关阅读推荐:运算放大器内部构造及原理图解

    展开全文
  • 如何判断电压并联负反馈的输出电压的正负:假设信号源I1是电流源,假如上电瞬间还没有反馈,电流从运放负端进入,正端出来, 此时运放输出为负-如图所示。如果改变信号源的方向,可以改变输出电压的方向。如下图——...
    注意运算放大器的工作模式

    电流反馈?并联反馈?深入理解这个电路。。 

    2.看下边这个电路:

     

    如何判断电压并联负反馈的输出电压的正负:假设信号源I1是电流源,假如上电瞬间还没有反馈,电流从运放负端进入,正端出来, 此时运放输出为负-如图所示。如果改变信号源的方向,可以改变输出电压的方向。如下图——:

    此电路的输出电压为正,便于单片机ADC口电压检测,负电没法检测。 

     

    展开全文
  • Deep Learning with Python 第一篇:对电影评论进行正负面判断(二分类问题) [前七个步骤是按照书里面进行建模和...3、损失函数,即用于学习的反馈信号。 4、优化器,决定学习过程如何进行 接下来的例子使...

      Deep Learning with Python

    第一篇:对电影评论进行正负面判断(二分类问题)

    [前七个步骤是按照书里面进行建模和对比,最后是对任意评论进行正负面判断]

    基础知识:

    训练神经网络主要围绕以下四个方面。

    1、层,多个层组合成网络(或模型)。

    2、输入数据和相应的目标。

    3、损失函数,即用于学习的反馈信号。

    4、优化器,决定学习过程如何进行

    接下来的例子使用Keras深度学习框架实现。

    这个例子中,将电影评论的文字内容将其划分为正面和负面两种。

     

     

    然后就可以开始第一个实验了。

    在终端中输入jupyter notebook,进入Jupyter。

    首先加载IMDB数据集

    (第一行主要是为了再jupyter notebook中运行的时候能够使用matplotlib显示图像才添加的)

    %matplotlib inline
    from keras.datasets import imdb
    (train_data,train_labels),(test_data,test_labels)=imdb.load_data(num_words=10000)

    保留训练数据中前10000个最经常出现的单词。得到的向量数据较少,便于处理。运行之后会下载大概80M的数据。

    其中:train_data、test_data是由单词索引(每个索引代表一个单词)组成;

    train_label、test_label是由标签组成,每个标签代表对应的单词索引是负面的还是正面的(0表示负面,1表示正面)。

    # word_index是一个将单词映射为整数索引的字典
    word_index=imdb.get_word_index()       
    #键值颠倒,将整数索引映射为单词
    reverse_word_index=dict([(value,key) for (key,value) in word_index.items()])    
    #将评论阶码,减去了3是因为0、1、2是保留的索引(0:padding填充;1:start of sequence序列开始;2:unknown未知词)。
    decoded_review=" ".join([reverse_word_index.get(i-3,"?") for i in train_data[0]])  
    #得到的decoded_review是train_data[0]的原评论,print一下可以查看
    print(decoded_review)

    得到的评论:

    第二步、将整数序列编码为二进制矩阵

    #将整数序列编码为二进制矩阵
    import numpy as np
    def vectorize_sequences(sequences, dimension=10000):
        results = np.zeros((len(sequences), dimension))     #创建一个零矩阵
        for i, sequence in enumerate(sequences):
            results[i, sequence] = 1.       #将result[i]的制定索引设置为1
        return results
    x_train=vectorize_sequences(train_data)     #将训练数据向量化
    #比如x_train[0]中的内容是[0,1,1...,0,0],含义是train_data[0]中某个单词的索引数字为i,x_train[0][i]便等于1
    x_test = vectorize_sequences(test_data)
    y_train = np.asarray(train_labels).astype('float32')
    y_test = np.asarray(test_labels).astype('float32')
    print(x_train[0])

     

    第三步、将数据输入到神经网络中

    使用名为relu的激活函数

    #使用relu激活函数
    from keras import models
    from keras import layers
    model=models.Sequential()
    model.add(layers.Dense(16,activation='relu',input_shape=(10000,)))
    model.add(layers.Dense(16,activation='relu'))
    model.add(layers.Dense(1,activation='sigmoid'))

    第四步、编译模型

    三种方法:

    1.原始方法:

    model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])

    2.配置自定义优化器方案

    from  keras import optimizers
    
    model.compile(optimizer=optimizers.RMSprop(lr=0.001),loss='binary_crossentropy',metrics=['accuracy'])

     

    3.使用自定义的损失和指标

    from  keras import optimizers
    from keras import metrics
    model.compile(optimizer=optimizers.RMSprop(lr=0.001),loss='binary_crossentropy',metrics=[metrics.binary_accuracy])

    第五步、留出验证集

    #留出验证集,原始训练数据留出10000个样本作为验证集
    x_val=x_train[:10000]
    partial_x_train=x_train[10000:]
    y_val=y_train[:10000]
    partial_y_train=y_train[10000:]

    第六步、训练模型

    #训练模型,使用512个样本组成的小批量,将模型训练20个轮次
    history=model.fit(partial_x_train,partial_y_train,epochs=20,batch_size=512,validation_data=(x_val,y_val))

    第七步、绘制训练损失和验证损失

    #绘制训练损失和验证损失
    import matplotlib.pyplot as plt
    history_dict=history.history
    loss_values=history_dict['loss']
    val_loss_values=history_dict['val_loss']
    epochs=range(1,len(loss_values)+1)
    plt.plot(epochs, loss_values, 'bo', label='Training loss')
    plt.plot(epochs, val_loss_values, 'b', label='Validation loss')
    plt.title('Training and validation loss')
    plt.xlabel('Epochs')
    plt.ylabel('Loss')
    plt.legend()
    plt.show()

    #绘制训练精度和验证精度
    plt.clf()
    acc = history_dict['acc']
    val_acc = history_dict['val_acc']
    plt.plot(epochs, acc, 'bo', label='Training acc')
    plt.plot(epochs, val_acc, 'b', label='Validation acc')
    plt.title('Training and validation accuracy')
    plt.xlabel('Epochs')
    plt.ylabel('Accuracy')
    plt.legend()
    plt.show()

    可见,虽然训练集的精度不断提高,但是测试集的精度却没有相应增加,这是过拟合的表现,模型在训练集上表现虽好,但是在从未见过的数据上表现却不尽如人意。

     

    在书中,数据在第四轮表现最好,但是在我得到的图中,似乎第二轮的表现更好,接下来我们分别尝试训练2轮和训练4轮,看看得到的精确度具体是多少。

    训练2轮的正确率:87.74

    训练4轮的正确率:87.33

    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(16, activation='relu'))
    model.add(layers.Dense(1, activation='sigmoid'))
    model.compile(optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy'])
    model.fit(x_train, y_train, epochs=4, batch_size=512)
    results = model.evaluate(x_test, y_test)

     

    接下来尝试一下输入评论来得到对该评论的预测,使用的模型是上述的训练两轮的模型。

      新建一个文件:

    from keras.datasets import imdb
    (train_data, train_labels), (test_data, test_labels) = imdb.load_data(
    num_words=10000)
    
    word_index = imdb.get_word_index()
    reverse_word_index = dict(
    [(value, key) for (key, value) in word_index.items()])
    decoded_review = ' '.join(
    [reverse_word_index.get(i - 3, '?') for i in train_data[0]])
    
    import numpy as np
    
    def vectorize_sequences(sequences, dimension=10000):
        results = np.zeros((len(sequences), dimension))
        for i, sequence in enumerate(sequences):
            results[i, sequence] = 1
        return results
    x_train=vectorize_sequences(train_data)     #将训练数据向量化
    x_test = vectorize_sequences(test_data)
    y_train = np.asarray(train_labels).astype('float32')
    y_test = np.asarray(test_labels).astype('float32')
    
    #尝试的评论(我这里是在豆瓣直接搜索了一个差评然后翻译得到。)
    test_comment="5 points, the original script is really excellent, so that every modification and localization of the domestic version, let a person feel superfluous and destroy the rhythm. Especially a few key turns and breaking points, the play is not completely out, a bit of a waste of such a good set. The original version is actually a set of chamber thriller, and every change makes people jumpy. This time, the dramatic treatment and all kinds of self-righteous chicken soup and warmth have destroyed the original plot depth. And is it really the cell phone that is to blame? It's also strange. Finally, as an actress, mengyao xi has a long, long, long way to go."
    
    #将句子通过索引变成整数序列
    testcomment=test_comment.split()
    mycomment=[]
    mycomment.append(1)
    for i in testcomment:
        if word_index.get(i):
            if(word_index[i]+3<10000):
                mycomment.append(word_index[i]+3)
        else: 
            mycomment.append(2)
    
    #将序列向量化
    my_comment = vectorize_sequences([mycomment])
    
    #训练模型
    from keras import models
    from keras import layers
    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
    model.add(layers.Dense(16, activation='relu'))
    model.add(layers.Dense(1, activation='sigmoid'))
    model.compile(optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy'])
    model.fit(x_train, y_train, epochs=2, batch_size=512)
    results = model.evaluate(x_test, y_test)
    
    #预测评论的正面和负面
    print(model.predict(my_comment))

    我得到的结果是[[ 0.22343622]],说明很可能差评。

     

    代码:https://github.com/GiveMeLuna/deeplearning.git

    展开全文
  • 三极管放大电路基本原理

    千次阅读 2020-09-15 21:13:33
    三极管放大电路的原理放大电路的基本要求放大电路的基本框图及组成放大电路的主要技术指标1、放大倍数Au:2、输入电阻Ri:3、输出电阻Ro:3、通频带BW:放大电路中反馈的有无如何判断 所谓“放大”从表面来看,似乎...
  • 自适应滤波器

    2013-12-21 19:56:02
    价值函数是滤波器最佳性能的判断准则,比如减小输入信号中的噪声成分的能力。 随着数字信号处理器性能的增强,自适应滤波器的应用越来越常见,时至今日它们已经广泛地用于手机以及其它通信设备、数码录像机和数码...
  • 4:如何判断三极管的 cbe 极?以及如何判断mos管的gds a 直接查资料, b 用万用表二极管档,p接正,n接负时有数字显示,所以有测量几次,就可以知道是pnp型还是npn型,b端由此可以断定了。然后用万用表的hef档测量...
  • 智能扫地机VHDL FPGA

    2012-07-12 19:02:40
    如何判断机器卡死 3、项目规划:  功能、指标、规模 功能: 1. 地图:利用键盘上下左右画地图 2 环境输入:利用上下键加减输入湿度以及温度 3 垃圾设置和污水设置:通过键盘方向控制移动动点放置垃圾以及污水...
  • 只有放大直流信号时才有的负反馈 C.在直流通路中的负反馈 二、判断题(共10分) 1. 本征半导体温度升高后两种载流子的浓度仍然相等。 ( ) 2. 若晶体管的集电极与发射极互换,则仍有较大的放大作用。 ( ) 3. 差...
  • 模电基本题型复习

    2014-12-26 13:40:05
    一、判断图示各电路的反馈类型,若是负反馈,写出各个电路的反馈系数 表达式,并写出深度负反馈条件下电路的闭环电压放大倍数 的表达式,。写出每个负反馈电路的特点。设图中所有电容对交流信号均可视为短路。 二...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    嵌入式DSP专门用来处理对离散时间信号进行极快的处理计算,提高编译效率和执行速度。在数字滤波、FFT(Fast Fourier Transform)、频谱分析、图像处理的分析等领域,DSP正在大量进入嵌入式市场。 18. MCU在...
  • 德力西产品说明.pdf

    2019-10-10 18:41:58
    输入信号 运行方式 键盘/ 端子 /RS485通讯 可通过多种方式随时切换 频率设定 模拟电压给定、模拟电流给定、脉冲给定 、键盘给定、RS485通讯给定 可通过多种方式随时切换 ...
  • 思科网络技术学院教程CCNA1

    热门讨论 2013-05-28 06:37:53
    这种区分的依据是思科网络学院的指导及在不同教学环境的教师的反馈。需要重申的是,课程中的所有主题都包含在本书中(以文字的形式或在光盘中)。  每章的日标列出核心的主题。而一些章开始的“附加的感兴趣的主题”...
  • 除了提供大屏系统外,还将每个模块都做了独立的模块示例界面,每个模块都可以独立学习使用,里面用到的控件也单独做了控件示例界面,方便学习每个控件如何使用,考虑着实周到! 超级详细的开发和使用手册,其中包括...
  • (5) 进化需求 客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件...
  • modbus通信协议

    热门讨论 2010-08-06 15:26:22
    标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。 控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。...
  • 在此Repo中,我们展示了如何用 PaddlePaddle来解决常见的机器学习任务,提供若干种不同的易学易用的神经网络模型。PaddlePaddle用户可领取免费Tesla V100在线算力资源,高效训练模型,每日登陆即送12小时,连续五天...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

如何判断反馈信号