TensorFlow 2.5.0与NumPy 1.21+不兼容?(2021-10-05)

2022-04-01 00:00:00 python-3.x numpy tensorflow2.0

问题描述

给每一个偶然发现这一点的人:

我最近在做图像分类(将CNN添加到一些已标记的数据上),我想使用KERAS的模块进行数据增强。但是,我抛出了一个NotImplementedError。更具体地说,它逐字如下:

NotImplementedError:无法将符号张量(sequential_3/sequential/random_rotation/rotation_matrix/strided_slice:0)转换为数字数组。此错误可能表示您正试图将张量传递给不受支持的NumPy调用

以下是我为增强层编写的代码:

angle = 15
data_augmentation = keras.Sequential([
    layers.experimental.preprocessing.RandomFlip('horizontal'),
    layers.experimental.preprocessing.RandomRotation(angle/360)
])

所以我想要水平翻转我所有的图像并随机旋转15度。我直接把这条信息输入我的CNN:

layers_2 = [
    #image augmentation layer
    data_augmentation,
    
    #convolution layer
    keras.layers.Conv2D(16, 3, padding = 'same', activation = 'relu'),
    keras.layers.MaxPooling2D(),
    keras.layers.Conv2D(32, 3, padding = 'same', activation = 'relu'),
    keras.layers.MaxPooling2D(),
    keras.layers.Conv2D(64, 3, padding = 'same', activation = 'relu'),
    keras.layers.MaxPooling2D(),
    keras.layers.Flatten(),
    
    #dropout for regularization
    keras.layers.Dropout(0.2),
    
    #MLP layer
    keras.layers.Dense(128, activation = 'relu'),
    keras.layers.Dense(64, activation = 'relu'),
    keras.layers.Dense(3, activation = 'softmax')
]

model_2 = keras.Sequential(layers_2)

model_2.compile(optimizer = tf.optimizers.Adam(),
              loss = tf.keras.losses.SparseCategoricalCrossentropy(),
              metrics = [tf.metrics.SparseCategoricalAccuracy()]
)

epochs_2 = 15

#fitting

history_2 = model_2.fit(
    normalized_train_ds,
    validation_data = normalized_val_ds,
    epochs = epochs_2
)

其中Normalized_Train_DS和Normalized_Val_DS都是规范化的tensorflow.data.Dataset对象。

必要的上下文:我在我的本地机器上,在配置了Python3.9.7的环境中运行它。我的NumPy版本是1.21.2,我的TensorFlow版本是2.5.0。早在2021年2月,我就遇到过类似的问题,只是他们注意到运行Python3.9.1和TensorFlow 2.4.1,以及NumPy 1.20+的人出现了同样的问题(该问题的链接:https://github.com/tensorflow/tensorflow/issues/47360)。

实际问题:我只是写了一些糟糕的代码,还是我的版本的Python、TensorFlow、NumPy不兼容?我试着安装了之前版本的NumPy(1.20+),但它抛出了同样的问题。如果我在Google Colab笔记本上运行它,这就不再是问题了。


解决方案

根据GitHub上的此问题,TensorFlow2.5和NumPy 1.20+不兼容。 https://github.com/tensorflow/tensorflow/issues/47691

相关文章