在循环中实现“ if”语句

时间:2019-07-11 10:43:12

标签: python optimization keras

我正在尝试使用网格搜索来优化卷积神经网络,但是在尝试确定进行网格搜索时应使用多少个密集层和卷积层时遇到了一个问题。

理想情况下,它将首先添加卷积层(取决于试验),然后再添加卷积层。

###     ~~~CREATING MODEL~~~

dense_layers = [0, 1, 2]
conv_layers = [1, 2, 3]
layer_sizes = [16, 32, 64, 128]
layer_sizec1 = [16, 32, 64, 128]
layer_sizec2 = [16, 32, 64, 128]
layer_sizec3 = [16, 32, 64, 128]
layer_size1d = [16, 32, 64, 128]
layer_size2d = [16, 32, 64, 128]


for dense_layer in dense_layers:
    for layer_sizec1 in layer_sizec1:
        for layer_sizec2 in layer_sizec2:
            for layer_sizec3 in layer_sizec3:
                for layer_size1d in layer_size1d:
                    for layer_size2d in layer_size2d:
                        for conv_layer in conv_layers:
                            NAME = "{}-conv-{}-nodes-{}-dense-{}".format(conv_layer, layer_size, dense_layer, int(time.time()))
                            print(NAME)

                            model = Sequential()

                            model.add(Conv2D(layer_size, (3, 3), input_shape = input_shape))
                            model.add(Activation('relu'))
                            model.add(MaxPooling2D(pool_size=(2, 2)))

                            if conv_layer == '1':
                                model.add(Conv2D(layer_sizec1, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))

                            if conv_layer == '2':
                                model.add(Conv2D(layer_sizec1, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))
                                model.add(Conv2D(layer_sizec2, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))

                            if conv_layer == '3':
                                model.add(Conv2D(layer_sizec1, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))
                                model.add(Conv2D(layer_sizec2, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))
                                model.add(Conv2D(layer_sizec3, (3, 3)))
                                model.add(Activation('relu'))
                                model.add(MaxPooling2D(pool_size=(2, 2)))

                            model.add(Flatten())

                            if dense_layer == '0':

                            if dense_layer == '1':
                                model.add(Dense(layer_size1d))
                                model.add(Activation('relu'))            

                            if dense_layer == '2':
                                model.add(Dense(layer_size1d))
                                model.add(Activation('relu'))
                                model.add(Dense(layer_size2d))
                                model.add(Activation('relu'))

                            model.add(Dense(10))
                            model.add(Activation('sigmoid'))

                            model.compile(loss='sparse_categorical_crossentropy', optimizer='adam',metrics=['accuracy'])

                            model.fit(X_train, Y_train, batch_size = 128, nb_epoch = 10, validation_data=(X_val, Y_val), callbacks = [tensorboard])

运行后显示以下通用消息。

Error Message: 

  File "<ipython-input-33-f7d41bf08db6>", line 53
    if dense_layer == '0':
    ^
IndentationError: unexpected indent

2 个答案:

答案 0 :(得分:2)

这将起作用:

if dense_layer == '0':
    pass

答案 1 :(得分:2)

您之后忘记了情况

if dense_layer == '0':

您必须在其中放一些东西,您不能将其留空

相关问题