当尝试使用我之前训练过的简单模型进行预测时,会出现以下错误:
在图中找不到在feed设备或fetch设备中指定的张量输入1:0
在第行:
seatbelt_model.predict(image_arr, verbose=1)
代码中:
from tensorflow import keras
import tensorflow as tf
import numpy as np
graph = tf.get_default_graph()
seatbelt_model = keras.models.load_model(filepath='./graphs/seatbelt_A_3_81.h5')
class SeatbeltPredictor:
INPUT_SHAPE = (-1, 120, 160, 1)
@staticmethod
def predict_seatbelt(image_arr):
with graph.as_default():
image_arr = np.array(image_arr).reshape(SeatbeltPredictor.INPUT_SHAPE)
predicted_labels = seatbelt_model.predict(image_arr, verbose=1)
return predicted_labels
模型具有以下形状:
input_layer = keras.layers.Input(shape=(IMAGE_HEIGHT, IMAGE_WIDTH, 1))
conv_0 = keras.layers.Conv2D(filters=32, kernel_size=[5, 5], activation=tf.nn.relu, padding="SAME")(input_layer)
pool_0 = keras.layers.MaxPool2D(pool_size=[2, 2], strides=2, padding="VALID")(conv_0)
conv_1 = keras.layers.Conv2D(filters=32, kernel_size=[5, 5], activation=tf.nn.relu, padding="SAME")(pool_0)
pool_1 = keras.layers.MaxPool2D(pool_size=[2, 2], strides=2, padding="VALID")(conv_1)
flat_0 = keras.layers.Flatten()(pool_1)
dense_0 = keras.layers.Dense(units=1024, activation=tf.nn.relu)(flat_0)
drop_0 = keras.layers.Dropout(rate=0.4, trainable=True)(dense_0)
dense_1 = keras.layers.Dense(units=2, activation=tf.nn.softmax)(drop_0)
如果我运行以下命令,就会得到一个张量结果:
graph.get_tensor_by_name('input_1:0')
<tf.Tensor 'input_1:0' shape=(?, 120, 160, 1) dtype=float32>
第一层的名称是input_1
图像是形状的(1,120,160,1)
张量流1.12
有什么想法吗?
好吧,在经历了很多痛苦之后,我跳进了tensorflow的肠子里,发现了以下几点:
尽管模型有一个会话和图,但是在一些tensorflow方法中,使用默认会话和图。为了解决这个问题,我不得不明确地说,我希望同时使用会话和图形作为默认值:
完整代码:
相关问题 更多 >
编程相关推荐