python - 我不明白出了什么问题 InvalidArgumentError: Conv2DCustomBackpropInputOp only support NHWC
问题描述
执行此操作后
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D , Reshape , ZeroPadding2D,BatchNormalization
from tensorflow.keras.callbacks import EarlyStopping
model = Sequential()
model.add(Reshape([1]+in_shp, input_shape=in_shp))
model.add(ZeroPadding2D((0, 2), data_format="channels_first"))
model.add(Conv2D(256, (1,3), data_format="channels_first"))
model.add(Dropout(0.5))
model.add(ZeroPadding2D((0, 1), data_format="channels_first"))
model.add(Conv2D(80, (2 ,3), data_format="channels_first" , activation="relu"))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(classes) , activation='softmax'))
model.add(Activation('softmax'))
model.add(Reshape([len(classes)]))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
我明白了
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
reshape_7 (Reshape) (None, 1, 2, 128) 0
_________________________________________________________________
zero_padding2d_8 (ZeroPaddin (None, 1, 2, 132) 0
_________________________________________________________________
conv2d_8 (Conv2D) (None, 256, 2, 130) 1024
_________________________________________________________________
dropout_10 (Dropout) (None, 256, 2, 130) 0
_________________________________________________________________
zero_padding2d_9 (ZeroPaddin (None, 256, 2, 132) 0
_________________________________________________________________
conv2d_9 (Conv2D) (None, 80, 1, 130) 122960
_________________________________________________________________
dropout_11 (Dropout) (None, 80, 1, 130) 0
_________________________________________________________________
flatten_3 (Flatten) (None, 10400) 0
_________________________________________________________________
dense_6 (Dense) (None, 256) 2662656
_________________________________________________________________
dropout_12 (Dropout) (None, 256) 0
_________________________________________________________________
dense_7 (Dense) (None, 11) 2827
_________________________________________________________________
activation_3 (Activation) (None, 11) 0
_________________________________________________________________
reshape_8 (Reshape) (None, 11) 0
=================================================================
Total params: 2,789,467
Trainable params: 2,789,467
Non-trainable params: 0
_________________________________________________________________
然后当我运行这个
model_fit(model, X_train, Y_train, test_idx)
我收到此错误
**InvalidArgumentError: Conv2DCustomBackpropInputOp only supports NHWC.**
[[node Conv2DBackpropInput (defined at <ipython-input-17-9cd1191bc59a>:3) ]] [Op:__inference_distributed_function_3032]
Function call stack:
distributed_function
当我在其他机器上运行相同的代码时,它可以工作。所以我卸载了 anaconda、Keras、TensorFlow 并重新安装了所有东西。
inp_shp = [2, 128]
X_train.shape = (110000, 2, 128)
解决方案
NHWC 代表Num_samples x Height x Width x Channels。
你有,但如果你有灰度图像并且如果它们是 RGB 图像X_train.shape = (110000, 2, 128)
,你应该传递给模型的应该是这种形状。你也应该改变。X_train.shape = (110000, 2, 128, 1)
X_train.shape = (110000, 2, 128, 3)
inp_shape
推荐阅读
- angular - 我想通过路由将数组对象作为参数传递给另一个页面我的功能如下
- c++ - 从“catch all”块中重新抛出异常如何在 C++ 中生成相同的异常?
- angular - 获取 ngFor 项目的索引并更新值
- laravel - 尽管被 robots.txt laravel 阻止,但已被索引
- opencv - 如何将“Android-PanoramaDemo-master”这个库集成到Android Studio中进行照片拼接?
- android - 运行项目时出错“错误:任务':app:dexguardDebug'的执行失败。”
- c# - 当我尝试将数据从网格视图填充到文本框时出现异常
- c++ - 检查迭代器属于哪个向量
- jmeter - JMeter,如何在一个参数中传递多个值
- java - 从Java中的文本文件创建二维数组