【发布时间】:2017-12-14 20:18:56
【问题描述】:
我的 one-hot 编码在训练期间似乎错误地具有 3 个维度(我认为它应该具有 2 个维度),这会导致 OOM。我如何错误地构造 one-hot 特征列?
当我开始训练神经网络时出现此错误:
使用 shape[114171,829,829] 分配张量时的 OOM
[[节点: dnn/input_from_feature_columns/input_layer/air_store_id_indicator/one_hot = OneHot[T=DT_FLOAT, TI=DT_INT64, 轴=-1, _device="/job:localhost/replica:0/task:0/gpu:0"](dnn/input_from_feature_columns/input_layer/air_store_id_indicator/SparseToDense/_149, dnn/input_from_feature_columns/input_layer/air_store_id_indicator/one_hot/depth, dnn/input_from_feature_columns/input_layer/air_store_id_indicator/one_hot/on_value, dnn/input_from_feature_columns/input_layer/air_store_id_indicator/one_hot/off_value)]]
我尝试定义一个单热特征列以在我的 DNNRegressor 中使用,如下所示:
tf.feature_column.indicator_column(
tf.feature_column.categorical_column_with_identity(key='id', num_buckets=df_train['id'].unique().size))
在 DNNRegressor::fit() 的 input_fn 中,我像这样填充 one-hot 编码:
labels, uniques = pd.factorize(df_train['id'])
returned_feature_columns[k] = tf.one_hot(labels, uniques.size, 1, 0)
当我打印那个 one-hot 编码时,它的尺寸看起来是正确的,因为我有 114171 个训练示例和 829 个唯一 ID:
Tensor("one_hot:0", shape=(114171, 829), dtype=int32)
【问题讨论】:
标签: tensorflow