import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv2D, MaxPooling2D, Flatten <h1>构建模型</h1> <p>model = Sequential()<br> model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))<br> model.add(MaxPooling2D((2, 2)))<br> model.add(Flatten())<br> model.add(Dense(10, activation='softmax'))</p> <h1>编译模型</h1> <p>model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])</p> <h1>训练模型</h1> <p>...</p> <h1>保存模型</h1> <p>model.save('model.h5')<br>
首先,需要在PHP中安装TensorFlow Serving PHP扩展。通过composer可以方便地安装:
composer require tensorflow-serving-api-php
接下来,编写一个PHP脚本,加载模型并执行预测操作:
<?php require 'vendor/autoload.php'; <p>use TensorFlowServingPredictRequest;<br> use TensorFlowServingPredictResponse;<br> use GuzzleHttp\Client;</p> <p>// 定义请求数据<br> $request = new PredictRequest();<br> $request->setModelSpecName('model');<br> $request->setModelSpecSignatureName('serving_default');</p> <p>// 转换输入数据<br> $input = [<br> 'image' => [<br> 'b64' => base64_encode(file_get_contents('image.jpg'))<br> ]<br> ];<br> $request->setInputs($input);</p> <p>// 发送请求<br> $client = new Client(['base_uri' => 'http://localhost:8501']);<br> $response = $client->post('/v1/models/model:predict', [<br> 'headers' => ['Content-Type' => 'application/json'],<br> 'body' => $request->serializeToString()<br> ]);</p> <p>$response = new PredictResponse($response->getBody()->getContents());</p> <p>// 获取预测结果<br> $outputs = $response->getOutputs();<br> $prediction = reset($outputs)['floatVal'][0];<br>
在上述代码中,我们定义了一个PredictRequest对象,并设置了模型名称与签名。接着,我们将输入数据转换为符合模型要求的格式,并通过TensorFlow Serving的REST API接口发送请求,最终从返回结果中提取预测数据。
以下是在Ubuntu服务器上安装并启动Apache的示例命令:
sudo apt-get install apache2 sudo service apache2 start
将PHP脚本保存为.php文件,并放置在Apache的Web根目录中。之后,您可以通过访问特定URL来进行机器学习模型的在线预测。