Błąd typu: tablica ([[0.46872085, 0.67374235, 1.0218339, 0.13210179, 0.5440686, 0.9140083, 0.58720225, 0.2199381]], dtype = float32) nie jest serializowalny w JSON
Wyżej wymieniony błąd został zgłoszony, gdy próbowałem przekazać listę danych do model.predict (), gdy oczekiwałem odpowiedzi w formacie json.
> 1 json_file = open('model.json','r')
> 2 loaded_model_json = json_file.read()
> 3 json_file.close()
> 4 loaded_model = model_from_json(loaded_model_json)
> 5 #load weights into new model
> 6 loaded_model.load_weights("model.h5")
> 7 loaded_model.compile(optimizer='adam', loss='mean_squared_error')
> 8 X = [[874,12450,678,0.922500,0.113569]]
> 9 d = pd.DataFrame(X)
> 10 prediction = loaded_model.predict(d)
> 11 return jsonify(prediction)
Ale na szczęście udało się znaleźć wskazówkę dotyczącą rozwiązania zgłaszanego błędu. Serializacja obiektów ma zastosowanie tylko w przypadku następnej konwersji. Mapowanie powinno odbywać się w następujący sposób: obiekt - tablica dict - ciąg list - liczba całkowita string - liczba całkowita
Jeśli przewiniesz w górę, aby zobaczyć prognozę numer 10 = load_model.predict (d), gdzie ten wiersz kodu generował dane wyjściowe typu danych typu tablica, kiedy spróbujesz przekonwertować tablicę na format json, nie jest to możliwe
W końcu znalazłem rozwiązanie, konwertując uzyskane dane wyjściowe do listy typów za pomocą następujących wierszy kodu
prediction = load_model.predict (d)
listtype = prediction.tolist () return jsonify (listtype)
Bhoom! w końcu uzyskał oczekiwany wynik,
json
modułu. Alenumpy.ndarray
nie jest typem, któryjson
wie, jak sobie z tym poradzić. Musisz albo napisać własny serializator, albo (prościej) po prostu przejśćlist(your_array)
do tego, co pisze json.