tf_EEGNet
tf_EEGNet copied to clipboard
weight = K.variable(initializer(shape, dtype=dtype), TypeError: __call__() got an unexpected keyword argument 'dtype'
there is error .I dont why it happen ,Can you take the time to help me take a look? Thank you this is the code:
import tensorflow as tf import numpy as np from keras.models import Model from keras.layers.core import Dense, Activation, Dropout from keras.layers.convolutional import Conv2D, AveragePooling2D, MaxPooling2D,DepthwiseConv2D from keras.layers.convolutional import SeparableConv2D from keras.layers.normalization import BatchNormalization from keras.layers import SpatialDropout2D from keras.regularizers import l1_l2 from keras.constraints import maxnorm from keras.layers import Input, Flatten #from keras.applications.mobilenet import DepthwiseConv2D import scipy.io as sio
MAX_NORM = 1.0 fs = 128 # sampling frequency
Setting the length of the temporal kernel at half the sampling rate allows for capturing frequency information at 2Hz and above
def EEGNet_Classifier_new(nb_classes, Chans = 6, Samples = 128, regRate = 0.0001, dropoutRate = 0.5, kernLength = fs//2, numFilters = 8, numSpatialFliters=1): # kernlenth的取值为采样频率的一半
input1 = Input(shape=(1, Chans, Samples))
##################################################################
layer1 = Conv2D(numFilters, (1, kernLength), padding='same', # temporal kernel
kernel_constraint = maxnorm(MAX_NORM, axis=[0,1,2]),
input_shape = (1, Chans, Samples), # channels_first
use_bias = False)(input1) # output_size [F, C, T]
layer1 = BatchNormalization(axis = 1)(layer1) # bn_axis = 1 if K.image_data_format() == 'channels_first' else 3
layer1 = DepthwiseConv2D((Chans, 1), padding='same', # spatial filters within each feature map
depth_multiplier=numSpatialFliters,
depthwise_constraint = maxnorm(MAX_NORM, axis=[0,1,2]),
use_bias = False)(layer1)
layer1 = BatchNormalization(axis = 1)(layer1)
layer1 = Activation('elu')(layer1) # output_size [D*F, 1, T]
layer1 = AveragePooling2D((1, 4))(layer1) # output_size [D*F, 1, T//4]
layer1 = Dropout(dropoutRate)(layer1) # SpatialDropout2D(dropoutRate)(layer1)
layer2 = SeparableConv2D(filters=numFilters*numSpatialFliters, padding='same', # equal to DepthwiseConv2D + 1*1-conv2d
kernel_size=(1, 16), depth_multiplier=1,
depthwise_constraint = maxnorm(MAX_NORM, axis=[0,1,2]),
pointwise_initializer = maxnorm(MAX_NORM, axis=[0,1,2]),
use_bias = False)(layer1)
layer2 = BatchNormalization(axis=1)(layer2)
layer2 = Activation('elu')(layer2) # output_size [D*F, 1, T//4]
layer2 = AveragePooling2D((1, 8))(layer2)
layer2 = Dropout(dropoutRate)(layer1) # SpatialDropout2D(dropoutRate)(layer2) # output_size [D*F, 1, T//32]
flatten = Flatten(name = 'flatten')(layer2)
dense = Dense(nb_classes, name='dense', kernel_constraint=maxnorm(0.25, axis=0))(flatten)
softmax = Activation('softmax', name='softmax')(dense)
return Model(inputs=input1, outputs=softmax)
if name == "main": model = EEGNet_Classifier_new(2) model.compile('Adam', loss='categorical_crossentropy', metrics=['accuracy']) model.summary()