Deep learning 因'的1减去2而导致的负尺寸大小;max#u Poolg2D#u 52/MaxPool';(op:';MaxPool';)具有以下输入形状:[?,148,1,32]
我得到了这个无效的参数错误,也得到了最大池层的值错误。dim ordering='th'也不起作用。我不明白为什么会这样。请提前帮助某人…谢谢Deep learning 因'的1减去2而导致的负尺寸大小;max#u Poolg2D#u 52/MaxPool';(op:';MaxPool';)具有以下输入形状:[?,148,1,32],deep-learning,Deep Learning,我得到了这个无效的参数错误,也得到了最大池层的值错误。dim ordering='th'也不起作用。我不明白为什么会这样。请提前帮助某人…谢谢 from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D from keras.layers import Activation, Dropout, Flatten, Dense from keras.preprocessing.image impo
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(1024, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.summary()
您共享的次数太多了 每次您的样本通过一个池层时,它的宽度和高度都被除以2。最后,你不能再缩小你的样本规模,但你要继续尝试(显然是在max_pooling_2d_52)
包含完整的tracelog将更容易解释您的问题:)不要使任何层输入大小小于其过滤器大小,否则将抛出错误 输出的大小(尺寸)计算为:[(n-f+p)/s]+1,其中
- n:输入维度
- f:过滤器尺寸
- s:迈步
- p:填充
model = Sequential()
# size : 150 * 150 *3 ( given image size)
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3)))
model.add(Activation('relu'))
# size : 148 * 148 * 32 ( as : n-f+1 = 150 -3+1 =148 )
model.add(MaxPooling2D(pool_size=(2, 2)))
# size : 74 * 74 * 32 ( as : n/2 = 148/2 = 74)
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
# size : 72 * 72 * 32 (74-3+1 =72)
model.add(MaxPooling2D(pool_size=(2, 2)))
# size :36 * 36 * 32 ( 72/2 = 36)
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
# size : 34 * 34* 64 (36-3+1 =34)
model.add(MaxPooling2D(pool_size=(2, 2)))
# size : 17 * 17 * 64 ( 34/2 = 17)
model.add(Conv2D(128, (3, 3)))
model.add(Activation('relu'))
# size : 15* 15 * 128 ( 17-3+1 =15)
model.add(MaxPooling2D(pool_size=(2, 2)))
# size : 7 * 7 * 128 ( 15/2 = 7)
model.add(Conv2D(512, (3, 3)))
model.add(Activation('relu'))
# size : 5 * 5 * 512 (7-3+1 = 5)
model.add(MaxPooling2D(pool_size=(2, 2)))
# size : 2* 2* 512 (5/2 = 2)
model.add(Conv2D(512, (3, 3)))
## now here your n is 2 but f is 3 and n-f is -1 i.e. negative hence the error
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(1024, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))