【发布时间】:2017-12-11 22:54:03
【问题描述】:
我有兴趣在自己的一组图像上训练和评估卷积神经网络模型。我想使用tf.layers 模块来定义我的模型,并使用tf.learn.Estimator 对象分别使用fit() 和evaluate() 方法来训练和评估模型。
Here 是我一直关注的教程,有助于展示tf.layers 模块和tf.learn.Estimator 类。但是,它使用的数据集 (MNIST) 只是简单地导入和加载(作为 NumPy 数组)。请参阅教程脚本中的以下主要功能:
def main(unused_argv):
# Load training and eval data
mnist = learn.datasets.load_dataset("mnist")
train_data = mnist.train.images # Returns np.array
train_labels = np.asarray(mnist.train.labels, dtype=np.int32)
eval_data = mnist.test.images # Returns np.array
eval_labels = np.asarray(mnist.test.labels, dtype=np.int32)
# Create the Estimator
mnist_classifier = learn.Estimator(
model_fn=cnn_model_fn, model_dir="/tmp/mnist_convnet_model")
# Set up logging for predictions
# Log the values in the "Softmax" tensor with label "probabilities"
tensors_to_log = {"probabilities": "softmax_tensor"}
logging_hook = tf.train.LoggingTensorHook(
tensors=tensors_to_log, every_n_iter=50)
# Train the model
mnist_classifier.fit(
x=train_data,
y=train_labels,
batch_size=100,
steps=20000,
monitors=[logging_hook])
# Configure the accuracy metric for evaluation
metrics = {
"accuracy":
learn.MetricSpec(
metric_fn=tf.metrics.accuracy, prediction_key="classes"),
}
# Evaluate the model and print results
eval_results = mnist_classifier.evaluate(
x=eval_data, y=eval_labels, metrics=metrics)
print(eval_results)
完整代码here
我有自己的图片,在某个目录结构中我有jpg 格式:
data
train
classA
1.jpg
2.jpg
...
classB
3.jpg
4.jpg
...
...
validate
classA
5.jpg
6.jpg
...
classB
...
...
我也将我的图像目录转换为 TFRecord 格式,一个 TFRecord 文件用于train,一个用于validation。我遵循了this 教程,该教程使用 TensorFlow 附带的 Inception 模型中的 build_image_data.py 脚本作为输出这些 TFRecord 文件的黑盒。我承认通过创建这些我可能有点本末倒置,但我认为也许有一种方法可以将这些用作tf.learn.Estimator 的fit() 和evaluate() 方法的输入。
问题
如何格式化我的jpg(或 TFRecord)数据,以便我可以将它们用作Estimator 对象函数的输入?
我假设我必须将图像和标签转换为 NumPy 数组,如上面的代码所示,但是尚不清楚 mnist.train.images 和 mnist.train.validation 的格式。
有没有人将jpg 文件和标签转换为这个Estimator 类期望作为输入的NumPy 数组?
任何帮助将不胜感激。
【问题讨论】:
-
我知道问题是针对 Tensorflow(我正在尝试在 Tensorflow 中找到如何做到这一点),但这在 PyTorch 中非常容易做到:github.com/pytorch/vision#imagefolder
-
这个答案可能对你有用:stackoverflow.com/questions/34340489/…
标签: python numpy tensorflow neural-network conv-neural-network