Y. *_*hev 7 tensorflow tensorflow-datasets
试图建立简单的模型只是为了弄清楚如何处理tf.data.Dataset.from_generator.我无法理解如何设置output_shapes参数.我尝试了几种组合,包括没有指定它,但由于张量的形状不匹配仍然会收到一些错误.这个想法只是产生两个numpy数组,SIZE = 10并用它们运行线性回归.这是代码:
SIZE = 10
def _generator():
feats = np.random.normal(0, 1, SIZE)
labels = np.random.normal(0, 1, SIZE)
yield feats, labels
def input_func_gen():
shapes = (SIZE, SIZE)
dataset = tf.data.Dataset.from_generator(generator=_generator,
output_types=(tf.float32, tf.float32),
output_shapes=shapes)
dataset = dataset.batch(10)
dataset = dataset.repeat(20)
iterator = dataset.make_one_shot_iterator()
features_tensors, labels = iterator.get_next()
features = {'x': features_tensors}
return features, labels
def train():
x_col = tf.feature_column.numeric_column(key='x', )
es = tf.estimator.LinearRegressor(feature_columns=[x_col])
es = es.train(input_fn=input_func_gen)
Run Code Online (Sandbox Code Playgroud)
另一个问题是,是否可以使用此功能为特征列提供数据tf.feature_column.crossed_column?总体目标是Dataset.from_generator在批处理培训中使用功能,在数据不适合内存的情况下,数据从数据库加载到数据块.所有意见和例子都非常感谢.
谢谢!
mrr*_*rry 12
可选output_shapes参数tf.data.Dataset.from_generator()允许您指定从生成器生成的值的形状.它的类型有两个约束,用于定义如何指定它:
该output_shapes参数是"嵌套的结构"(例如元组,元组的元组,元组的一个字典等),其必须由发生器产生的值(一个或多个)的结构相匹配.
在您的程序中,_generator()包含该语句yield feats, labels.因此,"嵌套结构"是两个元素的元组(每个数组一个元素).
output_shapes结构的每个组件应与相应张量的形状匹配.数组的形状始终是维度的元组.(a的形状tf.Tensor更为通用:请参阅此Stack Overflow问题进行讨论.)让我们看一下实际的形状feats:
>>> SIZE = 10
>>> feats = np.random.normal(0, 1, SIZE)
>>> print feats.shape
(10,)
Run Code Online (Sandbox Code Playgroud)因此,output_shapes参数应该是一个2元素元组,其中每个元素是(SIZE,):
shapes = ((SIZE,), (SIZE,))
dataset = tf.data.Dataset.from_generator(generator=_generator,
output_types=(tf.float32, tf.float32),
output_shapes=shapes)
Run Code Online (Sandbox Code Playgroud)
最后,您需要提供有关形状的更多信息tf.feature_column.numeric_column()和tf.estimator.LinearRegressor()API:
x_col = tf.feature_column.numeric_column(key='x', shape=(SIZE,))
es = tf.estimator.LinearRegressor(feature_columns=[x_col],
label_dimension=10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6562 次 |
| 最近记录: |