我正在尝试准备数据以使用TensorFlow馈入CNN模型,并且在加载数据时遇到了问题。我正在使用ADNI数据集,该数据集包含通过nibabel模块加载的3D张量的1265个观测值。由于数据的大小,它太大而无法容纳到内存中。我一直在尝试使用tf.data.Dataset,但在实现方面遇到了麻烦
import pandas as pd
import nibabel as nib
import tensorflow as tf
tf.enable_eager_execution()
full_data = pd.read_csv("dataset_path.csv")
full_data_y = full_data['y']
files = tf.data.Dataset.list_files(full_data.Path)
path_ds = full_data.Path.apply(lambda x: nib.load(x)) #Converts files into nibabel images
path_df = tf.data.Dataset.from_tensor_slices((path_ds, full_data_y))
引发错误
ValueError: TypeError: object of type 'Nifti1Image' has no len()
我也尝试过将数据路径加载到加载器中,然后应用转换来加载它,但也无法正常工作
path_df = tf.data.Dataset.from_tensor_slices((full_data.Path, full_data_y))
def preprocess(image, label):
return nib.load(image.numpy().decode("utf-8")), label
path_df.map(preprocess, num_parallel_calls = AUTOTUNE)
引发错误
AttributeError: 'Tensor' object has no attribute 'numpy'
我认为它必须处理TensorFlow的静态特性,我是初学者。
我已经在大多数代码中看到,只是通过tf.stack在for循环中加载数据,但是由于内存限制,这是不可行的。
任何帮助将不胜感激,谢谢!