我创建了一个脚本来评估TensorFlow卷积神经网络。它加载一些图像并进行一些简单的预处理:
def main(argv):
classifier = import_model()
for path in argv[1:]:
image_reversed = imread(path).astype(np.float32)
image_unlayered = np.transpose(image_reversed, (1, 0, 2))
image = np.reshape(image_unlayered, [1, -1, 480, 3])
angle = infer_steering_angle(classifier, image)
print("Steering angle %f for image %s." % (angle, path))
它使用另一个文件中的网络结构函数导入模型,该文件已经过验证,至少大部分工作并用于训练网络:
def import_model():
# Load estimator
classifier = learn.Estimator(
model_fn=cnn_model_fn,
model_dir="/tmp/network2"
)
return classifier
最后,它使用Estimator.predict
函数将单个图像传递给网络,覆盖默认的batch_size
10并将其设置为1.它返回一个带有单个元素的张量,应该对应转向角(这是一个端到端的自动驾驶回归问题)。
def infer_steering_angle(classifier, image):
output = classifier.predict(
x=image,
batch_size=1
)
for angle in output:
return angle
问题是,始终输出0.0作为转向角。我已经多次查看了所有内容,我唯一能想到的就是我误解了Estimator.predict
函数。它的文档记录很差,因为它缺乏应该如何使用它的具体例子。有没有人注意到我如何格式化输入或解析输出?
更新:
我尝试将此代码放在培训文件中,因此导入无法解决问题。我开始怀疑它是模型本身的问题。代码位于https://hastebin.com/rakulonebu.py。