我有这个 CNN 我正在工作。输入形状是动态的,但我将其固定为 [?, 600, 451, 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
)
Run Code Online (Sandbox Code Playgroud)
当我做:
next(test)[0].shape
Run Code Online (Sandbox Code Playgroud)
或者
next(test)[0].dtype
Run Code Online (Sandbox Code Playgroud)
它向我输出正确的形状 ([?, 600, 451, 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]
)
Run Code Online (Sandbox Code Playgroud)
此错误消息:
InvalidArgumentError(回溯参见上文):您必须为占位符张量“input_1”提供一个值,其数据类型为浮点型和形状 [?,600,451,3]
[[节点: input_1 = Placeholderdtype=DT_FLOAT, shape=[?,600,451,3], _device="/job:localhost/replica:0/task:0/device:GPU:0"]]
我究竟做错了什么?感谢一千人对此的任何帮助或直觉。
你在使用 TensorBoard 回调吗?如果是这样,您可以尝试在创建模型之前添加它
import keras.backend as K
K.clear_session()
Run Code Online (Sandbox Code Playgroud)
看到这个答案
不确定这就是原因,但某些内容与验证数据不兼容。
如果您将验证数据作为数组,则将其作为 传递validation_data=(array_x, array_y),但没有validation_steps。
现在,如果它是一个生成器,那么您需要将其传递为validation_data = someGenerator,然后传递validation_steps=number_of_batches_expected_from_generator。
| 归档时间: |
|
| 查看次数: |
6360 次 |
| 最近记录: |