如何解决将 NumPy 数组转换为张量失败的错误
我有以下格式的数据。我正在使用神经网络通过神经网络回归预测三个参数停机时间、延迟和准确性。
Node No Model Technique Downtime Latency Accuracy
1 Net Repartition 0.90 31368.5 0.99
2 Net Pause 0.10 21368.5 0.89
3 Mobile Repartition 0.49 41368.5 0.79
4 Net Pause 0.80 51368.5 0.98
pre_norms = (predictors-predictors.mean()/predictors.std())
pre_norms.head()
predictors=data.drop(['Downtime','Latency','Accuracy'],axis = 1)
target=data[['Downtime','Accuracy']]
n_cols= pre_norms.shape[1]
def regression():
model=Sequential()
model.add(Dense(50,activation= 'relu',input_shape=(n_cols,)))
model.add(Dense(50,activation='relu'))#hidden layer
model.add(Dense(3))#output
model.compile(optimizer='adam',loss='mean_squared_error')
return model
model=regression()
model.fit(pre_norms,target,validation_split=.3,epochs=100,verbose=1)
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
解决方法
我无法运行您的代码,因此我创建了类似的代码,当 pre_norms
的值为 NaN
时,我收到此错误。
我得到 pre_norms
和 NaN
因为 predictors
有列 No_Model
,Technique
有字符串和 predictors-predictors.mean()/predictors.std())
将它们转换为 {{1 }}
解决方案可能是删除列 NaN
但这会创建空数据 - 所以它没用。
我不知道您的完整代码,但您应该检查变量中的内容,如果您有 No_Model,Technique
,那么您的计算有误。
我认为您错过了一个重要步骤,即处理文本/分类属性。您的 Model
和 Technique
需要转换为数字。其中一种方式是
predictors_cat_converted=pd.get_dummies(predictors,prefix=['Model','Technique'])
现在所有文本都已转换为数字,您可以使用转换后的数据运行模型。
n_cols=predictors_cat_converted.shape[1]
model=regression()
model.fit(predictors_cat_converted,target,validation_split=.3,epochs=100,verbose=1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。