为了账号安全,请及时绑定邮箱和手机立即绑定

值 tf.Tensor.. shape=(), dtype=float64) 的批处理等级不足。?

值 tf.Tensor.. shape=(), dtype=float64) 的批处理等级不足。?

慕娘9325324 2023-07-27 16:44:21
我正在尝试获取数据帧并将它们转换为张量以在 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_tensor_slices(dict(y_train))将 y_train 从切片转换为张量时出现以下错误:ValueError: Value tf.Tensor(0.10559591064345274, shape=(), dtype=float64) has insufficient rank for batching.在教程中,这似乎有效,但我认为这些教程正在执行多类分类,而我正在执行回归,因此 y_train 是一系列而不是多列。我能做什么有什么建议吗?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

要么使用:


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': <tf.Tensor: shape=(4,), dtype=float64, numpy=array([5., 4., 3., 2.])>}


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信