def test_fit_octave(self): inputs = keras.layers.Input(shape=(32, 3)) high, low = OctaveConv1D(13, kernel_size=3, octave=4)(inputs) high, low = keras.layers.MaxPool1D()(high), keras.layers.MaxPool1D()(low) conv = OctaveConv1D(5, kernel_size=3, octave=4, ratio_out=0.0)([high, low]) flatten = keras.layers.Flatten()(conv) outputs = keras.layers.Dense(units=2, activation='softmax')(flatten) model = keras.models.Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') model.summary(line_length=200) self._test_fit(model)
def test_raise_dimension_specified(self): with self.assertRaises(ValueError): inputs = keras.layers.Input(shape=(32, None)) outputs = OctaveConv1D(13, kernel_size=3, ratio_out=0.0)(inputs) model = keras.models.Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') with self.assertRaises(ValueError): inputs_high = keras.layers.Input(shape=(32, 3)) inputs_low = keras.layers.Input(shape=(32, None)) outputs = OctaveConv1D(13, kernel_size=3, ratio_out=0.0)([inputs_high, inputs_low]) model = keras.models.Model(inputs=[inputs_high, inputs_low], outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
def test_make_dual_layer(self): inputs = Input(shape=(32, 3)) conv = OctaveConv1D(13, kernel_size=3)(inputs) pool = octave_dual(conv, MaxPool1D()) conv = OctaveConv1D(7, kernel_size=3)(pool) pool = octave_dual(conv, MaxPool1D()) conv = OctaveConv1D(5, kernel_size=3, ratio_out=0.0)(pool) flatten = octave_dual(conv, Flatten()) outputs = Dense(units=2, activation='softmax')(flatten) model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') model.summary(line_length=200) self._test_fit(model)
def test_fit_lower_output(self): inputs = Input(shape=(32, 3)) high, low = OctaveConv1D(13, kernel_size=3)(inputs) high, low = MaxPool1D()(high), MaxPool1D()(low) high, low = OctaveConv1D(7, kernel_size=3)([high, low]) high, low = MaxPool1D()(high), MaxPool1D()(low) conv = OctaveConv1D(5, kernel_size=3, ratio_out=1.0)([high, low]) flatten = Flatten()(conv) outputs = Dense(units=2, activation='softmax')(flatten) model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') model.summary(line_length=200) self._test_fit(model)
def test_raise_octave_divisible(self): with self.assertRaises(ValueError): inputs = Input(shape=(32, 3)) outputs = OctaveConv1D(13, kernel_size=3, octave=5, ratio_out=0.0)(inputs) model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')