zoukankan      html  css  js  c++  java
  • ios MetalPerformanceShaders 使用总结

    MPSCNNConvolution

    1.初始化时传人 UnsafePointer<Float> 时要传入w,不能是 &(w[0]).否则w其实传入失败,卷积的结果是nan或inf.

    原因可能是 &(w[0])其实只引用了w[0]这一个元素,把w[0]当成整体来看.与C不同。。。

      let w:[Float] = xxxx   
      conv = MPSCNNConvolution(device: device,
                       convolutionDescriptor: convDesc,
                       kernelWeights: w, //!!!!! can not assign to &(w[0])
                       biasTerms: b,
                       flags: MPSCNNConvolutionFlags.none)
    

    2. MPSCNNConvolution的kernel只支持half类型,实测MPSImage的format只能是.unorm8 或.unorm16 .float16,.float32不支持 

    3. 权重的排列顺序:

    weights:[outputChannels][kernelHeight][kernelWidth][inputChannels],bias:[outputChannels]

    MPSImage

    1.内存排列顺序:

    a.slices == 1时

    channles >= 3 内存中排列为  [r g b a] [r g b a] [r g b a] ,a通道占位

    else  a通道不占位

    b.slices >1时

    最后一个slice不论多少个channels 都是 [r g b a] [r g b a] [r g b a],都占位

     

  • 相关阅读:
    MongoDB 释放磁盘空间 db.runCommand({repairDatabase: 1 })
    RK 调试笔记
    RK Android7.1 拨号
    RK Android7.1 移植gt9271 TP偏移
    RK Android7.1 定制化 itvbox 盒子Launcher
    RK Android7.1 双屏显示旋转方向
    RK Android7.1 设置 内存条作假
    RK Android7.1 设置 蓝牙 已断开连接
    RK Android7.1 进入Camera2 亮度会增加
    RK 3128 调触摸屏 TP GT9XX
  • 原文地址:https://www.cnblogs.com/mlj318/p/6593762.html
Copyright © 2011-2022 走看看