【问题标题】:cast string to float is not supported in Deep learning model深度学习模型不支持将字符串转换为浮点数
【发布时间】:2022-06-28 01:55:30
【问题描述】:

我正在尝试通过 Streamlit 部署 ML 模型,这是代码

import cv2
import numpy as np
import streamlit as st
import tensorflow as tf
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2,preprocess_input as mobilenet_v2_preprocess_input
from streamlit_option_menu import option_menu


tb_model = tf.keras.models.load_model(r"C:\Users\zahir\Desktop\Heart_Disease_prediction\Saved_model/tb_mdl.h5")
#img_model = tf.keras.models.load_model(r"C:\Users\zahir\Desktop\Heart_Disease_prediction\Saved_model/img_mdl.h5")

# Sidbar for Navigation

with st.sidebar:
    selected = option_menu('Coronary Artery Disease Prediction System',
                           
                           ['Predit by Filling Up Form',
                            'Predict Using Images'],
                           
                           icons = ['activity','heart'],
                           menu_icon="award", 
                           
                           default_index = 0)

#Page for Tabular Data
if (selected == 'Predit by Filling Up Form'):
    
    # page title
    st.title('Heart Disease Prediction Using Deep Learning')
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        age = st.text_input('Age')

    with col2:
        sex = st.text_input('Sex')
        
    with col3:
        cp = st.text_input('Chest Pain types')
        
    with col1:
        trestbps = st.text_input('Resting Blood Pressure')
        
    with col2:
        chol = st.text_input('Serum Cholestoral in mg/dl')
        
    with col3:
        fbs = st.text_input('Fasting Blood Sugar > 120 mg/dl')
        
    with col1:
        restecg = st.text_input('Resting Electrocardiographic results')
        
    with col2:
        thalach = st.text_input('Maximum Heart Rate achieved')
        
    with col3:
        exang = st.text_input('Exercise Induced Angina')
        
    with col1:
        oldpeak = st.text_input('ST depression induced by exercise')
        
    with col2:
        slope = st.text_input('Slope of the peak exercise ST segment')
        
    with col3:
        ca = st.text_input('Major vessels colored by flourosopy')
        
    with col1:
        thal = st.text_input('thal: 0 = normal; 1 = fixed defect; 2 = reversable defect')
        
        
     
     
    # code for Prediction
    heart_diagnosis = ''
    
    # creating a button for Prediction
    
    if st.button('Heart Disease Test Result'):
        inputs = (age, sex, cp, trestbps, chol, fbs, restecg,thalach,exang,oldpeak,slope,ca,thal)
        npArray = np.asarray(inputs)
        inReshaped = npArray.reshape(1,-1)
        heart_prediction = tb_model.predict(inReshaped)                          
        
        if (heart_prediction[0] == 1):
          heart_diagnosis = 'The person is having heart disease'
        else:
          heart_diagnosis = 'The person does not have any heart disease'
        
    st.success(heart_diagnosis)

我收到了这个错误

    Cast string to float is not supported [[node sequential/Cast (defined at Users\zahir\Desktop\TensorFlow-Streamlit-main\streamlit_host.py:87) ]] [Op:__inference_predict_function_8085] Function call stack: predict_function
Traceback:
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\streamlit\scriptrunner\script_runner.py", line 554, in _run_script
    exec(code, module.__dict__)
File "C:\Users\zahir\Desktop\TensorFlow-Streamlit-main\streamlit_host.py", line 87, in <module>
    heart_prediction = tb_model.predict(inReshaped)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\keras\engine\training.py", line 130, in _method_wrapper
    return method(self, *args, **kwargs)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1599, in predict
    tmp_batch_outputs = predict_function(iterator)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\def_function.py", line 780, in __call__
    result = self._call(*args, **kwds)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\def_function.py", line 846, in _call
    return self._concrete_stateful_fn._filtered_call(canon_args, canon_kwds)  # pylint: disable=protected-access
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\function.py", line 1848, in _filtered_call
    cancellation_manager=cancellation_manager)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\function.py", line 1924, in _call_flat
    ctx, args, cancellation_manager=cancellation_manager))
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\function.py", line 550, in call
    ctx=ctx)
File "C:\ProgramData\Anaconda3\envs\MachineLearning\lib\site-packages\tensorflow\python\eager\execute.py", line 60, in quick_execute
    inputs, attrs, num_outputs)

【问题讨论】:

  • 您需要将数据转换为浮点数,不能将字符串输入到 ML 模型中。
  • 由于我是初学者,答案对我来说更笼统,您能否详细说明一下以消除此错误,以便对您有所帮助。我必须在明天之前提交这个最后一年的项目。

标签: python python-3.x tensorflow keras


【解决方案1】:

npArray = np.asarray(inputs).astype('float32')

这行代码修复了我的错误

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2020-08-11
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多