0

我最近开始使用 tensorflow,更具体地说,是使用新的数据集 API。通过将数据集的迭代器插入代表输入和标签的图形节点,我成功地使用数据集将训练数据提供给我的简单模型。就像是:

input = input_dataset.make_one_shot_iterator().get_next() 
label = label_dataset.make_one_shot_iterator().get_next()

现在我想知道当我必须对用户输入进行推断时该怎么办,即用户给我一个单一的输入值,我必须做出我的预测。如果我有一个占位符,我只会将用户输入放在 feed_dict 中,但是对于数据集 api,我几乎不知道如何做类似的事情。我应该有一个单独的图表,仅用于我的input变量是占位符的推断吗?

我已经尝试过按照此处所述制作一个可馈送的迭代器,但这仅适用于字符串的占位符,而我的输入是 int32。

感谢您的任何建议。

4

1 回答 1

0

为此,tensorflow 提供了tf.placeholder_with_defaultAPI

# Create a Dataset
dataset = tf.data.Dataset.zip((input_dataset, label_dataset)).batch(32).repeat(...)

# Create Iterator
input, label = dataset.make_one_shot_iterator()

# Create Placholders
x = tf.placeholder_with_default(input, shape=[...], name='input')
y = tf.placeholder_with_default(label, shape-[...], name='label')

def nn_model(features, labels):
    logits = ...    
    loss = tf.reduce_sum(tf.nn.softmax_cross_entropy_with_logits_v2(labels=labels, logits=logits))
    optimizer = tf.train.AdamOptimizer(learning_rate=0.01).minimize(loss)
    return optimizer, loss

# Create Model
train_op, loss_op = nn_model(x, y)

# Training
sess.run(train_op)

# Inference
sess.run(logits, feed_dict={x:..., y:...})
于 2018-06-06T18:50:06.173 回答