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來進行機器學習模型的在線預測。