我正在尝试使用Tensorflow SVM canned estimator训练模型。我的输入数据是源自Big Query的队列,使用Tensorflow的BigQueryReader,然后提供shuffle_batch队列。我的功能是等级2,我的示例键是等级1.由于训练/评估示例的数量可以变化,因此关键和特征张量的实际形状尚未完全定义。我在培训期间收到以下错误:
File "/root/.local/lib/python2.7/site-
packages/tensorflow/contrib/linear_optimizer/python/ops/sdca_ops.py",
line 313, in minimize example_state_data =self._hashtable.lookup(example_ids_hashed)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/linear_optimizer/python/ops/sharded_mutable_dense_hashtable.py",
line 108, in lookup self._check_keys(keys)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/linear_optimizer/python/ops/sharded_mutable_dense_hashtable.py",
line 99, in _check_keys keys.get_shape())
ValueError: Key shape must be fully defined, got (?, 2)
这个问题似乎与示例密钥张量的处理有关。还有其他人遇到过这个问题吗?我已经尝试过与其他罐装估算师非常相似的代码,并且没有对未完全定义的形状抱怨。但是,这是第一个需要密钥的估算器。在从BigQuery读取数据后通过parse_example解析数据时,输出是具有形状(?,1)的Rank-2张量。为了创建键的rank-1张量,我使用了重塑函数,这导致了形状(?,)。我不确定这是否会导致我的问题:
features = tf.parse_example(examples_serialized, features=FEATURES)
features[key_column] = tf.reshape(features[key_column],[-1])