Source From Here
Question
Docker 遇到 container 的狀態是 Dead,想要移除卻無法移除,該怎麼做?
Docker 無法移除死掉的 Container 修復
Docker 都是 mount storage 在 /var/lib/docker,所以可以直接在 /var/lib/docker/ 的 containers 、volumes 找到 container id,然後來做 umount 或 rm -fr 的動作。此篇文章有提到幾種解法:Docker - Cannot remove dead container,下述整理自此篇:
方法1
這個方法直接移除檔案系統上的 image/container 資料夾:
方法2
遇到:
找到 mount 的 location 後 umount 它 再移除.
方法3
Docker 1.13 後,可以採用下述作法:
方法4
此方法用在 /var/lib/docker 裡面找不到 container id,於是建立起來讓程式刪除
docker rm 若刪不到資料,可能是建立起來就自動被刪掉了
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
2019年8月27日 星期二
[ ML 文章收集 ] Ch9 - 使用 Scikit-Learn 調用 Keras 的模型
Source From Here
Preface
scikit-learn 是最受歡迎的 Python 的機器學習庫本章我們將使用 scikit-learn 調用 Keras 生成的模型. 本章將:
Introduction
Keras 在深度學習很受歡迎,但是只能做深度學習:Keras 是最小化的深度學習庫,目標在於快速搭建深度學習模型基於 SciPy 的 scikit-learn,數值運算效率很高,適用於普遍的機器學習任務,提供很多機器學習工具,包括但不限於:
Keras 為 scikit-learn 了封裝 KerasClassifier:
使用 Cross Validation 驗證深度學習模型
Keras 的 KerasClassifier 與 KerasRegressor 兩個類接受 build_fn 參數,傳入函數用以建立模型; 接著我們加入 epochs=150 與 batch_size=10 這兩個參數:這兩個參數會傳入模型的 fit()。方法我們用 scikit-learn 的 StratifiedKFold 類進行 10-Fold Cross validation,測試模型在未知數據的性能,使用並 cross_val_score() 函數檢測模型,打印結果:
- train.py
Notes. The dataset "pima-indians-diabetes.csv" can be downloaded here.
每輪訓練會輸出一次結果,加上最終的平均性能:
比起手工測試,使用 scikit-learn 容易的多。
使用 GridSearch 調整深度學習模型的參數
使用 scikit-learn 封裝 Keras 的模型十分簡單, 進一步想:我們可以給 fit() 方法傳入參數,KerasClassifier 的 build_fn 方法也可以傳入參數可以利用這點進一步調整模型。我們可以用 GridSearch 測試不同參數的性能:create_model() 函數可以傳入optimizer:init 參數,雖然都有默認值, 但我們可以用不同的優化算法和初始權優化網絡. 具體來說, 我們希望搜索:
所有的參數組成一個字典,傳入 scikit-learn 的 GridSearchCV 類:GridSearchCV 類 會對每組參數(2×3×3×3)進行訓練,進行 3-Fold Cross validation. 這樣做的計算量巨大! 耗時巨長如果模型小還可以取一部分數據試試看,因為這裡的 數據集 與 網絡 都不大(1000 個 數據內,9個參數)所以可以在可接受時間下輸出最好的參數和模型,以及平均值:
- train_gs.py
用 CPU 差不多要 5分鐘,結果如下我們發現使用均勻分佈初始化。RMSPro 優化算法,150 epochs,batch size 為 5 時效果最好,正確率約 75%:
Supplement
* Keras Doc - Wrappers for the Scikit-Learn API
* Ch10 - 多類花朵分類 (iris dataset)
* ML CheatSheet - Optimizer
Preface
scikit-learn 是最受歡迎的 Python 的機器學習庫本章我們將使用 scikit-learn 調用 Keras 生成的模型. 本章將:
* 使用 scikit-learn 封裝 Keras 的模型
* 使用 scikit-learn 對 Keras 的模型進行交叉驗證
* 使用 scikit-learn,利用網格搜索調整 Keras 模型的 Hyperparameter
Introduction
Keras 在深度學習很受歡迎,但是只能做深度學習:Keras 是最小化的深度學習庫,目標在於快速搭建深度學習模型基於 SciPy 的 scikit-learn,數值運算效率很高,適用於普遍的機器學習任務,提供很多機器學習工具,包括但不限於:
* 使用 K-Fold Cross validation
* Grid Search for hyperparameter
Keras 為 scikit-learn 了封裝 KerasClassifier:
* keras.wrappers.scikit_learn.KerasClassifier(build_fn=None, **sk_params): which implements the Scikit-Learn classifier interface,
* keras.wrappers.scikit_learn.KerasRegressor(build_fn=None, **sk_params): which implements the Scikit-Learn regressor interface.
使用 Cross Validation 驗證深度學習模型
Keras 的 KerasClassifier 與 KerasRegressor 兩個類接受 build_fn 參數,傳入函數用以建立模型; 接著我們加入 epochs=150 與 batch_size=10 這兩個參數:這兩個參數會傳入模型的 fit()。方法我們用 scikit-learn 的 StratifiedKFold 類進行 10-Fold Cross validation,測試模型在未知數據的性能,使用並 cross_val_score() 函數檢測模型,打印結果:
- train.py
- #!/usr/bin/env python
- # MLP for Pima Indians Dataset with 10-fold cross validation via sklearn
- from keras.models import Sequential
- from keras.layers import Dense
- from keras.wrappers.scikit_learn import KerasClassifier
- from sklearn.model_selection import StratifiedKFold
- from sklearn.model_selection import cross_val_score
- import numpy
- import pandas
- # Function to create model, required for KerasClassifier
- def create_model():
- # create model
- model = Sequential()
- model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
- model.add(Dense(8, init='uniform', activation='relu'))
- model.add(Dense(1, init='uniform', activation='sigmoid'))
- # Compile model
- model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
- return model
- # fix random seed for reproducibility
- seed = 7
- numpy.random.seed(seed)
- # load pima indians dataset
- dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
- # split into input (X) and output (Y) variables
- X = dataset[:,0:8]
- Y = dataset[:,8]
- # create model
- model = KerasClassifier(build_fn=create_model, epochs=150, batch_size=10)
- # evaluate using 10-fold cross validation
- kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
- results = cross_val_score(model, X, Y, cv=kfold)
- print(results.mean())
每輪訓練會輸出一次結果,加上最終的平均性能:
...
Epoch 146/150
692/692 [==============================] - 0s 67us/step - loss: 0.4750 - acc: 0.7717
Epoch 147/150
692/692 [==============================] - 0s 66us/step - loss: 0.4763 - acc: 0.7803
Epoch 148/150
692/692 [==============================] - 0s 66us/step - loss: 0.4776 - acc: 0.7688
Epoch 149/150
692/692 [==============================] - 0s 66us/step - loss: 0.4773 - acc: 0.7673
Epoch 150/150
692/692 [==============================] - 0s 66us/step - loss: 0.4774 - acc: 0.7702
76/76 [==============================] - 0s 2ms/step
0.7408578287970505
比起手工測試,使用 scikit-learn 容易的多。
使用 GridSearch 調整深度學習模型的參數
使用 scikit-learn 封裝 Keras 的模型十分簡單, 進一步想:我們可以給 fit() 方法傳入參數,KerasClassifier 的 build_fn 方法也可以傳入參數可以利用這點進一步調整模型。我們可以用 GridSearch 測試不同參數的性能:create_model() 函數可以傳入optimizer:init 參數,雖然都有默認值, 但我們可以用不同的優化算法和初始權優化網絡. 具體來說, 我們希望搜索:
* 優化算法:搜索權重的方法
* 初始權重:初始化不同的網絡
* 訓練次數:對模型訓練的次數
* 批次大小:每次訓練的數據量
所有的參數組成一個字典,傳入 scikit-learn 的 GridSearchCV 類:GridSearchCV 類 會對每組參數(2×3×3×3)進行訓練,進行 3-Fold Cross validation. 這樣做的計算量巨大! 耗時巨長如果模型小還可以取一部分數據試試看,因為這裡的 數據集 與 網絡 都不大(1000 個 數據內,9個參數)所以可以在可接受時間下輸出最好的參數和模型,以及平均值:
- train_gs.py
- #!/usr/bin/env python
- # MLP for Pima Indians Dataset with grid search via sklearn
- from keras.models import Sequential
- from keras.layers import Dense
- from keras.wrappers.scikit_learn import KerasClassifier
- from sklearn.model_selection import GridSearchCV
- import numpy
- import pandas
- # Function to create model, required for KerasClassifier
- def create_model(optimizer='rmsprop', init='glorot_uniform'):
- # create model
- model = Sequential()
- model.add(Dense(12, input_dim=8, init=init, activation='relu'))
- model.add(Dense(8, init=init, activation='relu'))
- model.add(Dense(1, init=init, activation='sigmoid'))
- # Compile model
- model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
- return model
- # fix random seed for reproducibility
- seed = 7
- numpy.random.seed(seed)
- # load pima indians dataset
- dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
- # split into input (X) and output (Y) variables
- X = dataset[:,0:8]
- Y = dataset[:,8]
- # create model
- model = KerasClassifier(build_fn=create_model)
- # grid search epochs, batch size and optimizer
- optimizers = ['rmsprop', 'adam']
- init = ['glorot_uniform', 'normal', 'uniform']
- epochs = numpy.array([50, 100, 150])
- batches = numpy.array([5, 10, 20])
- param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)
- grid = GridSearchCV(estimator=model, param_grid=param_grid)
- grid_result = grid.fit(X, Y)
- # summarize results
- print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
- best_model = grid.best_estimator_
- print('Best model={}'.format(best_model.__class__))
Supplement
* Keras Doc - Wrappers for the Scikit-Learn API
* Ch10 - 多類花朵分類 (iris dataset)
* ML CheatSheet - Optimizer
訂閱:
文章 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...