'Tensorflow parallel execution of convolutions
I have implemented convolutional network with separated convolution branches, but I am not sure if it is executed in parallel right now or is it sequential because of my code. If this is not parallel, how can I achieve that then?
import tensorflow as tf
def build_cnn() -> tf.keras.Model:
inputs = tf.keras.layers.Input((1024, ))
x = tf.keras.layers.Embedding(input_dim=1024, output_dim=16)(inputs)
c1 = tf.keras.layers.Conv1D(filters=128, kernel_size=2, padding="valid")(x)
c1 = tf.keras.layers.BatchNormalization()(c1)
c1 = tf.keras.layers.Conv1D(filters=128, kernel_size=2, padding="valid")(c1)
c1 = tf.keras.layers.Lambda(lambda x: tf.reduce_sum(x, axis=1))(c1)
c2 = tf.keras.layers.Conv1D(filters=192, kernel_size=3, padding="valid")(x)
c2 = tf.keras.layers.BatchNormalization()(c2)
c2 = tf.keras.layers.Conv1D(filters=192, kernel_size=3, padding="valid")(c2)
c2 = tf.keras.layers.Lambda(lambda x: tf.reduce_sum(x, axis=1))(c2)
c3 = tf.keras.layers.Conv1D(filters=256, kernel_size=3, padding="valid")(x)
c3 = tf.keras.layers.BatchNormalization()(c3)
c3 = tf.keras.layers.Conv1D(filters=256, kernel_size=3, padding="valid")(c3)
c3 = tf.keras.layers.Lambda(lambda x: tf.reduce_sum(x, axis=1))(c3)
c4 = tf.keras.layers.Conv1D(filters=512, kernel_size=3, padding="valid")(x)
c4 = tf.keras.layers.BatchNormalization()(c4)
c4 = tf.keras.layers.Conv1D(filters=512, kernel_size=3, padding="valid")(c4)
c4 = tf.keras.layers.Lambda(lambda x: tf.reduce_sum(x, axis=1))(c4)
concat_output = tf.keras.layers.Concatenate()([c1, c2, c3, c4])
concat_output = tf.keras.layers.BatchNormalization()(concat_output)
concat_output = tf.keras.layers.Dense(128 + 192 + 256 + 512, activation="relu")(concat_output)
concat_output = tf.keras.layers.BatchNormalization()(concat_output)
concat_output = tf.keras.layers.Dense(128 + 192 + 256 + 512, activation="relu")(concat_output)
concat_output = tf.keras.layers.BatchNormalization()(concat_output)
outputs = tf.keras.layers.Dense(100, activation="sigmoid")(concat_output)
model = tf.keras.Model(inputs, outputs)
return model
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
