「创建和服务您的第一个机器学习模型 – CodesCode」
欢迎来到机器学习的世界在本教程中,您将学习如何创建、训练和部署您的第一个机器学习模型
欢迎来到机器学习的世界,计算机从数据中学习并在没有显式编程的情况下进行预测。这项技术的核心是“模型”的概念。
什么是模型?
在传统编程中,我们创建接收输入/参数并根据公式返回结果的函数/方法。例如,想象一个应用公式y = 3x + 1
的Java方法。
public int formula(int x) { return 3 * x + 1;}
上述代码将返回以下x
和y
的数据:
x | -1 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|---|
y | -2 | -1 | 4 | 7 | 10 | 13 |
现在,想象一下,你有很多x
和y
值,而不是公式。您可以创建一个机器学习模型来发现公式并预测新值。
作为一个现实生活的例子,我们可以使用手机相册中发生的面部识别。我们有多个输入(照片)和输出(人名),机器学习模型是知道如何识别人类的公式。当您给照片中的人们命名时,您会不断为模型提供数据,以便其不断进行训练以更好地识别这些人。
Python:机器学习的语言
Python已成为机器学习的事实标准语言。其庞大的库生态系统,包括TensorFlow和Keras,使其成为构建和训练模型的强大工具。如果你对进入机器学习世界感兴趣,Python将成为你在这个旅程中的可靠伙伴。
我们的模型
为了简单起见,我们将使用上述的x
和y
数据来训练一个模型,该模型将根据x
预测y
的值。
import tensorflow as tfimport numpy as npfrom tensorflow import kerasimport osdef build_model(): # 创建一个接收1个输入值并返回1个输出值的模型 model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) # 定义学习算法。现在您不需要担心这个 model.compile(optimizer='sgd', loss='mean_squared_error') return modeldef train_model(model, xs, ys, epochs=500): # 训练模型。这里我们要求算法尝试500个随机公式,以找到最佳匹配输入和输出数据的公式。 model.fit(xs, ys, epochs=epochs)def predict_with_model(model, input_data): # 使用训练好的模型进行预测 return model.predict([input_data])def save_model(model, export_path): # 保存模型 tf.keras.models.save_model( model, export_path, overwrite=True, include_optimizer=True, save_format=None, signatures=None, options=None )def main(): # 输入数据 xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float) # 构建模型 model = build_model() # 训练模型 train_model(model, xs, ys) # 预测x = 10的值。它将会打印一个非常接近于31的数字,例如30.9994之类的 prediction = predict_with_model(model, 10.0) print(prediction) # 保存模型 model_dir = "./model" version = 1 export_path = os.path.join(model_dir, str(version)) print('export_path = {}\n'.format(export_path)) save_model(model, export_path) print('\nSaved model: ' + export_path)if __name__ == "__main__": main()
运行上述Python代码来创建、训练和测试模型。它将在./model
目录下创建模型。
提供模型
一旦您创建了模型,并将其放置在./model
目录下,就可以将其作为REST API进行服务。为此,您可以使用tensorflow/serving
容器镜像:
podman run -p 8501:8501 \ --name=tf_serving \ --mount type=bind,source=./model,target=/models/model -e MODEL_NAME=model \ -t tensorflow/serving
调用模型
一旦容器启动并运行,您可以发送请求进行推理。运行以下命令以推理x = 10
时的y
值:
curl -d '{"instances": [[10.0]]}' \ -H "Content-Type: application/json" \ -X POST http://localhost:8501/v1/models/model:predict
您应该可以看到类似于以下结果:
{ "predictions": [[30.9971237] ]}
就这样,朋友们!
您刚刚创建、训练、服务和调用了您的第一个机器学习模型。您可以在GitHub上找到本篇文章中使用的源代码。在评论中随时提问,并关注更多信息。
Leave a Reply