Tensorflow:如何为 numpy 矩阵输入创建 feature_columns

Posted

技术标签:

【中文标题】Tensorflow:如何为 numpy 矩阵输入创建 feature_columns【英文标题】:Tensorflow: how to create feature_columns for numpy matrix input 【发布时间】:2018-12-09 01:31:49 【问题描述】:

我正在使用 tensorflow 1.8.0、python 3.6.5。 数据是鸢尾花数据集。代码如下:

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import tensorflow as tf

X = iris['data']
y = iris['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

input_train=tf.estimator.inputs.numpy_input_fn(x=X_train,
            y=y_train, num_epochs=100, shuffle=False)
classifier_model = tf.estimator.DNNClassifier(hidden_units=[10, 
                  20, 10], n_classes=3, feature_columns=??)

这是我的问题,如何为 numpy 矩阵设置 feature_columns?

如果我将 X 和 y 转换为 pandas.DataFrame,我可以对 feature_columns 使用以下代码,它适用于 DNNClassifier 模型。

features = X.columns
feature_columns = [tf.feature_column.numeric_column(key=key) for key in features]

【问题讨论】:

这些链接可能有用:tf.feature_column docs 和 tf.estimator.DNNClassifier docs 【参考方案1】:

您可以将您的 numpy ndarray 包装在字典中并将其作为输入 x 传递给 numpy_input_fn 方法,然后使用该字典中的键来定义您的 feature_column。还要注意,因为你的X_train中的每一个数据都有4个维度,所以在定义tf.feature_column.numeric_column的时候需要指定shape参数。这是完整的代码:

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import tensorflow as tf

iris = load_iris()

X = iris['data']
y = iris['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

input_train = tf.estimator.inputs.numpy_input_fn(
                  x = 'x': X_train,
                  y = y_train,
                  num_epochs = 100,
                  shuffle = False)

feature_columns = [tf.feature_column.numeric_column(key='x', shape=(X_train.shape[1],))]

classifier_model = tf.estimator.DNNClassifier(
                       hidden_units=[10, 20, 10],
                       n_classes=3,
                       feature_columns=feature_columns)

【讨论】:

这不起作用,这是我得到的错误:“发生异常:AttributeError 模块'tensorflow_estimator.python.estimator.api._v2.estimator'没有属性'inputs'” @aokelly 这是因为您使用的是 tensorflow 2.x。这个问题和我的回答都是基于tensorflow 1.8.0。

以上是关于Tensorflow:如何为 numpy 矩阵输入创建 feature_columns的主要内容,如果未能解决你的问题,请参考以下文章

如何为图像及其相应标签构建 TensorFlow 输入管道

python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

TensorFlow 2.0 Keras:如何为 TensorBoard 编写图像摘要

如何为 keras 模型使用 tensorflow 自定义损失?

numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)

numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)