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
你输入的 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是否相同。
参考 from_tensor_slices 用法: https://blog.csdn.net/lizz2276/article/details/107380635/