Azureml, AKS, Tensor Flow Keras로 와인의 질을 예측하다
23101 단어 deeplearningazuremltensorflowazure
저희가 뭘 하고 싶은지.
고정 산도, 휘발성 산도, 레몬산, 잔여당, 염화물, 유리 이산화황, 총 이산화황, 밀도, pH치, 황산염과 알코올 등 특정 속성에 따라 텐소플로우 케라스 딥러닝 프레임워크를 사용하여 와인의 품질을 예측한다.
우리는 우리의 방법을 두 가지 주요 부분으로 나눌 것이다.
걸음걸이
변하다
Azure ML 작업공간 만들기
변함없다
Azure ML 작업공간에 데이터 업로드
변함없다
코드 폴더 만들기
변함없다
컴퓨팅 클러스터 만들기
변함없다
모델 생성하기
개변
계산 환경 만들기
개변
평가기 생성
개변
실험 생성 및 실행
변함없다
등록 모델
변함없다
모델 생성하기
우리가 이곳에서 만든 모형은
치밀층 중퇴
이 블록은
repeatable block
회 반복됩니다.
%%writefile $folder_training_script/train.py
import argparse
import os
import numpy as np
import pandas as pd
import glob
from azureml.core import Run
# from utils import load_data
# let user feed in 2 parameters, the dataset to mount or download, and the regularization rate of the logistic regression model
parser = argparse.ArgumentParser()
parser.add_argument('--data-folder', type=str, dest='data_folder', help='data folder mounting point')
args = parser.parse_args()
###
data_folder = os.path.join(args.data_folder, 'winedata')
print('Data folder:', data_folder)
red_wine = pd.read_csv(os.path.join(data_folder, 'winequality_red.csv'))
from tensorflow import keras
from tensorflow.keras import layers, callbacks
# Create training and validation splits
df_train = red_wine.sample(frac=0.7, random_state=0)
df_valid = red_wine.drop(df_train.index)
X = df_train.copy()
X = X.drop(columns = ["quality"])
df_train_stats = X.describe()
df_train_stats = df_train_stats.transpose()
def norm(x):
return (x - df_train_stats['mean']) / df_train_stats['std']
# Split features and target
X_train = df_train.drop('quality', axis=1)
X_valid = df_valid.drop('quality', axis=1)
X_train = norm(X_train)
X_valid = norm(X_valid)
y_train = df_train['quality']
y_valid = df_valid['quality']
early_stopping = callbacks.EarlyStopping(
min_delta=0.001, # minimium amount of change to count as an improvement
patience=20, # how many epochs to wait before stopping
restore_best_weights=True,
)
input_shape=X_train.shape[1]
model = keras.Sequential([
# the hidden ReLU layers
layers.Dense(units=512, activation='relu', input_shape=[input_shape]),
layers.Dropout(0.3),
layers.BatchNormalization(),
layers.Dense(units=512, activation='relu'),
layers.Dropout(0.3),
layers.BatchNormalization(),
layers.Dense(units=512, activation='relu'),
layers.Dropout(0.3),
layers.BatchNormalization(),
# the linear output layer
layers.Dense(units=1)
])
model.compile(
optimizer='adam',
loss='mae',
)
history = model.fit(
X_train, y_train,
validation_data=(X_valid, y_valid),
batch_size=256,
epochs=500,
callbacks=[early_stopping], # put your callbacks in a list
verbose=0, # turn off training log
)
history_df = pd.DataFrame(history.history)
# Get the experiment run context
run = Run.get_context()
run.log('min_val_loss', np.float(history_df['val_loss'].min()))
os.makedirs('outputs', exist_ok=True)
# note file saved in the outputs folder is automatically uploaded into experiment record
model.save('outputs/my_model')
run.complete()
계산 환경 만들기
컴퓨팅 환경은 AzuremL에서 제공하는 기획 환경
3
을 사용합니다.from azureml.core import Environment
curated_env_name = 'AzureML-TensorFlow-2.2-GPU'
tf_env = Environment.get(workspace=ws, name=curated_env_name)
평가기 생성
계획된 환경
AzureML-TensorFlow-2.2-GPU
을 활용하기 위해 평가기를 변경했습니다.from azureml.train.estimator import Estimator
script_params = {
'--data-folder': ds.as_mount()
}
# Create an estimator
estimator = Estimator(source_directory=folder_training_script,
script_params=script_params,
compute_target = compute_target, # Run the experiment on the remote compute target
environment_definition = tf_env,
entry_script='train.py')
예측 데이터
Azure ML의 모델을 사용하여 다음 단계를 예측 또는 추정합니다.
걸음걸이
변하다
추리 스크립트 만들기
개변
추리 의존 항목 만들기
environment_definition = tf_env
추리 설정 만들기개변
추리 집단 만들기
변함없다
추리 집단에 모형을 배치하다
변함없다
예측을 얻다
변함없다
추리 스크립트 만들기
%%writefile $folder_training_script/score.py
import json
from tensorflow import keras
import numpy as np
from azureml.core.model import Model
# Called when the service is loaded
def init():
global model
# Get the path to the registered model file and load it
model_path = Model.get_model_path('wine_model')
model = keras.models.load_model(model_path)
# Called when a request is received
def run(raw_data):
try:
# Get the input data as a numpy array
data = np.array(json.loads(raw_data)['data'])
# Get a prediction from the model
predictions = model.predict(data)
log_txt = 'Data:' + str(data) + ' - Predictions:' + str(predictions)
print(log_txt)
# Return the predictions as any JSON serializable format
return predictions.tolist()
except Exception as e:
result = str(e)
# return error message back to the client
return json.dumps({"error": result})
추리 의존 항목 만들기
우리는 이 단계를 필요로 하지 않는다. 왜냐하면 우리는 정성껏 계획한 환경을 사용하기 때문이다
추리 설정 만들기
from azureml.core.model import InferenceConfig
classifier_inference_config = InferenceConfig(source_directory = './winecode',
entry_script="score.py", environment=tf_env)
여기서는 이전에 생성된 계획 환경 Not required
을 사용하여 추정 구성을 준비합니다.결론
본고에서 Keras 딥러닝 프레임워크를 사용할 때 우리가 머신러닝으로 모델을 구축하는 방법에 비해 달라지는 코드를 중점적으로 소개했다.
읽어주셔서 감사합니다.당신의 평론을 남겨 주세요.
Reference
이 문제에 관하여(Azureml, AKS, Tensor Flow Keras로 와인의 질을 예측하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ambarishg/red-wine-quality-prediction-using-azureml-aks-with-tensorflow-keras-mnn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)