色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>數值算法/人工智能>

ios10中神經網絡分析

大小:0.5 MB 人氣:0 2017-10-10 需要積分:1
 長期以來,蘋果公司一直在其產品中使用了機器學習:Siri回答我們的問題,并供我們娛樂;iPhoto能在我們的照片中進行人臉識別;Mail app能檢測垃圾郵件。作為應用開發者,我們已經利用了蘋果的API提供的一些功能,如人臉檢測,并且從iOS10開始,我們將獲得能用于語音識別和SiriKit的高級API。
  有時候,我們可能想超越平臺內置API的限制,創造獨一無二的東西。但更多的時候,我們是使用了一些現成的庫或直接建于Accelerate或Metal的快速計算功能之上,推出自己的機器學習功能。
  例如,我的同事專為辦公室建立了一個錄入系統,只使用一臺可檢測人臉的iPad,然后在Slack投遞一個gif,并允許用戶通過自定義命令開門。
  ios10中神經網絡分析
  但是現在,我們有了用于神經網絡的第一方支持:在2016年的WWDC上,蘋果公司推出了兩個神經網絡的API,分別稱為基礎神經網絡子程序(BNNS)和卷積神經網絡(CNN)。
  機器學習和神經網絡
  AI先驅Arthur Samuel將機器學習定義為“沒有明確編程的情況下,給予計算機學習能力的研究領域”。人們用機器學習系統理解一些數據的意義,而這些數據不能很容易地使用傳統模型來描述。
  例如,編寫一段計算房子建筑面積的程序很容易,我們可以考慮到所有房間和其他空間的規模和形狀,但是卻不能在公式中計算房子的價值;而另一方面,機器學習系統卻非常適合解決這樣的問題。通過給系統提供已知的具體數據,如市場價值、房屋尺寸、臥室數量等,從而可以利用它預測價格。
  神經網絡是構建機器學習系統最常用的模型之一。早在半個多世紀前的1940年,已經發展了神經網絡的數學基礎,而上世紀80年代,并行計算才使其更為可行;并且到了2000年,人們對于深度學習的興趣又引發了神經網絡的回潮。
  神經網絡由多個層構造,其中每個層由一個或多個節點組成。最簡單的神經網絡具有三層:輸入、隱藏和輸出。輸入層節點可以代表圖像中的各個像素或一些其他參數;如果我們試著自動檢測照片的內容,輸出層節點則經常作為分類的結果,例如“狗”或“貓”;隱藏層節點配置為對輸入執行操作,或配置為應用激活函數。
  ios10中神經網絡分析
  層類型
  三種常見的層的類型為:池化(pooling)層、卷積層和全連接層。
  池化層通常通過使用輸入的最大值或平均值來匯集數據,降低其大小。一系列的卷積和池化層可以結合起來,用于將照片逐步提煉成越來越高層次的特征集合。
  卷積層將卷積矩陣用于圖像的每個像素,實現圖像變換。如果你已經用過Pixelmator或Photoshop濾鏡,那你很可能也用過了卷積矩陣。卷積矩陣通常是一個3×3或5×5的矩陣,被施加到輸入圖像的像素中,以計算輸出圖像中新的像素值。為獲得輸出像素值,我們就乘以原圖像中的像素值,并計算平均值。
  例如,該卷積矩陣用于圖像模糊:
  1 1 1 1 1 1 1 1 1
  而下面的矩陣能夠銳化圖像:
  0 -1 0 -15-10 -1 0
  神經網絡的卷積層使用卷積矩陣處理輸入,并產生下一層的數據。例如,提取圖像中的諸如邊緣特征的新特性。
  全連接層可以被認為是濾波器尺寸和原始圖像相同的卷積層。換句話說,你可以這么認為,全連接層是一個函數,能夠為每個像素分配權重,平均其結果,然后給出單個的輸出值。
  訓練和推理
  每一層都需要配置適當的參數。例如,卷積層需要輸入和輸出圖像的信息(規模、通道數目等),也需要卷積層參數(內核大小、矩陣等)。全連接層通過輸入和輸出向量、激活函數和權重來定義。
  要獲得這些參數,必須訓練神經網絡。需要以下幾步才能完成:通過神經網絡傳遞輸入,確定輸出,測量誤差(即實際結果與預測結果相差多遠),并通過反向傳播調整權重。訓練神經網絡可能需要數百、數千甚至成千上萬的樣本。
  目前,蘋果公司新的機器學習API,可用于構建只做推理的神經網絡,而不是訓練。這都是Big Nerd Ranch的功勞。
  Accelerate: BNNS
  第一個新的API是Accelerate框架的一部分,被稱為基礎神經網絡子程序(BNNS,Basic Neural Network Subroutines)。BNNS補充了BLAS(基礎線性代數子程序),并用于一些第三方的機器學習應用。
  BNNS在BNNSFilter類中定義層。Accelerate支持三種類型的層:
  卷積層(由BNNSFilterCreateConvolutionLayer函數創建)全連接層(BNNSFilterCreateFullyConnectedLayer)池化層(BNNSFilterCreatePoolingLayer)
  MNIST 數據庫是一個眾所周知的數據集,包含數以萬計的手寫數字,用于掃描和調整,以適應20乘20像素的圖像。
  一種處理圖像數據的方法是將圖像轉換成矢量,并使之通過一個全連接層。對于MNIST數據,一個20×20的圖像將成為400個值的矢量。下面展示了如何將手寫的數字“1”轉換為向量:
  
  下面是配置全連接層的實例代碼,該層將大小為400的矢量作為輸入,采用S形的激活函數,輸出矢量大小為25:
  // input layer deor BNNSVectorDeor i_desc = { .size= 400, .data_type = BNNSDataTypeFloat32, .data_scale = 0, .data_bias = 0, };// hidden layer deor BNNSVectorDeor h_desc = { .size= 25, .data_type = BNNSDataTypeFloat32, .data_scale = 0, .data_bias = 0, };// activation function BNNSActivation activation = { .function= BNNSActivationFunctionSigmoid, .alpha= 0, .beta= 0, };BNNSFullyConnectedLayerParameters in_layer_params = { .in_size = i_desc.size, .out_size = h_desc.size, .activation= activation, .weights.data= theta1, .weights.data_type = BNNSDataTypeFloat32, .bias.data_type = BNNSDataTypeFloat32, };// Common filter parameters BNNSFilterParameters filter_params = { .version= BNNSAPIVersion_1_0; // API version is mandatory};// Create a new fully connected layer filter (ih = input-to-hidden) BNNSFilter ih_filter = BNNSFilterCreateFullyConnectedLayer(&i_desc, &h_desc, &in_layer_params, &filter_params);float * i_stack = bir; // (float *)calloc(i_desc.size, sizeof(float));float * h_stack = (float *)calloc(h_desc.size, sizeof(float));float * o_stack = (float *)calloc(o_desc.size, sizeof(float));int ih_status = BNNSFilterApply(ih_filter, i_stack, h_stack);
  Metal!
  該部分會得到更多的Metal嗎?確實是的,因為第二個神經網絡API是Metal Performance Shaders(MPS)框架的一部分。Accelerate是在CPU上進行快速計算的框架,而Metal將GPU發揮了極致。Metal的特點是卷積神經網絡(CNN,Convolution Neural Network)。
  MPS自帶了一個類似的API集。
  創建卷積層需要使用MPSCNNConvolutionDeor和MPSCNNConvolution函數。MPSCNNPoolingMax將為池化層提供參數。全連接層由MPSCNNFullyConnected函數創建。激活函數由MPSCNNNeuron的子類定義:
  MPSCNNNeuronLinearMPSCNNNeuronReLUMPSCNNNeuronSigmoidMPSCNNNeuronTanHMPSCNNNeuronAbsolute
  BNNS和CNN的比較
  下表為Accelerate和Metal激活函數列表:
  Accelerate/BNNS
  Metal Performance Shaders/CNN
  BNNSActivationFunctionIdentity
  BNNSActivationFunctionRectifiedLinear MPSCNNNeuronReLU
  MPSCNNNeuronLinear
  BNNSActivationFunctionLeakyRectifiedLinear
  BNNSActivationFunctionSigmoid MPSCNNNeuronSigmoid
  BNNSActivationFunctionTanh MPSCNNNeuronTanH
  BNNSActivationFunctionScaledTanh
  BNNSActivationFunctionAbs MPSCNNNeuronAbsolute
  池化函數:
  Accelerate/BNNS
  Metal Performance Shaders/CNN
  BNNSPoolingFunctionMax MPSCNNPoolingMax
  BNNSPoolingFunctionAverage MPSCNNPoolingAverage
  Accelerate和Metal為神經網絡提供的一組函數功能非常相似,所以二者選擇取決于每個應用程序。GPU通常首選各種機器學習所需的計算,而數據局部性可能會導致Metal CNN的運行性能比Accelerate BNNS版本要差。如果神經網絡對已存入GPU的圖像進行操作,例如,使用MPSImage和新MPSTemporaryImage時,很明顯,這時更適合用Metal。
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

用戶評論

      ?
      主站蜘蛛池模板: 色一情一乱一伦一区二区三区 | 日韩亚洲人成在线 | 99热热在线精品久久 | 亚洲高清中文字幕免费 | 天天操夜夜噜 | 天天拍拍国产在线视频 | 青青视频国产色偷偷 | 欧美精品久久久久久久久大尺度 | 国模丽丽啪啪一区二区 | 丝瓜视频在线免费 | 亚洲三级精品 | 蜜臀AV999无码精品国产 | 四虎永久在线精品国产 | 成人在线视频免费观看 | 怡春院欧美一区二区三区免费 | 国产午夜精品AV一区二区麻豆 | 日本漂亮妈妈7观整有限中 日本片bbbxxx | 国内精品伊人久久久影院 | 中文字AV字幕在线观看 | 受喷汁红肿抽搐磨NP双性 | 国产剧情在线精品视频不卡 | 撕烂衣服扒开胸罩揉爆胸 | 2019一級特黃色毛片免費看 | 亚洲欧美中文日韩视频 | 666永久视频在线 | 九九热这里只有国产精品 | 羞羞漫画在线播放 | 亚洲三区视频 | 文中字幕一区二区三区视频播放 | 在线免费观看国产精品 | 国产精品一区二区欧美视频 | 日本午夜精品一区二区三区电影 | 成人国内精品久久久久影 | 国产亚洲精品久久久久久久 | 与邻居换娶妻子2在线观看 瑜伽牲交AV | 九九久久精品国产 | 鞋奴的视频VK | www.av一区| 精品国产乱码久久久久久免费流畅 | 美女久久久 | 99视频免费看 |