test_conv2d_model.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:deeplift 作者: kundajelab 项目源码 文件源码
def setUp(self):
        if (hasattr(keras, '__version__')==False):
            self.keras_version = 0.2 #didn't have the __version__ tag
        else:
            self.keras_version = float(keras.__version__[0:3])

        self.inp = (np.random.randn(10*10*51*51)
                    .reshape(10,10,51,51))
        self.keras_model = keras.models.Sequential()
        conv_layer = keras.layers.convolutional.Convolution2D(
                        nb_filter=2, nb_row=4, nb_col=4, subsample=(2,2),
                        activation="relu", input_shape=(10,51,51),
                        dim_ordering='th')
        self.keras_model.add(conv_layer)
        if (self.keras_version > 0.2):
            self.keras_model.add(keras.layers.convolutional.MaxPooling2D(
                             pool_size=(4,4), strides=(2,2),
                             dim_ordering='th')) 
            self.keras_model.add(keras.layers.convolutional.AveragePooling2D(
                             pool_size=(4,4), strides=(2,2),
                             dim_ordering='th'))
        else:
            print(self.keras_version)
            self.keras_model.add(keras.layers.convolutional.MaxPooling2D(
                             pool_size=(4,4), stride=(2,2)))  
            #There is no average pooling in version 0.2.0
        self.keras_model.add(keras.layers.core.Flatten())
        self.keras_model.add(keras.layers.core.Dense(output_dim=1))
        self.keras_model.add(keras.layers.core.Activation("sigmoid"))
        self.keras_model.compile(loss="mse", optimizer="sgd")
        if (self.keras_version <= 0.3): 
            self.keras_output_fprop_func = compile_func(
                            [self.keras_model.layers[0].input],
                            self.keras_model.layers[-1].get_output(False))
            grad = theano.grad(theano.tensor.sum(
                       self.keras_model.layers[-2].get_output(False)[:,0]),
                       self.keras_model.layers[0].input)
            self.grad_func = theano.function(
                         [self.keras_model.layers[0].input],
                         grad, allow_input_downcast=True,
                         on_unused_input='ignore')
        else:
            keras_output_fprop_func = compile_func(
                [self.keras_model.layers[0].input,
                 keras.backend.learning_phase()],
                self.keras_model.layers[-1].output)
            self.keras_output_fprop_func =\
                lambda x: keras_output_fprop_func(x,False)
            grad = theano.grad(theano.tensor.sum(
                       self.keras_model.layers[-2].output[:,0]),
                       self.keras_model.layers[0].input)
            grad_func = theano.function(
                         [self.keras_model.layers[0].input,
                          keras.backend.learning_phase()],
                         grad, allow_input_downcast=True,
                         on_unused_input='ignore')
            self.grad_func = lambda x: grad_func(x, False)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号