【问题标题】:Error failed to convert a NumPy array to a Tensor将 NumPy 数组转换为张量时出错
【发布时间】:2021-06-13 21:07:29
【问题描述】:

我有以下格式的数据。我正在使用神经网络使用神经网络回归来预测停机时间、延迟和准确性三个参数。

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', 'Latency', '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).

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 你的数据看起来像pandas.DataFrame 你是怎么得到numpy.array 错误的?您应该显示 FULL 错误 - 它显示出问题所在的行。
  • 首先您可以使用print() 来查看变量中的内容。也许你的变量中有错误的值并改变它会产生问题。例如,在predictors 中,您可能有NodeNo Model 列,其中包含字符串,转换它可能会出现问题。它可能需要预处理 - 将字符串转换为数字 - Label EncodingOneHot Encoding

标签: python tensorflow machine-learning keras conv-neural-network


【解决方案1】:

我认为您错过了一个重要步骤,即处理文本/分类属性。您的ModelTechnique 需要转换为数字。其中一种方法是

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)

【讨论】:

    【解决方案2】:

    我无法运行你的代码,所以我创建了类似的东西,当pre_norms 的值为NaN 时出现此错误。

    我得到pre_normsNaN 因为predictors 有列No_Model,Technique 有字符串,predictors-predictors.mean()/predictors.std()) 将它们转换为NaN

    解决方案可能是删除列 No_Model,Technique 但这会创建空数据 - 所以它没有用。

    我不知道您的完整代码,但您应该检查变量中的内容,如果您有 NaN,那么您的计算有误。

    【讨论】:

      猜你喜欢
      • 2020-03-20
      • 2020-12-10
      • 2021-10-17
      • 2018-11-28
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多