Python ValueError:值tf.张量。。shape=(),dtype=float64)没有足够的列组进行批处理。?
我试图获取一个数据帧,并将其转换为张量,以在keras中训练一个模型 我想当我将Y标签转换为张量时,它会被触发:Python ValueError:值tf.张量。。shape=(),dtype=float64)没有足够的列组进行批处理。?,python,tensorflow,keras,Python,Tensorflow,Keras,我试图获取一个数据帧,并将其转换为张量,以在keras中训练一个模型 我想当我将Y标签转换为张量时,它会被触发: X_train = df_train1.drop(variableToPredict, axis=1) y_train = df_train1[variableToPredict].copy() X_train=tf.data.Dataset.from_tensor_slices(dict(X_train)) y_train=tf.data.Dataset.from_
X_train = df_train1.drop(variableToPredict, axis=1)
y_train = df_train1[variableToPredict].copy()
X_train=tf.data.Dataset.from_tensor_slices(dict(X_train))
y_train=tf.data.Dataset.from_tensor_slices(dict(y_train))
从切片将y_列投射到张量时,我遇到以下错误:
ValueError: Value tf.Tensor(0.10559591064345274, shape=(), dtype=float64) has insufficient rank for batching.
在教程中,这似乎是可行的,但我认为这些教程正在进行多类分类,而我正在进行回归,因此y_train是一个系列,而不是多列
对我能做什么有什么建议吗?可以使用:
y = tf.data.Dataset.from_tensors(dict(y_train))
或者这个:
y = tf.data.Dataset.from_tensor_slices(y_train)
或者只需使用双括号,使数据帧保持为数据帧,则无需更改任何内容:
y_train = df[['height']].copy()
y = tf.data.Dataset.from_tensor_slices(dict(y_train))
再现问题的完整代码,以及备选方案:
import tensorflow as tf
import pandas as pd
df = pd.DataFrame(data={'integers': [1, 2, 3, 4], 'floats': [4., 3., 2., 1]})
y_train = df['floats'].copy()
y = tf.data.Dataset.from_tensor_slices(dict(y_train)) # not good
y = tf.data.Dataset.from_tensor_slices(y_train) # good
print(next(iter(y)))
y = tf.data.Dataset.from_tensors(y_train) # good
print(next(iter(y)))
y_train = df[['floats']].copy()
y = tf.data.Dataset.from_tensor_slices(dict(y_train)) # good
next(iter(y))
{'floats':}
{'floats': <tf.Tensor: shape=(4,), dtype=float64, numpy=array([5., 4., 3., 2.])>}