python - InvalidArgumentError:输入深度必须能被过滤器深度整除:4 vs 3
问题描述
我是初学者。我尝试通过 Tensorflow 进行图像分类,并得到以下错误。我在网上找到了类似的问题,但我无法理解。错误是什么意思?我该怎么做呢?请给我一些建议。我使用 100 个文件(png/15pix、15pix)作为示例图像。Tensorflow ver.2.0.0 / python ver.3.8.1 / Jupyter notebook。
num_epochs = 30
steps_per_epoch = round(num_train)//BATCH_SIZE
val_steps = 20
history = model.fit(train_data.repeat(),
epochs=num_epochs,
steps_per_epoch = steps_per_epoch,
validation_data=val_data.repeat(),
validation_steps=val_steps)
InvalidArgumentError:输入深度必须能被过滤器深度整除:4 vs 3 [[nodesequential_2/mobilenetv2_1.00_96/Conv1/Conv2D(定义在 C:\Users\XXXXX\Anaconda3\lib\site-packages\tensorflow_core\python\framework \ops.py:1751) ]] [Op:__inference_distributed_function_42611] 函数调用堆栈:distributed_function
解决方案
如果您的模型如下所示:
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16, (3, 3), activation = 'relu', input_shape = (150, 150, 3)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(32, (3, 3), activation = 'relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation = 'relu'),
tf.keras.layers.Dense(10, activation = 'softmax')
])
将input_shape
(在第一个卷积层)的值从(150, 150, 3)
更改为(150, 150, 4)
。
仅将元组中的最后一项(此处为 3)替换为 4。这应该可以正常工作。
推荐阅读
- python-3.x - 想使用 MechanicalSoup follow_link() 或类似方法关注 javascript 链接
- amazon-web-services - 将正在运行的 AWS 实例移动到不同的区域
- angular - 将默认 Firebase 配置注入 Angular 应用程序
- sql - 查询oracle
- python - 使用python对整个文本文件进行有效的自动更正?
- java - args[0], args[1] 是变量吗?
- kotlin - 异步构造生产者
- sass - 我需要将 mixin 从 scss 重写为 less
- laravel - 为什么 laravel vue js this.form.post(url) 会自动转换成get方法
- javascript - 在 ThreeJS 中反射的水