我正在尝试训练一个模型,在Colab上使用TPU,它将使用两个np.ndarray输入,一个用于形状的图像,(150,150,3),另一个用于形状的音频谱图图像(259,128,1)。现在,我已经使用NumPy数组创建了数据集,如下所示:
trainX = [train_image_array, train_spect_array]
trainY = labels_array这里的每一个形状如下:-
train_image_array.shape = (86802, 150, 150, 3)
train_spect_array.shape = (86802, 259, 128, 1)
labels_array.shape = (86802,)我也有一个类似的数据集用于测试,而不是86K样本,它有9K样本。因此,当我试图评估我的测试数据模型时,它是有效的,但当我试图训练或评估我的训练数据模型时,它显示:-
<ipython-input-20-9240f9fc84df> in runModel(model, trainX, trainY, testX, testY, patience, resetWeights, checkpointPath, epochs, save_checkpoint, batch_size, generator, save_weights, save_weights_path, metrics)
76 model.evaluate(testX, testY, batch_size=batch_size)
77 # model.evaluate(trainX, trainY, batch_size=batch_size)
---> 78 history = model.fit(trainX, trainY, epochs=epochs, batch_size=batch_size, validation_data=(testX, testY), shuffle=True, callbacks=callbacks)
79 # model.evaluate(trainX, trainY, batch_size=batch_size)
80 model.evaluate(testX, testY, batch_size=batch_size)
/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py in error_handler(*args, **kwargs)
65 except Exception as e: # pylint: disable=broad-except
66 filtered_tb = _process_traceback_frames(e.__traceback__)
---> 67 raise e.with_traceback(filtered_tb) from None
68 finally:
69 del filtered_tb
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype)
100 dtype = dtypes.as_dtype(dtype).as_datatype_enum
101 ctx.ensure_initialized()
--> 102 return ops.EagerTensor(value, ctx.device_name, dtype)
103
104在这里,runModel(...)是我的函数,它由model.evaluate、model.fit、图形绘制等组成,主要问题在model.fit(trainX, trainY .. )。同样的错误出现在model.evaluate(trainX, trainY, .. )上。我认为它可能只出现在model.evaluate上,所以我对它进行了评论,但我错了♂️。有谁可以帮我?
发布于 2022-03-24 17:05:25
我为这个问题找到的唯一解决方案是,对于非常大的数据集,我们应该创建.tfrecord文件并与它们一起使用TensorFlow数据集。此外,当使用TPU时,我们需要使用一个桶将我们的.tfrecord文件保存在中。
https://stackoverflow.com/questions/71294432
复制相似问题