tf_EEGNet icon indicating copy to clipboard operation
tf_EEGNet copied to clipboard

weight = K.variable(initializer(shape, dtype=dtype), TypeError: __call__() got an unexpected keyword argument 'dtype'

Open dddddkkk opened this issue 3 years ago • 0 comments

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()

dddddkkk avatar Jun 20 '21 06:06 dddddkkk