введите описание изображения здесьЯ изучаю и следую учебному пособию по глубокому обучению, которое использует FastApi для предоставления моделей прогнозирования в приложение Reactjs.
Он возвращает ошибку журнала консоли: необработанный отказ (TypeError): невозможно прочитать свойства неопределенного (чтение «протокола»)
Запуск API: «http://localhost:8000» запуск myApp: «http://localhost:3000»
**Вот код реакции, чтобы сделать запрос API
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
import numpy as np
from io import BytesIO
from PIL import Image
import tensorflow as tf
app = FastAPI()
origins = [
"http://localhost",
"http://localhost:3000",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
-MODEL = tf.keras.models.load_model("../saved-models/3")
CLASS_NAMES = ["Early Blight", "Late Blight", "Healthy"]
@app.get("/ping")
async def ping():
return "hello"
def read_file_as_image(data) -> np.ndarray:
image = np.array(Image.open(BytesIO(data)))
** Вот код реакции для запроса API **
import Card from "@material-ui/core/Card";
import CardContent from "@material-ui/core/CardContent";
import { Paper, CardActionArea, CardMedia, Grid, TableContainer, Table, TableBody, TableHead, TableRow, TableCell, Button, CircularProgress } from "@material-ui/core";
import cblogo from "./cblogo.PNG";
import image from "./bg.png";
import { DropzoneArea } from 'material-ui-dropzone';
import { common } from '@material-ui/core/colors';
import Clear from '@material-ui/icons/Clear';
export const ImageUpload = () => {
const classes = useStyles();
const [selectedFile, setSelectedFile] = useState();
const [preview, setPreview] = useState();
const [data, setData] = useState();
const [image, setImage] = useState(false);
const [isLoading, setIsloading] = useState(false);
let confidence = 0;
const sendFile = async () => {
if (image) {
let formData = new FormData();
formData.append("file", selectedFile);
let res = await axios({ #here make the API request
method: "post",
url: process.env.REACT_APP_API_URL,
data: formData,
});
if (res.status === 200) {
setData(res.data);
}
setIsloading(false);
}
}
return image
@app.post("/predict") #Here is the prediction method
async def predict(fil: UploadFile = File(...)):
image = read_file_as_image(await fil.read())
img_batch = np.expand_dims(image, 0)
predictions = MODEL.predict(img_batch)
predicted_class = CLASS_NAMES[np.argmax(predictions[0])]
confidence = np.max(predictions[0])
return {
'class': predicted_class,
'confidence': float(confidence)
}
if __name__ == "__main__":
uvicorn.run(app, host='localhost', port=8000)





Я думаю, что работаю над одним и тем же проектом ... Сквозь Помидор или Картофель или ... Болезнь, я столкнулся с той же проблемой, и благодаря Aymendp я также исправил первую проблему, но впоследствии она также осталась при обработке я изменил свой REACT_APP_API_URL на REACT_APP_API_URL= http://localhost:8000/predict en, затем я перезапустил npm, он не будет работать без перезапуска. Убедитесь, что у вас уже есть загрузка файла main.py ( или где бы вы ни работали) и что порт открыт и работает, затем перезапустите npm (закрыв его, а затем снова запустив «start npm», теперь изображение загрузится, но класс ничего не распечатает и доверие счет печатает "NaN%, я работаю над этим сейчас и дам вам знать немного позже, если вы хотите знать, как, я исправил проблему с GPT4 (я использую это для МНОГО своих проблем) :)
Привет, Мира, может быть, ты все еще знаешь, какие изменения ты внесла? Я до сих пор не разобрался и больше не могу читать ответы мистера Аймендпа,...
я просто меняю местоположение env. файл, который содержит мой URL-адрес (REACT_APP_API_URL= localhost:8000/predict) вне папки src, также проверьте ваш package.json, который я использую, реагируя «^ 17.0.2», и я меняю «скрипты» в пакете на «скрипты»: { «start»: «реагировать-скрипты --openssl-legacy-provider start», «сборка»: «react-scripts --openssl-legacy-provider build», «test»: «тестировать реагирующие-скрипты», «извлечь» : "извлечь скрипты реакции" },
спасибо, мистер Вут Ван Парис, я исправляю проблему, как сказал мне мистер Аймендп, но когда я загружаю изображение в Интернете, результат иногда не из нужного класса, я не знаю, в чем именно проблема.