我目前正在尝试构建一个自我调整网络,这样给定任意数量的输入,应该始终提供形状 (15,145) 的输出
网络结构非常简单,如下所示:
inputs = 36
list_of_input = [Input(shape = (45,5,3)) for i in range(inputs)]
list_of_conv_output = []
list_of_max_out = []
for i in range(splits):
list_of_conv_output.append(Conv2D(filters = 145 , kernel_size = (30,3))(list_of_input[i]))
list_of_max_out.append((MaxPooling2D(pool_size=(3,2))(list_of_conv_output[i])))
merge = keras.layers.concatenate(list_of_max_out)
#reshape = Reshape((merge.shape[0],merge.shape[3]))(merge)
dense1 = Dense(units = 1000, activation = 'relu', name = "dense_1")(merge)
dense2 = Dense(units = 1000, activation = 'relu', name = "dense_2")(dense1)
dense3 = Dense(units = 145 , activation = 'softmax', name = "dense_3")(dense2)
model = Model(inputs = list_of_input , outputs = dense3)
model.compile(loss="sparse_categorical_crossentropy", optimizer="adam")
print model.summary()
raw_input("SDasd")
hist_current = model.fit(x = [train_input[i] for i in range(100)],
y = labels_train_data,
shuffle=False,
validation_data=([test_input[i] for i in range(10)], labels_test_data),
validation_split=0.1,
epochs=150000,
batch_size = 15,
verbose=1)
它被调整为具有 36 个输入,这将使它的输出形状为 (15,1,145) - 但是我如何确定过滤器的数量、内核大小和池大小,这将给我所需的输出大小。该网络应该用于分类,长度为 15 的输出向量在第一轴(45 = 15 * 3)中的每三个条目都有类。类的总数是 145,因此输出维度 (15,145)