gpt4 book ai didi

python - Tensorflow LinearRegressor 特征不能有等级 0

转载 作者:太空狗 更新时间:2023-10-30 01:53:00 25 4
gpt4 key购买 nike

我正在按照教程进行操作,但未能为在 y=x 之上生成的数据集构建线性回归器。这是我代码的最后一部分,您可以找到 complete source code如果您想重现我的错误,请在这里:

_CSV_COLUMN_DEFAULTS = [[0],[0]]
_CSV_COLUMNS = ['x', 'y']

def input_fn(data_file):

def parse_csv(value):
print('Parsing', data_file)
columns = tf.decode_csv(value, record_defaults=_CSV_COLUMN_DEFAULTS)
features = dict(zip(_CSV_COLUMNS, columns))
labels = features.pop('y')
return features, labels

# Extract lines from input files using the Dataset API.
dataset = tf.data.TextLineDataset(data_file)
dataset = dataset.map(parse_csv)

iterator = dataset.make_one_shot_iterator()
features, labels = iterator.get_next()
return features, labels

x = tf.feature_column.numeric_column('x')
base_columns = [x]

model_dir = tempfile.mkdtemp()
model = tf.estimator.LinearRegressor(model_dir=model_dir, feature_columns=base_columns)

model = model.train(input_fn=lambda: input_fn(data_file=file_path))

这段代码会以某种方式失败并显示错误消息

ValueError: Feature (key: x) cannot have rank 0. Give: Tensor("IteratorGetNext:0", shape=(), dtype=int32, device=/device:CPU:0)

由于 tensorflow 的性质,我发现很难根据给定的消息检查它真正出错的地方。

最佳答案

据我所知,值的第一个维度是 batch_size。所以当input_fn返回数据时,应该是批量返回数据。

一旦您将数据作为批处理返回,它就会起作用,例如:

dataset = tf.data.TextLineDataset(data_file)
dataset = dataset.map(parse_csv)
dataset = dataset.batch(10) # or any other batch size

关于python - Tensorflow LinearRegressor 特征不能有等级 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com