第一个Conv2D层中的输入形状应该是(100,100,1),但是输出是(None,98,98,200)。我知道200和None决定什么,但是我不确定98作为参数。 此外,除此之外,我随机选择200个作为我的模型在Conv2D中的过滤器数量。我应该如何为模型确定合适数量的过滤器。它是基于反复试验的吗?请帮忙。谢谢!
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten, Dropout
from keras.layers import Conv2D, MaxPooling2D
from keras.callbacks import ModelCheckpoint
print(data.shape[1:])
model = Sequential()
model.add(Conv2D(200, (3,3), input_shape = data.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size = (2,2)))
model.add(Conv2D(100,(3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(50, activation = 'relu'))
model.add(Dense(2, activation = 'softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.summary()
(100,100,1) 型号:“ sequential_3”
conv2d_5(Conv2D)(无,98、98、200)2000
activation_5(激活)(无,98、98、200)0
max_pooling2d_5(MaxPooling2(None,49,49,200)0
conv2d_6(Conv2D)(无,47,47,100)180100
activation_6(激活)(无,47、47、100)0
max_pooling2d_6(MaxPooling2(None,23,23,100)0
flatten_3(Flatten)(无,52900)0
dropout_3(Dropout)(无,52900)0
dense_5(Dense)(None,50)2645050
总参数:2,827,252 可训练的参数:2,827,252 不可训练的参数:0
答案 0 :(得分:3)
将padding="same"
作为参数添加到conv2d
中,输出尺寸将与输入尺寸相同。
默认设置为padding="valid"
,由于您使用3x3滤镜且步长为1,因此最终尺寸为98x98,因为您的3x3滤镜适合100x100 98倍。