tensorflow - 如何在张量流模型内转换后打印特征值
问题描述
我如何才能看到在 tensorflow 模型中训练的最终特征的价值。就像在下面的情况下,我试图对我的列“x”进行多重加热,我想看看这些功能是如何进入我的模型的。
这在 sklearn 中很容易做到,但是对于 Tensorflow 来说是新手,我不明白这怎么可能。
import tensorflow as tf
import pandas as pd
data = {'x':['a c', 'a b', 'b c'], 'y': [1, 1, 0]}
df = pd.DataFrame(data)
Y = df['y']
X = df.drop('y', axis=1)
indicator_features = [tf.feature_column.indicator_column(categorical_column=
tf.feature_column.categorical_column_with_vocabulary_list(key = 'x',
vocabulary_list = ['a','b','c']))]
model = tf.estimator.LinearClassifier(feature_columns=indicator_features,
model_dir = "/tmp/samplemodel")
training_input_fn = tf.estimator.inputs.pandas_input_fn(x = X,
y=Y,
batch_size=64,
shuffle= True,
num_epochs = None)
model.train(input_fn=training_input_fn,steps=1000)
解决方案
我已经能够通过在 tensorflow 中启用即时执行来打印这些值。在下面发布我的解决方案。欢迎您提出任何其他想法。
import tensorflow as tf
import tensorflow.feature_column as fc
import pandas as pd
PATH = "/tmp/sample.csv"
tf.enable_eager_execution()
COLUMNS = ['education','label']
train_df = pd.read_csv(PATH, header=None, names = COLUMNS)
#train_df['education'] = train_df['education'].str.split(" ")
def easy_input_function(df, label_key, num_epochs, shuffle, batch_size):
label = df[label_key]
ed = tf.string_split(df['education']," ")
df['education'] = ed
ds = tf.data.Dataset.from_tensor_slices((dict(df),label))
if shuffle:
ds = ds.shuffle(10000)
ds = ds.batch(batch_size).repeat(num_epochs)
return ds
ds = easy_input_function(train_df, label_key='label', num_epochs=5, shuffle=False, batch_size=5)
for feature_batch, label_batch in ds.take(1):
print('Some feature keys:', list(feature_batch.keys())[:5])
print()
print('A batch of education :', feature_batch['education'])
print()
print('A batch of Labels:', label_batch )
print(feature_batch)
education_vocabulary_list = [
'Bachelors', 'HS-grad', '11th', 'Masters', '9th', 'Some-college',
'Assoc-acdm', 'Assoc-voc', '7th-8th', 'Doctorate', 'Prof-school',
'5th-6th', '10th', '1st-4th', 'Preschool', '12th']
education = tf.feature_column.categorical_column_with_vocabulary_list('education', vocabulary_list=education_vocabulary_list)
fc.input_layer(feature_batch, [fc.indicator_column(education)])
推荐阅读
- cqrs - 将事件附加到事件存储
- docker-compose - Docker compose 安装错误'curl: (56) OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104' 在 Ubuntu
- php - 通过邮件发送机票预订
- javascript - 为什么隐藏元素后有一个空白空间?
- sql - 如何将键和值作为参数传递给 pl/sql 中的存储过程
- postman - 如何在 Postman 测试选项卡中获取请求正文参数?
- android - RecyclerView 使用自定义布局管理器适合 5 个不同高度和宽度的项目
- python - 多线性回归绘图错误:X 和 Y 必须相同大小
- hadoop - Sqoop 因密码文件参数而失败
- c - 如何将字符串从一维数组复制到c中的二维数组?