events = ['wake', 'light', 'deep', 'rem']
events_format = [
{
'name': 'wake',
'h5_path': 'wake',
'probability': 1 / len(events)
},
{
'name': 'light',
'h5_path': 'light',
'probability': 1 / len(events)
},
{
'name': 'deep',
'h5_path': 'deep',
'probability': 1 / len(events)
},
{
'name': 'rem',
'h5_path': 'rem',
'probability': 1 / len(events)
}
]
signals_format = {
"ACC_merge_fft_spec": {
"add": True,
"fs_post": 0.5,
"h5_path": "acc_signal",
"dimensions": [
32,
1
],
"channel_idx": [
0,
1,
2
],
"preprocessing": [
{
"args": {
"window_size": 30
},
"type": "median"
},
{
"args": {
"iqr_window": 300,
"median_window": 300
},
"type": "iqr_normalization_adaptive"
},
{
"args": {
"threshold": 20
},
"type": "clip_by_iqr"
},
{
"args": {
"nfft": 512,
"f_max": 6,
"f_min": 0,
"f_sub": 3,
"window": 320,
"noverlap": 256
},
"type": "cal_psd"
}
],
"transformations": {
"freq_mask": {},
"time_mask": {},
"image_translation": {}
},
"batch_normalization": {}
},
"PPG_fft_spec": {
"add": False,
"fs_post": 0.5,
"h5_path": "ppg_signal",
"dimensions": [
32,
1
],
"channel_idx": [
0
],
"preprocessing": [
{
"args": {},
"type": "zscore"
},
{
"args": {},
"type": "change_PPG_direction"
},
{
"args": {
"iqr_window": 301,
"median_window": 301
},
"type": "iqr_normalization_adaptive"
},
{
"args": {
"threshold": 20
},
"type": "clip_by_iqr"
},
{
"args": {
"nfft": 512,
"f_max": 2.1,
"f_min": 0.1,
"f_sub": 1,
"window": 320,
"noverlap": 256
},
"type": "cal_psd"
}
],
"transformations": {
"freq_mask": {},
"time_mask": {},
"image_translation": {}
},
"batch_normalization": {}
}
}
data_directory = '.'
dataset_params = {
"h5_directory": data_directory,
"signals_format": signals_format,
"window": 30 * 2 ** 10,
"number_of_channels": len(signals_format),
"events_format": events_format,
"prediction_resolution": 30,
"overlap": 0.25,
"minimum_overlap": 0.1,
"batch_size": 2,
"cache_data": True,
"n_jobs": 4,
"use_mask": True,
"load_signal_in_RAM": True
}
@dataclass
class DSLite:
fsTime: float
nSpace: int
nChannels: int
window: int
prediction_resolution: int
def __init__(self, h5_directory, signals_format, window, overlap, batch_size, minimum_overlap, events_format, number_of_channels, prediction_resolution, load_signal_in_RAM, use_mask, cache_data, n_jobs):
# datasets
self.h5_directory = h5_directory
# signal modalities
self.signals_format = signals_format
self.window = window
self.number_of_channels = number_of_channels
self.prediction_resolution = prediction_resolution
self.overlap = overlap
self.batch_size = batch_size
self.predictions_per_window = window // prediction_resolution
self.nChannels = sum([sf['dimensions'][-1] for sf in signals_format.values()])
self.nSpace = [sf['dimensions'][0] for sf in signals_format.values()][0] # assumes same space resolution
self.fsTime = [sf['fs_post'] for sf in signals_format.values()][0] # assumes same temporal resolution
# events
self.events_format = events_format
self.minimum_overlap = minimum_overlap
self.number_of_events = len(events_format)
self.number_of_classes = len(events_format)
self.event_probabilities = [event['probability'] for event in events_format]
self.event_labels = [event['name'] for event in events_format]
assert sum(self.event_probabilities) <= 1
# training
self.load_signal_in_RAM = load_signal_in_RAM
self.use_mask = use_maskSupport code for Mads Olsen’s group’s model
load_saved_keras
load_saved_keras ()
cal_psd
cal_psd (x, fs, window, noverlap, nfft, f_min, f_max, f_sub=1)
https://github.com/MADSOLSEN/SleepStagePrediction/blob/d47ff488f5cedd3b0459593a53fc4f92fc3660a2/signal_processing/spectrogram.py#L91
iqr_normalization_adaptive
iqr_normalization_adaptive (x, fs, median_window, iqr_window)
clip_by_iqr
clip_by_iqr (x, fs, threshold=20)
median
median (x, fs, window_size)
determine_depth
determine_depth (temporal_shape, temporal_max_pool_size)
conv_block
conv_block (x, features, kernel_size, data_format='channels_last', weight_decay=0.0, residual=True, stochastic_depth=True, activation='gelu')
factory_ResUNet
factory_ResUNet (input_shape, num_classes, num_outputs, depth=None, init_filter_num=8, filter_increment_factor=1.2599210498948732, kernel_size=(16, 1), max_pool_size=(2, 1), activation='gelu', output_layer='sigmoid', weight_decay=0.0, residual=False, stochastic_depth=False, data_format='channels_last')
ds_train = DSLite(**dataset_params)
# model creation
model_params = {
'input_shape': [int(ds_train.fsTime * ds_train.window), ds_train.nSpace, ds_train.nChannels],
'num_classes': len(events),
'num_outputs': ds_train.window // ds_train.prediction_resolution,
'depth': 9,
'init_filter_num': 16,
'filter_increment_factor': 2 ** (1 / 3),
'max_pool_size': (2, 2),
'kernel_size': (16, 3)
}
resunet = factory_ResUNet(**model_params)
resunet.summary() # print summary.WARNING:tensorflow:From c:\Users\tavel\Desktop\Internship-Arcascope\2024_internship\.venv\Lib\site-packages\keras\src\backend\tensorflow\core.py:187: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.
Model: "functional_1"
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ Layer (type) ┃ Output Shape ┃ Param # ┃ Connected to ┃ ┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ input_layer │ (None, 15360, 32, │ 0 │ - │ │ (InputLayer) │ 2) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ zero_padding2d │ (None, 16384, 32, │ 0 │ input_layer[0][0] │ │ (ZeroPadding2D) │ 2) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d (Conv2D) │ (None, 16384, 32, │ 1,552 │ zero_padding2d[0… │ │ │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalization │ (None, 16384, 32, │ 64 │ conv2d[0][0] │ │ (BatchNormalizatio… │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_1 (Conv2D) │ (None, 8192, 16, │ 1,300 │ batch_normalizat… │ │ │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 8192, 16, │ 80 │ conv2d_1[0][0] │ │ (BatchNormalizatio… │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_2 (Conv2D) │ (None, 8192, 16, │ 19,220 │ batch_normalizat… │ │ │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 8192, 16, │ 80 │ conv2d_2[0][0] │ │ (BatchNormalizatio… │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_3 (Conv2D) │ (None, 4096, 8, │ 2,025 │ batch_normalizat… │ │ │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 4096, 8, │ 100 │ conv2d_3[0][0] │ │ (BatchNormalizatio… │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_4 (Conv2D) │ (None, 4096, 8, │ 30,025 │ batch_normalizat… │ │ │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 4096, 8, │ 100 │ conv2d_4[0][0] │ │ (BatchNormalizatio… │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_5 (Conv2D) │ (None, 2048, 4, │ 3,232 │ batch_normalizat… │ │ │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 2048, 4, │ 128 │ conv2d_5[0][0] │ │ (BatchNormalizatio… │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_6 (Conv2D) │ (None, 2048, 4, │ 49,184 │ batch_normalizat… │ │ │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 2048, 4, │ 128 │ conv2d_6[0][0] │ │ (BatchNormalizatio… │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_7 (Conv2D) │ (None, 1024, 2, │ 5,160 │ batch_normalizat… │ │ │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 1024, 2, │ 160 │ conv2d_7[0][0] │ │ (BatchNormalizatio… │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_8 (Conv2D) │ (None, 1024, 2, │ 51,240 │ batch_normalizat… │ │ │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 1024, 2, │ 160 │ conv2d_8[0][0] │ │ (BatchNormalizatio… │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_9 (Conv2D) │ (None, 512, 1, │ 8,050 │ batch_normalizat… │ │ │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 512, 1, │ 200 │ conv2d_9[0][0] │ │ (BatchNormalizatio… │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_10 (Conv2D) │ (None, 512, 1, │ 40,050 │ batch_normalizat… │ │ │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 512, 1, │ 200 │ conv2d_10[0][0] │ │ (BatchNormalizatio… │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_11 (Conv2D) │ (None, 256, 1, │ 6,464 │ batch_normalizat… │ │ │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 256, 1, │ 256 │ conv2d_11[0][0] │ │ (BatchNormalizatio… │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_12 (Conv2D) │ (None, 256, 1, │ 65,600 │ batch_normalizat… │ │ │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 256, 1, │ 256 │ conv2d_12[0][0] │ │ (BatchNormalizatio… │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_13 (Conv2D) │ (None, 128, 1, │ 10,320 │ batch_normalizat… │ │ │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 128, 1, │ 320 │ conv2d_13[0][0] │ │ (BatchNormalizatio… │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_14 (Conv2D) │ (None, 128, 1, │ 102,480 │ batch_normalizat… │ │ │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 128, 1, │ 320 │ conv2d_14[0][0] │ │ (BatchNormalizatio… │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_15 (Conv2D) │ (None, 64, 1, │ 16,261 │ batch_normalizat… │ │ │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 64, 1, │ 404 │ conv2d_15[0][0] │ │ (BatchNormalizatio… │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_16 (Conv2D) │ (None, 64, 1, │ 163,317 │ batch_normalizat… │ │ │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 64, 1, │ 404 │ conv2d_16[0][0] │ │ (BatchNormalizatio… │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_17 (Conv2D) │ (None, 32, 1, │ 25,984 │ batch_normalizat… │ │ │ 128) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 32, 1, │ 512 │ conv2d_17[0][0] │ │ (BatchNormalizatio… │ 128) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_18 (Conv2D) │ (None, 32, 1, │ 262,272 │ batch_normalizat… │ │ │ 128) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 32, 1, │ 512 │ conv2d_18[0][0] │ │ (BatchNormalizatio… │ 128) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose │ (None, 64, 1, │ 25,957 │ batch_normalizat… │ │ (Conv2DTranspose) │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 64, 1, │ 404 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate │ (None, 64, 1, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 202) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_19 (Conv2D) │ (None, 64, 1, │ 326,533 │ concatenate[0][0] │ │ │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 64, 1, │ 404 │ conv2d_19[0][0] │ │ (BatchNormalizatio… │ 101) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_1 │ (None, 128, 1, │ 16,240 │ batch_normalizat… │ │ (Conv2DTranspose) │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 128, 1, │ 320 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_1 │ (None, 128, 1, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 160) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_20 (Conv2D) │ (None, 128, 1, │ 204,880 │ concatenate_1[0]… │ │ │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 128, 1, │ 320 │ conv2d_20[0][0] │ │ (BatchNormalizatio… │ 80) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_2 │ (None, 256, 1, │ 10,304 │ batch_normalizat… │ │ (Conv2DTranspose) │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 256, 1, │ 256 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_2 │ (None, 256, 1, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 128) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_21 (Conv2D) │ (None, 256, 1, │ 131,136 │ concatenate_2[0]… │ │ │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 256, 1, │ 256 │ conv2d_21[0][0] │ │ (BatchNormalizatio… │ 64) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_3 │ (None, 512, 1, │ 6,450 │ batch_normalizat… │ │ (Conv2DTranspose) │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 512, 1, │ 200 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_3 │ (None, 512, 1, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 100) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_22 (Conv2D) │ (None, 512, 1, │ 80,050 │ concatenate_3[0]… │ │ │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 512, 1, │ 200 │ conv2d_22[0][0] │ │ (BatchNormalizatio… │ 50) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_4 │ (None, 1024, 2, │ 8,040 │ batch_normalizat… │ │ (Conv2DTranspose) │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 1024, 2, │ 160 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_4 │ (None, 1024, 2, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 80) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_23 (Conv2D) │ (None, 1024, 2, │ 102,440 │ concatenate_4[0]… │ │ │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 1024, 2, │ 160 │ conv2d_23[0][0] │ │ (BatchNormalizatio… │ 40) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_5 │ (None, 2048, 4, │ 5,152 │ batch_normalizat… │ │ (Conv2DTranspose) │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 2048, 4, │ 128 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_5 │ (None, 2048, 4, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 64) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_24 (Conv2D) │ (None, 2048, 4, │ 98,336 │ concatenate_5[0]… │ │ │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 2048, 4, │ 128 │ conv2d_24[0][0] │ │ (BatchNormalizatio… │ 32) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_6 │ (None, 4096, 8, │ 3,225 │ batch_normalizat… │ │ (Conv2DTranspose) │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 4096, 8, │ 100 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_6 │ (None, 4096, 8, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 50) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_25 (Conv2D) │ (None, 4096, 8, │ 60,025 │ concatenate_6[0]… │ │ │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 4096, 8, │ 100 │ conv2d_25[0][0] │ │ (BatchNormalizatio… │ 25) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_7 │ (None, 8192, 16, │ 2,020 │ batch_normalizat… │ │ (Conv2DTranspose) │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 8192, 16, │ 80 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_7 │ (None, 8192, 16, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 40) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_26 (Conv2D) │ (None, 8192, 16, │ 38,420 │ concatenate_7[0]… │ │ │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 8192, 16, │ 80 │ conv2d_26[0][0] │ │ (BatchNormalizatio… │ 20) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_transpose_8 │ (None, 16384, 32, │ 1,296 │ batch_normalizat… │ │ (Conv2DTranspose) │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 16384, 32, │ 64 │ conv2d_transpose… │ │ (BatchNormalizatio… │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ concatenate_8 │ (None, 16384, 32, │ 0 │ batch_normalizat… │ │ (Concatenate) │ 32) │ │ batch_normalizat… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv2d_27 (Conv2D) │ (None, 16384, 32, │ 24,592 │ concatenate_8[0]… │ │ │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ batch_normalizatio… │ (None, 16384, 32, │ 64 │ conv2d_27[0][0] │ │ (BatchNormalizatio… │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ lambda (Lambda) │ (None, 15360, 32, │ 0 │ batch_normalizat… │ │ │ 16) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ reshape (Reshape) │ (None, 15360, │ 0 │ lambda[0][0] │ │ │ 512) │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv1d (Conv1D) │ (None, 15360, 16) │ 8,208 │ reshape[0][0] │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ average_pooling1d │ (None, 1024, 16) │ 0 │ conv1d[0][0] │ │ (AveragePooling1D) │ │ │ │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ conv1d_1 (Conv1D) │ (None, 1024, 4) │ 68 │ average_pooling1… │ ├─────────────────────┼───────────────────┼────────────┼───────────────────┤ │ dense (Dense) │ (None, 1024, 4) │ 20 │ conv1d_1[0][0] │ └─────────────────────┴───────────────────┴────────────┴───────────────────┘
Total params: 2,024,936 (7.72 MB)
Trainable params: 2,021,032 (7.71 MB)
Non-trainable params: 3,904 (15.25 KB)