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

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 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统