FluorumSoc 2023-01-31 10:27 采纳率: 100%
浏览 113
已结题

tensotflow中from_tensor_slices报错

在学习单层神经网络时使用from_tensor_slices,发生错误
报错ValueError: Unbatching a tensor is only supported for rank >= 1
import tensorflow as tf
from sklearn import datasets
from pandas import DataFrame
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

x_data = datasets.load_iris().data
y_data = datasets.load_iris().target
np.random.seed(116)
np.random.shuffle(x_data)
np.random.seed(116)
np.random.shuffle(y_data)
tf.random.set_seed(116)

x_train = x_data[:-30]
y_train = y_data[:-30]
x_test = x_data[-30:]
y_test = y_data[-30]
x_train = tf.cast(x_train, dtype=tf.float32)
x_test = tf.cast(x_test, dtype=tf.float32)

train_data = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)
test_data = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

运行结果及详细报错内容

在这一行:

train_data = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)

报错ValueError: Unbatching a tensor is only supported for rank >= 1

尝试去掉括号里的y_train再加上,train_data一行不再报错,但test_data一行无变化
这一语法是否随版本更新而变化?我看的教程里用的是Python3.7,但我装的是3.10
  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-31 10:43
    关注

    你输入的 Tensor 是需要 rank >= 1 的。也就是,Tensor 的维度应该>=1。代码中看来,你的 y_train 是一个秩为0的 Tensor,所以需要增加维度。

    可以通过以下代码解决:

    
    y_train = y_train[..., tf.newaxis]
    y_test = y_test[..., tf.newaxis]
    
    

    这样就不会再报错了。还有,你需要对 y_test 做同样的处理。

    而语法可能会随着 TensorFlow 的版本更新而变化。你要看看正在使用与你看到的教程相同版本的 TensorFlow是否相同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月8日
  • 已采纳回答 1月31日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。