tf.contrib.learn.preprocessing替代
时间: 2024-05-27 08:11:32 浏览: 135
tf.feature_column模块提供了一些函数来处理输入特征。例如,可以使用tf.feature_column.categorical_column_with_vocabulary_list函数将分类特征转换为数字特征。此外,还可以使用tf.feature_column.bucketized_column函数将连续特征分桶成离散特征。这些函数可以替代tf.contrib.learn.preprocessing模块的一些功能。
相关问题
tf.contrib.learn.preprocessing.VocabularyProcessor报错module 'tensorflow' has no attribute 'contrib'
这个错误的原因是在 TensorFlow 2.x 版本中,`tf.contrib` 已经被移除了。如果你正在使用 TensorFlow 2.x 版本,可以考虑使用 `tf.keras.preprocessing.text.Tokenizer` 来代替 `tf.contrib.learn.preprocessing.VocabularyProcessor`。
如果你一定要使用 `VocabularyProcessor`,可以考虑使用 TensorFlow 1.x 版本,或者在 TensorFlow 2.x 版本中使用 `tf.compat.v1` 来调用 `contrib` 模块:
```
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
vocab_processor = tf.compat.v1.contrib.learn.preprocessing.VocabularyProcessor(max_document_length)
```
这样可以在 TensorFlow 2.x 版本中使用 `VocabularyProcessor`,但不建议这么做,因为 `tf.compat.v1` 只是 TensorFlow 1.x 的兼容层,可能会影响到代码的可读性和可维护性。
from tensorflow.contrib import learn换成import tf_slim as slim后,learn.preprocessing.VocabularyProcessor报错
`tf_slim` 和 `tensorflow.contrib` 有些不同,所以需要针对性地修改代码。
`tf_slim` 中没有 `learn.preprocessing.VocabularyProcessor` 这个类,但是我们可以使用 `tf.contrib.learn.preprocessing.VocabularyProcessor` 替代。
你可以将代码修改为以下形式:
```python
from tensorflow.contrib import learn
import tensorflow as tf
import tf_slim as slim
# 使用 tf.contrib.learn.preprocessing.VocabularyProcessor
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)
x = np.array(list(vocab_processor.fit_transform(x_text)))
# 其他代码不变
```
另外,你也可以使用 `tf.data.Dataset` API 来处理数据,这是 TensorFlow 推荐的数据输入方式,也更加方便和高效。
阅读全文