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来进行机器学习模型的在线预测。