我只是无法从该死的张量“数据”中获得任何尺寸(大小,长度)。这是代码和错误消息:
import tensorflow as tf
import numpy as np
import tflearn
import pandas as pd
from tensorflow import keras
file = 'some.csv'
record_defaults = [tf.float64]*18
from tflearn.data_utils import load_csv
data , label = load_csv(file, target_column=0,has_header=True,
categorical_labels=True, n_classes=50)
datatens = tf.data.Dataset.from_tensor_slices((data,label))
print(datatens.get_shape().as_list())
错误:
<TensorSliceDataset shapes: ((17,), (50,)), types: (tf.string, tf.float64)>
Traceback (most recent call last):
File "basic_class.m", line 44, in <module>
print(datatens.get_shape().as_list())
AttributeError: 'TensorSliceDataset' object has no attribute 'get_shape'
关注度:
在急切地执行了好奇的执行之后,为什么我的张量是整数而不是浮点数。这是建议代码的输出。
代码:
print(tf.shape(data))
print(tf.shape(label))
输出:
Tensor("Shape:0", shape=(2,), dtype=int32)
Tensor("Shape_1:0", shape=(2,), dtype=int32)
答案 0 :(得分:0)
调用tf.data.Dataset.from_tensor_slices
时会得到dataset,而不是张量。数据集本质上是张量的容器,您可以通过几种方式访问它的张量。
最简单的方法是调用数据集的make_one_shot_iterator方法。这将返回遍历张量的迭代器。关于数据集和迭代器的最佳文档是here。
确定要致电tf.data.Dataset.from_tensor_slices
吗? data
和label
还不是张量吗?
编辑:
如果要验证包含标签的张量,请尝试以下代码:
import tensorflow as tf
import numpy as np
import tflearn
import pandas as pd
from tensorflow import keras
from tflearn.data_utils import load_csv
tf.enable_eager_execution()
file = 'some.csv'
record_defaults = [tf.float64]*18
data, label = load_csv(file, target_column=0,has_header=True,
categorical_labels=True, n_classes=50)
print(tf.shape(label))
启用急切执行很重要,因为它使您无需创建和运行会话即可访问张量。