Keras의 딥 러닝 모델을 Watson Machine Learning으로 웹 서비스화
13904 단어 Keras딥러닝Watson-StudioWatson웹 서비스
소개
Watson Studio에서 scikit-learn 기계 학습 모델 웹 서비스 문서에서 설명한 것처럼 IBM의 클라우드 서비스 인 Watson Studio와 Watson Machine Learning을 결합하여 sckit-learn의 기계 학습 모델을 쉽게 웹 서비스 할 수 있습니다.
이 기사는 Keras 버전입니다.
(scikit-learn은 정말 쉽게 웹 서비스 화할 수 있었지만, 그것에 비해 모델 등록 절차에 약간의 요령이 있습니다)
[2020-04-25] 설치 절차 수정
전제
무료로 모든 것을 시도 할 수 있습니다! Watson Studio 설정 가이드
IBM Cloud에 계정을 등록하고 Watson Studio 프로젝트도 작성했습니다.
맨 뒤의 옵션 설정도 필요합니다.
(정확히 말하면, Watson Machine Learning은 필요하고 Spark는 불필요)
절차
등록까지 구체적 절차는 다음과 같습니다.
모델 작성 및 학습
모델은 뭐든지 좋지만 간단하게하기 위해 숨겨진 레이어 2 층의 전체 결합 형 신경망으로했습니다. 보통의 Keras의 모델이므로 해설은 생략합니다.
우연히 Functional API를 사용하고 있지만 Sequential에서도 괜찮을 것입니다.
# データ準備
# 変数定義
# D: 入力ノード数
D = 784
# H: 隠れ層のノード数
H = 128
# 分類クラス数
num_classes = 10
# Kerasの関数でデータの読み込み
from keras.datasets import mnist
(x_train_org, y_train), (x_test_org, y_test) = mnist.load_data()
# 入力データの加工 (次元を1次元に)
x_train = x_train_org.reshape(-1, D) / 255.0
x_test = x_test_org.reshape((-1, D)) / 255.0
# 教師データの加工 (One Hot Vectorに)
from keras.utils import np_utils
y_train_ohe = np_utils.to_categorical(y_train, num_classes)
y_test_ohe = np_utils.to_categorical(y_test, num_classes)
from keras import optimizers
# モデルの定義
# 必要ライブラリのロード
from keras.layers import Dense
from keras.layers import Input
from keras.models import Model
# モデルの定義
inputs = Input(shape=(D,))
# 隠れ層1の定義
h1 = Dense(H, activation='relu')(inputs)
# 隠れ層2の定義
h2 = Dense(H, activation='relu')(h1)
# 出力層
predictions = Dense(num_classes, activation='softmax')(h2)
# モデル
model = Model(inputs=inputs, outputs=predictions)
# モデルのコンパイル
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss = 'categorical_crossentropy',
optimizer = sgd,
metrics=['accuracy'])
# 学習
# 学習の単位
batch_size = 512
# 繰り返し回数
nb_epoch = 20
# モデルの学習
history1 = model.fit(
x_train,
y_train_ohe,
batch_size = batch_size,
epochs = nb_epoch,
verbose = 1,
validation_data = (x_test, y_test_ohe))
Watson ML 관리 클라이언트 생성
여기부터는 Watson Studio/Watson Machine Learing 관련 이야기입니다.
먼저 다음 코드로 Watson Machine Learing 관리 클라이언트를 생성합니다.
wml_credentials에서 구성 정보를 얻는 방법에 대해서는 위에서 설명한 기사 Watson Studio에서 scikit-learn 기계 학습 모델 웹 서비스를 참조하십시오.
wml_credentials={
"url": "https://ibm-watson-ml.mybluemix.net",
"username": "***",
"password": "***",
"instance_id": "***"
}
from watson_machine_learning_client import WatsonMachineLearningAPIClient
client = WatsonMachineLearningAPIClient(wml_credentials)
업로드용 압축 파일 준비
Keras 모델을 리포지토리에 등록하려면 일단 모델을 h5 형식의 파일로 떨어뜨리고 그 파일을 gz 압축해야 합니다.
(API 문서에서 읽기 어려운 요령 부분)
구체적인 코드로서는 이하의 형태가 됩니다.
h5file = 'mnist-keras.h5'
gzfile = 'mnist-keras.tar.gz'
model.save(h5file)
import tarfile
with tarfile.open(gzfile, 'w:gz') as tf:
tf.add(h5file)
모델 저장
이제 필요한 준비가 되었으므로 모델을 저장할 수 있습니다. 다만, scikit-learn 때와 달리, 메타 정보를 몇개 설정해야 합니다.
(API 문서에서 읽기 어려운 팁 2)
구체적인 코드는 다음과 같습니다.
metadata = {
client.repository.ModelMetaNames.NAME: 'Keras MNIST Test',
client.repository.ModelMetaNames.FRAMEWORK_NAME: 'tensorflow',
client.repository.ModelMetaNames.FRAMEWORK_VERSION: '1.5',
client.repository.ModelMetaNames.RUNTIME_NAME: 'python',
client.repository.ModelMetaNames.RUNTIME_VERSION: '3.5',
client.repository.ModelMetaNames.FRAMEWORK_LIBRARIES: [{'name':'keras', 'version': '2.1.3'}]
}
published_model = client.repository.store_model(model=gzfile, meta_props=metadata)
마지막 store_model 함수 호출이 성공적으로 완료되면 아래 그림과 같이 Watson Studio에서 관리할 수 있는 모델입니다.
그 후에는 Watson Studio에서 scikit-learn 기계 학습 모델 웹 서비스과 똑같은 순서로 웹 서비스화나 웹 서비스의 테스트, 웹 서비스 호출의 앱 개발이 가능합니다. 자세한 내용은 위의 기사를 참고하십시오.
Reference
이 문제에 관하여(Keras의 딥 러닝 모델을 Watson Machine Learning으로 웹 서비스화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makaishi2/items/d87aa1aa93007b202ab1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
무료로 모든 것을 시도 할 수 있습니다! Watson Studio 설정 가이드
IBM Cloud에 계정을 등록하고 Watson Studio 프로젝트도 작성했습니다.
맨 뒤의 옵션 설정도 필요합니다.
(정확히 말하면, Watson Machine Learning은 필요하고 Spark는 불필요)
절차
등록까지 구체적 절차는 다음과 같습니다.
모델 작성 및 학습
모델은 뭐든지 좋지만 간단하게하기 위해 숨겨진 레이어 2 층의 전체 결합 형 신경망으로했습니다. 보통의 Keras의 모델이므로 해설은 생략합니다.
우연히 Functional API를 사용하고 있지만 Sequential에서도 괜찮을 것입니다.
# データ準備
# 変数定義
# D: 入力ノード数
D = 784
# H: 隠れ層のノード数
H = 128
# 分類クラス数
num_classes = 10
# Kerasの関数でデータの読み込み
from keras.datasets import mnist
(x_train_org, y_train), (x_test_org, y_test) = mnist.load_data()
# 入力データの加工 (次元を1次元に)
x_train = x_train_org.reshape(-1, D) / 255.0
x_test = x_test_org.reshape((-1, D)) / 255.0
# 教師データの加工 (One Hot Vectorに)
from keras.utils import np_utils
y_train_ohe = np_utils.to_categorical(y_train, num_classes)
y_test_ohe = np_utils.to_categorical(y_test, num_classes)
from keras import optimizers
# モデルの定義
# 必要ライブラリのロード
from keras.layers import Dense
from keras.layers import Input
from keras.models import Model
# モデルの定義
inputs = Input(shape=(D,))
# 隠れ層1の定義
h1 = Dense(H, activation='relu')(inputs)
# 隠れ層2の定義
h2 = Dense(H, activation='relu')(h1)
# 出力層
predictions = Dense(num_classes, activation='softmax')(h2)
# モデル
model = Model(inputs=inputs, outputs=predictions)
# モデルのコンパイル
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss = 'categorical_crossentropy',
optimizer = sgd,
metrics=['accuracy'])
# 学習
# 学習の単位
batch_size = 512
# 繰り返し回数
nb_epoch = 20
# モデルの学習
history1 = model.fit(
x_train,
y_train_ohe,
batch_size = batch_size,
epochs = nb_epoch,
verbose = 1,
validation_data = (x_test, y_test_ohe))
Watson ML 관리 클라이언트 생성
여기부터는 Watson Studio/Watson Machine Learing 관련 이야기입니다.
먼저 다음 코드로 Watson Machine Learing 관리 클라이언트를 생성합니다.
wml_credentials에서 구성 정보를 얻는 방법에 대해서는 위에서 설명한 기사 Watson Studio에서 scikit-learn 기계 학습 모델 웹 서비스를 참조하십시오.
wml_credentials={
"url": "https://ibm-watson-ml.mybluemix.net",
"username": "***",
"password": "***",
"instance_id": "***"
}
from watson_machine_learning_client import WatsonMachineLearningAPIClient
client = WatsonMachineLearningAPIClient(wml_credentials)
업로드용 압축 파일 준비
Keras 모델을 리포지토리에 등록하려면 일단 모델을 h5 형식의 파일로 떨어뜨리고 그 파일을 gz 압축해야 합니다.
(API 문서에서 읽기 어려운 요령 부분)
구체적인 코드로서는 이하의 형태가 됩니다.
h5file = 'mnist-keras.h5'
gzfile = 'mnist-keras.tar.gz'
model.save(h5file)
import tarfile
with tarfile.open(gzfile, 'w:gz') as tf:
tf.add(h5file)
모델 저장
이제 필요한 준비가 되었으므로 모델을 저장할 수 있습니다. 다만, scikit-learn 때와 달리, 메타 정보를 몇개 설정해야 합니다.
(API 문서에서 읽기 어려운 팁 2)
구체적인 코드는 다음과 같습니다.
metadata = {
client.repository.ModelMetaNames.NAME: 'Keras MNIST Test',
client.repository.ModelMetaNames.FRAMEWORK_NAME: 'tensorflow',
client.repository.ModelMetaNames.FRAMEWORK_VERSION: '1.5',
client.repository.ModelMetaNames.RUNTIME_NAME: 'python',
client.repository.ModelMetaNames.RUNTIME_VERSION: '3.5',
client.repository.ModelMetaNames.FRAMEWORK_LIBRARIES: [{'name':'keras', 'version': '2.1.3'}]
}
published_model = client.repository.store_model(model=gzfile, meta_props=metadata)
마지막 store_model 함수 호출이 성공적으로 완료되면 아래 그림과 같이 Watson Studio에서 관리할 수 있는 모델입니다.
그 후에는 Watson Studio에서 scikit-learn 기계 학습 모델 웹 서비스과 똑같은 순서로 웹 서비스화나 웹 서비스의 테스트, 웹 서비스 호출의 앱 개발이 가능합니다. 자세한 내용은 위의 기사를 참고하십시오.
Reference
이 문제에 관하여(Keras의 딥 러닝 모델을 Watson Machine Learning으로 웹 서비스화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/makaishi2/items/d87aa1aa93007b202ab1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# データ準備
# 変数定義
# D: 入力ノード数
D = 784
# H: 隠れ層のノード数
H = 128
# 分類クラス数
num_classes = 10
# Kerasの関数でデータの読み込み
from keras.datasets import mnist
(x_train_org, y_train), (x_test_org, y_test) = mnist.load_data()
# 入力データの加工 (次元を1次元に)
x_train = x_train_org.reshape(-1, D) / 255.0
x_test = x_test_org.reshape((-1, D)) / 255.0
# 教師データの加工 (One Hot Vectorに)
from keras.utils import np_utils
y_train_ohe = np_utils.to_categorical(y_train, num_classes)
y_test_ohe = np_utils.to_categorical(y_test, num_classes)
from keras import optimizers
# モデルの定義
# 必要ライブラリのロード
from keras.layers import Dense
from keras.layers import Input
from keras.models import Model
# モデルの定義
inputs = Input(shape=(D,))
# 隠れ層1の定義
h1 = Dense(H, activation='relu')(inputs)
# 隠れ層2の定義
h2 = Dense(H, activation='relu')(h1)
# 出力層
predictions = Dense(num_classes, activation='softmax')(h2)
# モデル
model = Model(inputs=inputs, outputs=predictions)
# モデルのコンパイル
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss = 'categorical_crossentropy',
optimizer = sgd,
metrics=['accuracy'])
# 学習
# 学習の単位
batch_size = 512
# 繰り返し回数
nb_epoch = 20
# モデルの学習
history1 = model.fit(
x_train,
y_train_ohe,
batch_size = batch_size,
epochs = nb_epoch,
verbose = 1,
validation_data = (x_test, y_test_ohe))
wml_credentials={
"url": "https://ibm-watson-ml.mybluemix.net",
"username": "***",
"password": "***",
"instance_id": "***"
}
from watson_machine_learning_client import WatsonMachineLearningAPIClient
client = WatsonMachineLearningAPIClient(wml_credentials)
h5file = 'mnist-keras.h5'
gzfile = 'mnist-keras.tar.gz'
model.save(h5file)
import tarfile
with tarfile.open(gzfile, 'w:gz') as tf:
tf.add(h5file)
metadata = {
client.repository.ModelMetaNames.NAME: 'Keras MNIST Test',
client.repository.ModelMetaNames.FRAMEWORK_NAME: 'tensorflow',
client.repository.ModelMetaNames.FRAMEWORK_VERSION: '1.5',
client.repository.ModelMetaNames.RUNTIME_NAME: 'python',
client.repository.ModelMetaNames.RUNTIME_VERSION: '3.5',
client.repository.ModelMetaNames.FRAMEWORK_LIBRARIES: [{'name':'keras', 'version': '2.1.3'}]
}
published_model = client.repository.store_model(model=gzfile, meta_props=metadata)
Reference
이 문제에 관하여(Keras의 딥 러닝 모델을 Watson Machine Learning으로 웹 서비스화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makaishi2/items/d87aa1aa93007b202ab1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)