Google工程师亲授 Tensorflow2.0-入门到进阶

  • 第1章 Tensorflow简介与环境搭建
  • 第2章 Tensorflow keras实战
  • 第3章 Tensorflow基础API使用
  • 第4章 Tensorflow dataset使用
  • 第5章 Tensorflow Estimator使用与tf1.0
  • 第6章 卷积神经网络
  • 第7章 循环神经网络
  • 第8章 Tensorflow分布式
  • 第9章 Tensorflow模型保存与部署
  • 第10章 机器翻译

    加群免费领取全套学习资料

    课程以Tensorflow2.0框架为主体,以图像分类、房价预测、文本分类、文本生成、机器翻译、泰坦尼克生存预测等项目为依托

    讲解Tensorflow框架的使用方法,让学员获得灵活使用Tensorflow的能力同时学习到相关的深度学习/机器学习知识,达到初级深度学习工程师的水平

    更多资源分享如下:

    全面Python3入门+进阶资料

    Python3数据分析与挖掘建模实战

    Python分布式爬虫打造搜索引擎

    Python3入门机器学习  经典算法与应用

    Python Flask高级编程之RESTFul API前后端分离精讲

    基于Python玩转人工智能最火框架 TensorFlow应用实践

    异常处理的其他3个小技巧

    要点:

    1)主动抛出异常

    2)利用断言发现问题

    3)如何处理多个异常

    1.主动抛出异常

    当程序在发生某些状况的时候,我们希望程序能主动的抛出异常,一般我们用raise语句,抛出异常之后,若没有try/except的话就会扔给python解释器去处理

    基本语法:

    raise SomeException,args

    • 第一个参数SomeException 是触发异常的名字,必须是一个字符串,类或者实例

    • args 描述异常信息的元组,一般我们用字符串表示异常的原因

    for i in range(1,5):

    if i>3:

    raise ValueError,'i>3'

    else:

    print i

    >>

    1

    2

    3

    raise ValueError,'i>3'

    若我们想自己去处理抛出的异常,我们需要加上try/except

    try:

    for i in range(1,5):

    if i>3:

    raise ValueError,'i>3'

    else:

    print i

    except ValueError,e:

    print 'catch the value error:',e

    >>

    1

    2

    3

    catch the value error: i>3

    2.利用assert语句来发现问题

    和其他的主流语言c,c++一样,python也有断言,assert语句是一种有条件在程序代码中触发异常,主要是为了调试程序服务的,能快速方便的查找程序的异常,或者一些不恰当的输入.

    assert的用法如下:

    assert expression ,args

    • expression 是一个表达式

    • args 是对条件判断的描述信息

    也就是说如果表达式为假,就会触发异常,所以一般我们会把表达式写成我们认为正确的程序应该满足的条件,相当于我们代码块做的一条报警线,告诉你,正确路应该怎么走,一旦不满足正确的行为,就会响起警报 ,触发异常

    x=10

    y=20

    assert x==y ,'x not equal y'

    >>

        assert x==y ,'x not equal y'

    AssertionError: x not equal y

    上面的代码,我们设的警戒线是x==y,这个是正确的行为,一旦x不等于y, 就会抛出异常,它在执行的过程中其实相当于执行如下代码:

    x=10

    y=20

    if __debug__ and not x==y:

    raise AssertionError('x not equal y')

    >>

    raise AssertionError('x not equal y')

    AssertionError: x not equal y

    __debug__是Python内置的系统关键字,就像None一样,而且默认为True,只能读不能写.(也许有小伙伴会问我什么是内置的关键字可以看我的历史文章:'如果避开变量作用域的陷阱')

    有的同学说assert这么好,是不是可以多用错了:

    1).assert 虽然不错,但是不要滥用,断言是设计用来捕获用户自定义的约束, 而不是捕获程序本身的错误

    2).如果程序本身的异常能够处理就不要用断言,比如列表越界啊,类型不匹配啊,除数为0这样的错误

    3).还有处理用户的输入,最好用条件判断,不符合条件的时候输出错误信息就可以了.

    3.如何处理多个异常 

    比如我们在打开文件的时候,有可能会遇到各种异常,比如文件不存在啊,权限不够啊等等,我们希望能归类到一个元组里面,用一个代码块来处理所有不同的异常,可以用下面的方法:

    try:

        f=open('xxx.txt'):

        do_something(f)

    except (FileNotFoundError,PermissionError):

        handle_file_error()

    finally:

    f.close()

    这个是示例代码(这段代码不能运行),其中的FileNotFoundError,PermissionError都是继承OSError(关于类的概念我们后面的文章会详细讲)

      • 特别是有子类继承父类的时候,嵌套的时候,因为except是按照顺序进行的,只要有一个触发了,就不在往下检查了

      • 如果各个异常类之间具有继承关系,则子类应该写在前面,否则父类将会直接截获子类异常

    如果我们写成下面这样:

    try:

    f=open('missing')

    except OSError:

    print ('It failed')

    except FileNotFoundError:

    print ('File not found')

    想上面这样的情况,FileNotFoundError永远不会执行,因为父类OSError写在了前面.

猜你喜欢

转载自www.cnblogs.com/qiaoke6/p/11613287.html