成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【深度學習系列】關于PaddlePaddle的一些避“坑”技巧

企業動態
最近除了工作以外,業余在參加Paddle的AI比賽,在用Paddle訓練的過程中遇到了一些問題,并找到了解決方法,跟大家分享一下。

最近除了工作以外,業余在參加Paddle的AI比賽,在用Paddle訓練的過程中遇到了一些問題,并找到了解決方法,跟大家分享一下:


PaddlePaddle的Anaconda的兼容問題

  之前我是在服務器上安裝的PaddlePaddle的gpu版本,我想把BROAD數據拷貝到服務器上面,結果發現我們服務器的22端口沒開,不能用scp傳上去,非常郁悶,只能在本地訓練。本機mac的顯卡是A卡,所以只能裝cpu版本的,安裝完以后,我發現運行一下程序的時候報錯了:

1 import paddle.v2 as paddle
2 paddle.init(use_gpu=False,trainer_count=1)

   報錯:

1 Fatal Python error: PyThreadState_Get: no current thread
2 Abort trap: 6

 

  這讓我非常郁悶,因為之前我直接在服務器上裝沒有問題,但是我的數據不能傳上去,所以只能在本機裝一個,直接pip install paddlepaddle,初始化報錯。后來我發現我本機裝了anaconda,用anaconda的python運行paddle會有一些小問題,不過可以使用otool 和 install_name_tool對_swig_paddle.so進行修改就可以:

  1.運行otool,可以看到pip安裝之后的_swig_paddle.so依賴/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python,但實際系統中不存在該路徑

 
1 otool -L /anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so
2 /anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so:
3 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1445.12.0)
4 /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 58286.20.16)
5 /usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
6 /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
7 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
 

  2.利用install_name_tool來替換依賴

1 install_name_tool -change /usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python ~/anaconda/lib/libpython2.7.dylib ~/anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so

  3.替換成功后,可以看到第五條已經成功的換成anaconda下的路徑了

 
1 otool -L /anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so
2 /anaconda/lib/python2.7/site-packages/py_paddle/_swig_paddle.so:
3 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1445.12.0)
4 /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 58286.20.16)
5 /anaconda/lib/libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)
6 /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
7 /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.0.0)
 

  現在再運行paddle.init就不會有問題了

不過要注意一點的是:在第二步中,anaconda的路徑要寫絕對路徑。不能直接進去到anacona的上層目錄后直接寫/anaconda/lib...,如果這樣做,那么你換一個路徑再執行paddle.init還是會有問題,因為找不到你的anaconda的路徑。

 


 

PaddlePaddle數據類型與數據讀取

  我在這篇文章“【深度學習系列】PaddlePaddle之數據預處理”中寫過PaddlePaddle的基本數據類型與如何用自己的數據集進行訓練,但是還有很多同學給我發郵件問我這方面的問題,說在處理自己數據集的時候遇到了很多問題。下面我總結一下幾個被問到的問題:

  1.不明白什么時候用sequence數據

  我們知道paddle有四種數據類型:dense_vector、sparse_binary_vector、sparse_float_vector和integer,但是還有三種序列格式,對于dense_vector的話,它的序列格式是dense_vector_sequence,但是什么時候用dense_vector_sequence呢?

  如果你的數據是x = [1.0,2.0,3.0,4.0]這樣的,那么就應該用dense_vector,維度即為輸入數據的維度(這里我們假設是4),那么應該設置為:

  x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(4))

  如果你的數據是x = [ [1.0,2.0], [2.0,3.0], [3.0,4.0]],那么我們可以看到這個數據有三個時間步長,每個時間步的向量維度是2,應該設置為:

  x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector_sequence(2))

  同理,interger_value和interger_value_sequence也是同樣的處理方法,只不過向量里的元素由dense_vector中的float換成了int。

  2.不知道如何創建reader

  在數據預處理那篇文章中舉了兩個例子來說明如何創建自己的數據集,包括三種方式:reader、reader_creator和reader_decorator,針對于這個比賽,我們將數據解析后,轉換成data和label的形式,那么我們應該如何創建reader呢?其實有很多種方式,寫一個最簡單的方式。我們來創建一個reader creator:

1 def reader_creator(data,label):
2     def reader():
3         for i in xrange(len(data)):
4             yield data[i,:],int(label[i])
5     return reader

  在這里可以看到,使用了yield生成器來生成數據,分別生成同一個sample的data和label,返回的是一個reader函數,方便我們后面train的時候灌入數據。

  當然也有其他的方式可以創建,大家可以自行發揮。

  3.不知道怎么用創建好的reader訓練

  大家可能會覺得很奇怪,為什么我們創建了reader creator后要返回一個reader函數呢,其實我們是為了方便在訓練的時候調用,下面創建一個train_reader

train_reader = paddle.batch(paddle.reader.shuffle(
                reader_creator(data,label),buf_size=200),
                batch_size=16)

  我們上一步創建好的reader返回的數據放到paddle.reader.shuffle里進行數據混洗,就是把數據打散,buf_size表示我一次性把多少條數據放進來進行shuffle,可以自行設置,混洗好的數據放到paddle.batch里進行,以batch_size的量級批量灌倒模型里去訓練,注意如果使用sgd的話,batch_size不能設置的太大,會崩潰,親測 = =!

  同理,我們也可以創建val_reader,test_reader。

  創建完后,就可以放到trainer里訓練了

trainer.train(reader=train_reader,num_passes=20,event_handler=event_handler)

 

  還有一些關于模型訓練的參數設置技巧大家可以多嘗試,如果有很多相同的問題話,我會再總結了發出來。

 

責任編輯:張燕妮 來源: www.cnblogs.com
相關推薦

2017-09-20 15:07:32

數據庫SQL注入技巧分享

2018-03-26 20:14:32

深度學習

2018-04-02 10:45:11

深度學習PaddlePaddl手寫數字識別

2018-04-04 10:19:32

深度學習

2011-06-01 16:50:21

JAVA

2013-03-29 13:17:53

XCode調試技巧iOS開發

2012-05-21 10:13:05

XCode調試技巧

2021-06-08 06:13:16

React開發開發技術

2018-03-26 20:07:25

深度學習

2011-07-13 09:13:56

Android設計

2023-04-12 08:18:40

ChatGLM避坑微調模型

2021-06-30 07:19:35

微服務業務MySQL

2011-07-12 09:47:53

WebService

2011-10-26 20:55:43

ssh 安全

2011-05-23 18:06:24

站內優化SEO

2021-10-12 23:10:58

UnsafeJavaJDK

2018-04-09 10:20:32

深度學習

2013-04-07 10:40:55

前端框架前端

2009-06-18 09:51:25

Java繼承

2022-12-02 14:58:27

JavaScript技巧編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品视频免费观看 | 久草视频网站 | 一区二区三区四区国产 | 国产精品伦理一区二区三区 | 久久精品国产一区二区电影 | 黄色免费在线观看网站 | 久久一区二区精品 | 日韩一区二区在线视频 | 成人av网站在线观看 | av中文字幕在线观看 | 91香蕉视频在线观看 | 欧美激情视频一区二区三区免费 | 成人深夜福利 | 在线免费亚洲视频 | 欧美一区二区在线视频 | 成人小视频在线观看 | 久草精品视频 | 久久久国产一区二区三区四区小说 | 久久久久久国产精品久久 | 中文字幕视频在线 | 最新黄色毛片 | 成人在线观看免费爱爱 | 亚洲精品在线免费播放 | 91亚洲精选 | 一区二区在线不卡 | 在线观看特色大片免费网站 | 中文字幕亚洲精品 | 黄色在线免费观看 | 日韩免费看片 | 精品九九在线 | 亚洲国产电影 | 欧美一级在线免费观看 | 亚洲码欧美码一区二区三区 | 欧美日韩精品一区二区 | 美女在线观看av | 亚洲成人久久久 | 日本精品国产 | 久久在线| 亚洲人成人一区二区在线观看 | 国产91成人| 国产精品视频久久久久久 |