tf.data.Dataset.from_tensor_slices,张量和急切模式
tf.data.Dataset.from_tensor_slices, tensors and eager mode
使用 Iris 数据集示例:
train_ds_url = "http://download.tensorflow.org/data/iris_training.csv"
使用的进口:
import tensorflow as tf
import pandas as pd
import numpy as np
tf.enable_eager_execution()
我下载了数据集,然后我用pd.read
表示train_plantfeatures
、train_categories
数组。
categories='Plants'
train_path = tf.keras.utils.get_file(train_ds_url.split('/')[-1], train_ds_url)
train = pd.read_csv(train_path, names=ds_columns, header=0)
train_plantfeatures, train_categories = train, train.pop(categories)
之后我使用 tf.contrib.keras.utils.to_categorical
创建分类表示。
y_categorical = tf.contrib.keras.utils.to_categorical(train_categories, num_classes=3)
当我尝试使用 tf.data.Dataset
和 from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices((train_plantfeatures, y_categorical))
我收到了:
ValueError: Can't convert non-rectangular Python sequence to Tensor.
没有 Eager 模式的相同实现工作 perfectly.Here Colab 示例
from_tensor_slices()
方法接收一个 Numpy 数组作为输入。但是在这种情况下,变量 train_plantfeatures
是 Pandas DataFrame
.
type(train_plantfeatures)
`Out:` pandas.core.frame.DataFrame
要完成这项工作,请添加 .values
以从 Pandas 转换为 Numpy:
dataset = tf.data.Dataset.from_tensor_slices((train_plantfeatures.values,
y_categorical))
对 test_plantfeatures
变量执行相同操作:
dataset_test = tf.data.Dataset.from_tensor_slices((test_plantfeatures.values,
y_categorical_test))
使用 Iris 数据集示例:
train_ds_url = "http://download.tensorflow.org/data/iris_training.csv"
使用的进口:
import tensorflow as tf
import pandas as pd
import numpy as np
tf.enable_eager_execution()
我下载了数据集,然后我用pd.read
表示train_plantfeatures
、train_categories
数组。
categories='Plants'
train_path = tf.keras.utils.get_file(train_ds_url.split('/')[-1], train_ds_url)
train = pd.read_csv(train_path, names=ds_columns, header=0)
train_plantfeatures, train_categories = train, train.pop(categories)
之后我使用 tf.contrib.keras.utils.to_categorical
创建分类表示。
y_categorical = tf.contrib.keras.utils.to_categorical(train_categories, num_classes=3)
当我尝试使用 tf.data.Dataset
和 from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices((train_plantfeatures, y_categorical))
我收到了:
ValueError: Can't convert non-rectangular Python sequence to Tensor.
没有 Eager 模式的相同实现工作 perfectly.Here Colab 示例
from_tensor_slices()
方法接收一个 Numpy 数组作为输入。但是在这种情况下,变量 train_plantfeatures
是 Pandas DataFrame
.
type(train_plantfeatures)
`Out:` pandas.core.frame.DataFrame
要完成这项工作,请添加 .values
以从 Pandas 转换为 Numpy:
dataset = tf.data.Dataset.from_tensor_slices((train_plantfeatures.values,
y_categorical))
对 test_plantfeatures
变量执行相同操作:
dataset_test = tf.data.Dataset.from_tensor_slices((test_plantfeatures.values,
y_categorical_test))