zoukankan      html  css  js  c++  java
  • Keras & Tensorflow 笔记

    Keras是一个高层神经网络API,Keras由纯Python编写而成并基于Tensorflow、Theano以及CNTK后端。Keras为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

    • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
    • 支持CNN和RNN,或二者的结合
    • 无缝CPU和GPU切换

    有串联式和函数式两种建模方式,串联式建模方式

    • 串联式Sequential:
    model = Sequential()
    model.add(Dense(32, input_dim=784))
    model.add(Activation('relu'))
    
    • 函数式:
    def model_name(input_shape, output_shape):
        inputs = Input(shape = input_shape, dtype = , name = '')
        x = Dense(64 , activation='relu')(inputs)
        x = Dense(64,activation='relu')(x)
        predictions = Dense(output_shape,activation='softmax')(x)
    
        model = Model(inputs=inputs, outputs=predictions)
        return model
    

    学习一般操作步骤

    from keras import Model ……

    1. Generate: model = Model(inputs = input, outputs = output)
    2. Compile:
      model.compile(配置优化器,学习率,误差等参数)
    3. Fit Train: model.fit(X_train, Y_train, (X_dev, Y_dev),metric = [])
    4. Evaluate test: model.predict(X_test, Y_test) fit和predict函数有返回值的,最好用一个变量来接住,方便查看预测过程中的变量信息history。

    Tricks and Snippets

    模型可视化

    命令行打印:keras自带的summary函数

    model.summary()

    调用库,打印保存图片

    使用方法:

    Keras.utils.plot_model plot_model(model,to_file='a.png')
    

    结果如下,还可以保存为pdf等格式

    PlotNeuralNet绘制latex风格的网络图

    例图:

    使用方法:

    1. 下载github源文件,安装pycore库,将目录中的python包,拷贝至/usr/local/lib/python3.7/site-packages/pycore/
    2. 根据example搭建网络结构的python文件
    3. 运行python文件生成filename.tex文件
    4. pdflatex filename.tex,此步骤需要提前拷贝源文件layers中sty文件至tex文件目录,用pdflaetx编译需要texlive环境,请提前安装。

    model.fit函数调用

    这个方法最为硬核,其中mandb还可以横纵向对比多个模型的各个参数,并方便debug和optimize
    使用方法:

    from rl.callbacks import WandbLogger
    import tensorboard
    model.fig(巴拉巴拉, callbacks = [函数])
    

    ``,在网页localhost可视化

    • TensorBoard
    • Mandb:callbacks=[WandbLogger()],需要提前进行wandb初始化并在config中定义需要log的变量。
      Tensorboard作者没有去尝试,这里就先贴一张Wandb的可视化结果:

    Netron软件

    下载安装,导入keras模型.h5即可食用,也支持tf、pytorch等多种模型,界面如下

    超参数调节

    超参数就是模型权重以外的其他参数,比如层种类,层深度、宽度,优化器类型、学习率大小等等,它们都影响着模型的表现和上限,超参数一动,就是一个新的模型了。但是超参数却没有像构建神经网络一样有可遵照的理论指导,一直以来都是从业人员的难点。
    虽然网上已经有很多关于超参数调节的帖子,但大多都为经验之谈,是研究人员在实践中摸索、发现并总结的。就像控制理论里最简单PID调节一样,三个参数就能调的人头大,有些模型遵照经验去调还可能不work。
    其实这点早就为我们想到了,作者找到了几个超参数调节器

    keras tunner

    根据验证集的表现自动优化超参数

    keras-lr-finder

    使用方法:安装python库keras_lr_finder

    代码:引用库,包装模型,绘制结果

    import keras_lr_finder
    
    # model is a Keras model
    lr_finder = LRFinder(model)
    
    # Train a model with batch size 512 for 5 epochs
    # with learning rate growing exponentially from 0.0001 to 1
    lr_finder.find(x_train, y_train, start_lr=0.0001, end_lr=1, batch_size=512, epochs=5)
    
    # Plot the loss, ignore 20 batches in the beginning and 5 in the end
    lr_finder.plot_loss(n_skip_beginning=20, n_skip_end=5)
    

    # Plot rate of change of the loss
    # Ignore 20 batches in the beginning and 5 in the end
    # Smooth the curve using simple moving average of 20 batches
    # Limit the range for y axis to (-0.02, 0.01)
    lr_finder.plot_loss_change(sma=20, n_skip_beginning=20, n_skip_end=5, y_lim=(-0.01, 0.01))
    

    利用scikit-learn交互网格搜索超参数

    设置备忘

    Keras下载的预训练数据存放目录

    root\.kerasmodels

    错误记录

    • 张量运算变量运算用内置函数,+ - 操作会把张量 转为 Tensorflow,报错
    • 实数,不用tf. 或者 K. 函数库运算,报错“张量”
    • 张量一定用内置函数,python支持@ + - 等操作,但是偶尔报错

    欢迎关注微信公众号“探物及理”
  • 相关阅读:
    HTML入门(一)
    WEB攻击手段及防御第2篇-SQL注入
    公司来了个新同事不会用 Lombok,还说我代码有问题!
    最流行的 RESTful API 要怎么设计?
    Spring Boot & Restful API 构建实战!
    分布式事务不理解?一次给你讲清楚!
    带着问题学 Kubernetes 架构!
    Linux 与 Unix 到底有啥区别和联系?
    Java虚拟机最多支持多少个线程?
    常用的 Git 命令,给你准备好了!
  • 原文地址:https://www.cnblogs.com/tolshao/p/keras--tensorflow-bi-ji.html
Copyright © 2011-2022 走看看