实现教程中的玩具代码时遇到问题

我在学习TensorFlow的教程时,遇到一个让我感到困惑的错误,我看不出自己哪里做错了:

import pandas as pdimport numpy as npnp.set_printoptions(precision = 3, suppress = True)import tensorflow as tffrom tensorflow.keras import layersfrom tensorflow.keras.layers.experimental import preprocessing# 导入一些数据abalone_train = pd.read_csv(    "https://storage.googleapis.com/download.tensorflow.org/data/abalone_train.csv", header=None,     names=["Length", "Diameter", "Height", "Whole weight", "Shucked weight",           "Viscera weight", "Shell weight", "Age"])# 分离用于训练的特征和标签abalone_features = abalone_train.copy()abalone_labels = abalone_features.pop('Age')# 将特征打包进一个NumPy数组abalone_features = np.array(abalone_features)# 构建一个回归模型来预测年龄abalone_model = tf.keras.Sequential([  layers.Dense(64),  layers.Dense(1)])abalone_model.compile(loss = tf.losses.MeanSquaredError(),                      optimizer = tf.optimizers.Adam())# 通过向Model.fit传递特征和标签来训练模型abalone_model.fit(x = abalone_features, y = abalone_labels, epochs = 10)

这几乎直接来自教程,但我在拟合模型时得到了一个错误:

ValueError: Please provide as model inputs either a single array or a list of arrays. You passed: target=0        71        62       143       164       13        ..3315    153316    103317    113318    163319    19Name: Age, Length: 3320, dtype: int64

我从这里了解到,输入需要是两个np.array,但检查abalone_features显示:

abalone_featuresOut[31]: array([[0.435, 0.335, 0.11 , ..., 0.136, 0.077, 0.097],       [0.585, 0.45 , 0.125, ..., 0.354, 0.207, 0.225],       [0.655, 0.51 , 0.16 , ..., 0.396, 0.282, 0.37 ],       ...,       [0.53 , 0.42 , 0.13 , ..., 0.374, 0.167, 0.249],       [0.395, 0.315, 0.105, ..., 0.118, 0.091, 0.119],       [0.45 , 0.355, 0.12 , ..., 0.115, 0.067, 0.16 ]])

我不确定是我(还是教程)哪里出错了。


回答:

我认为你的问题不在于abalone_features,而在于abalone_labels。它们仍然是一个Pandas序列:

>>> type(abalone_labels)<class 'pandas.core.series.Series'>

你需要将它们转换成数组,就像你对特征所做的那样:

abalone_model.fit(x = abalone_features, y = np.asarray(abalone_labels), epochs = 10)

或者,更接近你对特征所做的操作:

abalone_labels = np.array(abalone_labels)

(个人而言,我不喜欢这样的重新赋值操作,原因正是它们可能会引起关于类型的混淆。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注