Keras / Tensorflow : "You must feed a value for placeholder tensor 'input_1' with dtype float and



我正在处理这个CNN。输入形状是动态的,但我将其固定为[?,600451,3](batch_size,height,width,channels(,以便调试它。

我有一个随机批次生成器我创建了:

test = random_batch_generator(z_train
, num_processes=12 
, num_batch=steps_train 
, preloaded_batch=100
, batch_size=batch_size
, chunk_size=batch_size
, dataaugmfunc=heavy_dataaugm
, seq=seq
, initial_dim=initial_dim
, min_overlap=MINOVERLAP
)

当我这样做时:

next(test)[0].shape

next(test)[0].dtype

它向我输出正确的形状([?,600451,3](和dtype(float32(,这在理论上是我输入所必需的。我还检查了批次的内容,看起来不错。

尽管如此,当我用以下内容训练我的模型时,我还是得到了:

model.fit_generator(
random_batch_generator(z_train (...)),
validation_data= (x_val_mem,y_val_mem),
steps_per_epoch=steps_train,
validation_steps=steps_val,
epochs=epochs
,callbacks=model_callbacks(modelname)
,class_weight = [0.005,0.995]
)

此错误消息:

InvalidArgumentError(请参阅上面的回溯(:您必须为占位符张量"input_1"提供一个具有dtype float和shape[?,600451,3]的值

[[节点:input_1=Placeholderdtype=DT_FLOAT,shape=[?,600451,3],_device="/作业:localhost/副本:0/任务:0/设备:GPU:0"]]

我做错了什么?非常感谢你在这方面的任何帮助或直觉。

您正在使用TensorBoard回调吗?如果是这样的话,你可以在创建模型之前尝试添加它

import keras.backend as K
K.clear_session()

看到这个答案

  • 大多数时候,由于未使用的输入(在拟合生成器上(被添加到网络中,所以会出现此问题。尽量避免在网络中对未使用的输入进行注释,然后重试。如果模型的输入数量和批处理生成器或fit((函数的输入数量不平衡,就会出现此问题

在您必须重置会话之前*

import keras.backend as K
K.clear_session()

不确定这是原因,但有些东西与验证数据不兼容。

如果将验证数据作为数组,则将其作为validation_data=(array_x, array_y)传递,而不存在validation_steps

现在,如果它是一个生成器,那么您需要将它作为validation_data = someGenerator传递,然后传递validation_steps=number_of_batches_expected_from_generator

当我设置'histogram_freq = 1'而不是0时,发生了这种情况(TF 1.14(。

相关内容

最新更新