我创建了一个自定义input_func
,并将keras模型转换为tf.Estimator
进行培训。但是,它一直让我犯错误。
这是我的模型摘要。我试图将Input
图层设置为batch_shape=(16, 320, 320, 3)
进行测试,但问题仍然存在
inputs = Input(batch_shape=(16, 320, 320, 3), name='input_images')
outputs = yolov2.predict(intputs)
model = Model(inputs, outputs)
model.compile(optimizer= tf.keras.optimizers.Adam(lr=learning_rate),
loss = compute_loss)
我使用tf.keras.estimator.model_to_estimator
进行转换。我还为培训创建了input_fn
:
def input_fun(images, labels, batch_size, shuffle=True):
dataset = create_tfdataset(images, labels)
dataset = dataset.shuffle().batch(batch_size)
iterator = dataset.make_one_shot_iterator()
images, labels = iterator.next()
return {'input_images': images}, labels
estimator = tf.keras.estimator.model_to_estimator(keras_model=model)
estimator.train(input_fn = lambda: input_fn(images, labels, 32),
max_steps = 1000)
它抛出了我的错误
input_tensor = Input(tensor=x, name='input_wrapper_for_' + name)
...
File "/home/dat/anaconda3/envs/webapp/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 1309, in __init__
self._batch_input_shape = tuple(input_tensor.get_shape().as_list())
"as_list() is not defined on an unknown TensorShape.")
ValueError: as_list() is not defined on an unknown TensorShape.
答案 0 :(得分:0)
我遇到了同样的问题。 在input_fun中,如果您查看“return {'input_images':images},标签”行中的图像,您将看到您的张量没有形状。您必须为每个图像调用set_shape。 查看https://github.com/tensorflow/models/blob/master/official/resnet/imagenet_main.py,他们调用vgg_preprocessing.preprocess_image来设置形状