zoukankan      html  css  js  c++  java
  • 【Tool】 深度学习常用工具

    1. caffe 网络结构可视化

    http://ethereon.github.io/netscope/quickstart.html

    将网络结构复制粘贴到左侧的编辑框,按Shift+Enter就可以显示出你的网络结构

    2. caffe计算图片的均值

    使用caffe自带的均值计算工具

    ./build/tools/compute_image_mean ROOT_OF_IMAGES  ROOT_TO_PLACE_MEAN_FILE

    第一个参数:需要计算均值的图片路径,格式为LMDB训练数据

    第二个参数:计算出来的结果保存路径

    ./build/tools/compute_image_mean project/SqueezeNet/SqueezeNet_v1.0/test_lmdb project/SqueezeNet/SqueezeNet_v1.0/test_mean.binaryproto

    python格式的均值计算 

    先用LMDB格式数据,计算出二进制格式均值,然后转换成python格式均值

    #!/usr/bin/env python
    import numpy as np
    import sys,caffe
    
    if len(sys.argv)!=3:
        print "Usage: python convert_mean.py mean.binaryproto mean.npy"
        sys.exit()
    
    blob = caffe.proto.caffe_pb2.BlobProto()
    bin_mean = open( sys.argv[1] , 'rb' ).read()
    blob.ParseFromString(bin_mean)
    arr = np.array( caffe.io.blobproto_to_array(blob) )
    npy_mean = arr[0]
    np.save( sys.argv[2] , npy_mean )  

    脚本保存为convert_mean.py

    调用格式:

    sudo python convert_mean.py mean.binaryproto mean.npy

    mean.npy是我们需要的python格式二进制文件

    3. 可视化训练过程中的 training/testing loss

    •  NVIDIA-DIGITS: caffe训练可视化工具(数据准备,模型选择,学习曲线可视化,多GPU训练
    • 训练时 --solver=solver.ptototxt 2>&1 | tee train.log, 然后使用 ./tools/extra/parse_log.py train.log将其转为两个csv 文件分别包括train loss和test loss, 然后使用以下脚本画图:
    import pandas as pd
    from matplotlib import *
    from matplotlib.pyplot import *
    
    train_log = pd.read_csv("./lenet_train.log.train")
    test_log = pd.read_csv("./lenet_train.log.test")
    _, ax1 = subplots(figsize=(15, 10))
    ax2 = ax1.twinx()
    ax1.plot(train_log["NumIters"], train_log["loss"], alpha=0.4)
    ax1.plot(test_log["NumIters"], test_log["loss"], 'g')
    ax2.plot(test_log["NumIters"], test_log["acc"], 'r')
    ax1.set_xlabel('iteration')
    ax1.set_ylabel('train loss')
    ax2.set_ylabel('test accuracy')
    savefig("./train_test_image.png") #save image as png
    

      

  • 相关阅读:
    成年人的快乐
    90后家庭的宠物
    计算机科学与技术易错知识点需记篇
    微机原理与接口编程技术2020 考试大纲知识点超细总结
    84.手写一个类的继承
    83.对前端路由的理解?前后端路由的区别
    81.$(document).ready()方法和window.onload有什么区别?
    80.浏览器是如何渲染页面的
    77、常用的拖拽事件
    75.json和jsonp的区别?
  • 原文地址:https://www.cnblogs.com/vincentcheng/p/8515111.html
Copyright © 2011-2022 走看看