diff --git a/Number-Of-CNN-Layers/One/logs/20230322-152209/train/events.out.tfevents.1679469736.WEIYUQING.11456.0.v2 b/Number-Of-CNN-Layers/One/logs/20230322-152209/train/events.out.tfevents.1679469736.WEIYUQING.11456.0.v2 new file mode 100644 index 0000000..54f28eb Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-152209/train/events.out.tfevents.1679469736.WEIYUQING.11456.0.v2 differ diff --git a/Number-Of-CNN-Layers/One/logs/20230322-152209/validation/events.out.tfevents.1679469741.WEIYUQING.11456.1.v2 b/Number-Of-CNN-Layers/One/logs/20230322-152209/validation/events.out.tfevents.1679469741.WEIYUQING.11456.1.v2 new file mode 100644 index 0000000..59c2038 Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-152209/validation/events.out.tfevents.1679469741.WEIYUQING.11456.1.v2 differ diff --git a/Number-Of-CNN-Layers/One/logs/20230322-152619/train/events.out.tfevents.1679469985.WEIYUQING.28308.0.v2 b/Number-Of-CNN-Layers/One/logs/20230322-152619/train/events.out.tfevents.1679469985.WEIYUQING.28308.0.v2 new file mode 100644 index 0000000..cdbafaf Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-152619/train/events.out.tfevents.1679469985.WEIYUQING.28308.0.v2 differ diff --git a/Number-Of-CNN-Layers/One/logs/20230322-152619/validation/events.out.tfevents.1679469991.WEIYUQING.28308.1.v2 b/Number-Of-CNN-Layers/One/logs/20230322-152619/validation/events.out.tfevents.1679469991.WEIYUQING.28308.1.v2 new file mode 100644 index 0000000..8ffc5c2 Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-152619/validation/events.out.tfevents.1679469991.WEIYUQING.28308.1.v2 differ diff --git a/Number-Of-CNN-Layers/One/logs/20230322-183100/train/events.out.tfevents.1679481065.WEIYUQING.31520.0.v2 b/Number-Of-CNN-Layers/One/logs/20230322-183100/train/events.out.tfevents.1679481065.WEIYUQING.31520.0.v2 new file mode 100644 index 0000000..73f373b Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-183100/train/events.out.tfevents.1679481065.WEIYUQING.31520.0.v2 differ diff --git a/Number-Of-CNN-Layers/One/logs/20230322-183100/validation/events.out.tfevents.1679481072.WEIYUQING.31520.1.v2 b/Number-Of-CNN-Layers/One/logs/20230322-183100/validation/events.out.tfevents.1679481072.WEIYUQING.31520.1.v2 new file mode 100644 index 0000000..5af1665 Binary files /dev/null and b/Number-Of-CNN-Layers/One/logs/20230322-183100/validation/events.out.tfevents.1679481072.WEIYUQING.31520.1.v2 differ diff --git a/Number-Of-CNN-Layers/One/model/ecg_model_one_layer.h5 b/Number-Of-CNN-Layers/One/model/ecg_model_one_layer.h5 index 7ad019c..cebc7fa 100644 Binary files a/Number-Of-CNN-Layers/One/model/ecg_model_one_layer.h5 and b/Number-Of-CNN-Layers/One/model/ecg_model_one_layer.h5 differ diff --git a/Number-Of-CNN-Layers/One/picture/accuracy.png b/Number-Of-CNN-Layers/One/picture/accuracy.png index a21e48d..ac6246d 100644 Binary files a/Number-Of-CNN-Layers/One/picture/accuracy.png and b/Number-Of-CNN-Layers/One/picture/accuracy.png differ diff --git a/Number-Of-CNN-Layers/One/picture/confusion_matrix.png b/Number-Of-CNN-Layers/One/picture/confusion_matrix.png index faed28f..3f72435 100644 Binary files a/Number-Of-CNN-Layers/One/picture/confusion_matrix.png and b/Number-Of-CNN-Layers/One/picture/confusion_matrix.png differ diff --git a/Number-Of-CNN-Layers/One/picture/loss.png b/Number-Of-CNN-Layers/One/picture/loss.png index 839b704..b8ae0fa 100644 Binary files a/Number-Of-CNN-Layers/One/picture/loss.png and b/Number-Of-CNN-Layers/One/picture/loss.png differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-153958/train/events.out.tfevents.1679470803.WEIYUQING.11436.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-153958/train/events.out.tfevents.1679470803.WEIYUQING.11436.0.v2 new file mode 100644 index 0000000..88da74c Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-153958/train/events.out.tfevents.1679470803.WEIYUQING.11436.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-153958/validation/events.out.tfevents.1679470813.WEIYUQING.11436.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-153958/validation/events.out.tfevents.1679470813.WEIYUQING.11436.1.v2 new file mode 100644 index 0000000..4157521 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-153958/validation/events.out.tfevents.1679470813.WEIYUQING.11436.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-154449/train/events.out.tfevents.1679471093.WEIYUQING.24480.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-154449/train/events.out.tfevents.1679471093.WEIYUQING.24480.0.v2 new file mode 100644 index 0000000..6d14923 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-154449/train/events.out.tfevents.1679471093.WEIYUQING.24480.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-154449/validation/events.out.tfevents.1679471098.WEIYUQING.24480.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-154449/validation/events.out.tfevents.1679471098.WEIYUQING.24480.1.v2 new file mode 100644 index 0000000..82bf166 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-154449/validation/events.out.tfevents.1679471098.WEIYUQING.24480.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-154915/train/events.out.tfevents.1679471359.WEIYUQING.19048.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-154915/train/events.out.tfevents.1679471359.WEIYUQING.19048.0.v2 new file mode 100644 index 0000000..80d6cb0 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-154915/train/events.out.tfevents.1679471359.WEIYUQING.19048.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-154915/validation/events.out.tfevents.1679471363.WEIYUQING.19048.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-154915/validation/events.out.tfevents.1679471363.WEIYUQING.19048.1.v2 new file mode 100644 index 0000000..1cfa175 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-154915/validation/events.out.tfevents.1679471363.WEIYUQING.19048.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-164755/train/events.out.tfevents.1679474881.WEIYUQING.18344.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-164755/train/events.out.tfevents.1679474881.WEIYUQING.18344.0.v2 new file mode 100644 index 0000000..df24243 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-164755/train/events.out.tfevents.1679474881.WEIYUQING.18344.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-164755/validation/events.out.tfevents.1679474930.WEIYUQING.18344.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-164755/validation/events.out.tfevents.1679474930.WEIYUQING.18344.1.v2 new file mode 100644 index 0000000..569657b Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-164755/validation/events.out.tfevents.1679474930.WEIYUQING.18344.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-180405/train/events.out.tfevents.1679479451.WEIYUQING.19408.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-180405/train/events.out.tfevents.1679479451.WEIYUQING.19408.0.v2 new file mode 100644 index 0000000..065e1d4 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-180405/train/events.out.tfevents.1679479451.WEIYUQING.19408.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-180405/validation/events.out.tfevents.1679479456.WEIYUQING.19408.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-180405/validation/events.out.tfevents.1679479456.WEIYUQING.19408.1.v2 new file mode 100644 index 0000000..cab1cb8 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-180405/validation/events.out.tfevents.1679479456.WEIYUQING.19408.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-180740/train/events.out.tfevents.1679479665.WEIYUQING.18252.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-180740/train/events.out.tfevents.1679479665.WEIYUQING.18252.0.v2 new file mode 100644 index 0000000..ade9ea8 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-180740/train/events.out.tfevents.1679479665.WEIYUQING.18252.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-180740/validation/events.out.tfevents.1679479670.WEIYUQING.18252.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-180740/validation/events.out.tfevents.1679479670.WEIYUQING.18252.1.v2 new file mode 100644 index 0000000..dfd106f Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-180740/validation/events.out.tfevents.1679479670.WEIYUQING.18252.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-183615/train/events.out.tfevents.1679481379.WEIYUQING.13820.0.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-183615/train/events.out.tfevents.1679481379.WEIYUQING.13820.0.v2 new file mode 100644 index 0000000..cf15a62 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-183615/train/events.out.tfevents.1679481379.WEIYUQING.13820.0.v2 differ diff --git a/Number-Of-CNN-Layers/Two/logs/20230322-183615/validation/events.out.tfevents.1679481385.WEIYUQING.13820.1.v2 b/Number-Of-CNN-Layers/Two/logs/20230322-183615/validation/events.out.tfevents.1679481385.WEIYUQING.13820.1.v2 new file mode 100644 index 0000000..3301c93 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/logs/20230322-183615/validation/events.out.tfevents.1679481385.WEIYUQING.13820.1.v2 differ diff --git a/Number-Of-CNN-Layers/Two/model/ecg_model_one_layer.h5 b/Number-Of-CNN-Layers/Two/model/ecg_model_one_layer.h5 index bb5a761..7c0960c 100644 Binary files a/Number-Of-CNN-Layers/Two/model/ecg_model_one_layer.h5 and b/Number-Of-CNN-Layers/Two/model/ecg_model_one_layer.h5 differ diff --git a/Number-Of-CNN-Layers/Two/picture/accuracy.png b/Number-Of-CNN-Layers/Two/picture/accuracy.png new file mode 100644 index 0000000..b2d3920 Binary files /dev/null and b/Number-Of-CNN-Layers/Two/picture/accuracy.png differ diff --git a/Number-Of-CNN-Layers/Two/picture/confusion_matrix.png b/Number-Of-CNN-Layers/Two/picture/confusion_matrix.png index e773f24..0c0099e 100644 Binary files a/Number-Of-CNN-Layers/Two/picture/confusion_matrix.png and b/Number-Of-CNN-Layers/Two/picture/confusion_matrix.png differ diff --git a/Number-Of-CNN-Layers/Two/picture/loss.png b/Number-Of-CNN-Layers/Two/picture/loss.png new file mode 100644 index 0000000..3d834bc Binary files /dev/null and b/Number-Of-CNN-Layers/Two/picture/loss.png differ diff --git a/Number-Of-CNN-Layers/_mian_tensorflow_oneLayerCNN.py b/Number-Of-CNN-Layers/_mian_tensorflow_oneLayerCNN.py index 060cb02..b6a622d 100644 --- a/Number-Of-CNN-Layers/_mian_tensorflow_oneLayerCNN.py +++ b/Number-Of-CNN-Layers/_mian_tensorflow_oneLayerCNN.py @@ -58,17 +58,17 @@ def CNN_model_level_one(): # ECG data cant add 0 in edge, will broken data ,take false answer. So we need padding same data in edge. - # take four 21*1 conv excitation function used RElu - tf.keras.layers.Conv1D(filters=4, kernel_size=21, strides=1, padding='same', activation='relu'), - # take four 3*1 pool,take strids 2. - - tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='same'), + # take four conv excitation function used RElu + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + # take four pool,take strids 2. + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), # tf.keras.layers.Conv1D(filters=4, kernel_size=21, strides=1, padding='same', activation='relu'), # tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='same'), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), + # add dropout layer, dropout rate = 0.2 tf.keras.layers.Dropout(rate=0.2), tf.keras.layers.Dense(5, activation='softmax') ]) diff --git a/Number-Of-CNN-Layers/_mian_tensorflow_threeLayerCNN.py b/Number-Of-CNN-Layers/_mian_tensorflow_threeLayerCNN.py new file mode 100644 index 0000000..b1d1aa2 --- /dev/null +++ b/Number-Of-CNN-Layers/_mian_tensorflow_threeLayerCNN.py @@ -0,0 +1,82 @@ +import datetime +import os + +import numpy as np +import pywt +import wfdb +import tensorflow as tf +from tensorflow import keras +from utils_threeLayerCNN import loadData, plot_history_tf, plot_heat_map + +#from ECG_read_weiyuqing_without_wfdb import ECGDATAPATH +#PATH of this test +Project_PATH = "../Number-Of-CNN-Layers/Three/" +#PICTUREPATH= Project_PATH + "picture/" +log_dir = Project_PATH + "logs/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") +model_Path_one = Project_PATH + "model/ecg_model_one_layer.h5" +#model_Path_one = Project_PATH + "ecg_model_one_layer.h5" + +RATIO = 0.3 +RANDOM_SEED = 42 +BATCH_SIZE = 128 +NUM_EPOCHS = 30 + + +def CNN_model_level_one(): + leavlOneModel = tf.keras.models.Sequential([ + + + #take test for two CNN layers model + + tf.keras.layers.InputLayer(input_shape=(300, 1)), + + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), + + tf.keras.layers.Flatten(), + tf.keras.layers.Dense(128, activation='relu'), + tf.keras.layers.Dropout(rate=0.2), + tf.keras.layers.Dense(5, activation='softmax') + ]) + return leavlOneModel + + +def main(): + # get traxin test + X_train, X_test, y_train, y_test = loadData(RATIO, RANDOM_SEED) + + # get model or create model + if os.path.exists(model_Path_one): + print(' get model in h5 file') + model = tf.keras.models.load_model(filepath=model_Path_one) + else: + # create new model(if model unexists) + model = CNN_model_level_one() + model.compile(optimizer='adam', + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) + model.summary() + # TB make + tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, + histogram_freq=1, + ) + # Training and validation + history = model.fit(X_train, y_train, epochs=NUM_EPOCHS, + batch_size=BATCH_SIZE, + validation_data=(X_test, y_test), + callbacks=[tensorboard_callback]) + # validation_split=RATIO, + model.save(filepath=model_Path_one) + plot_history_tf(history) + + y_pred = np.argmax(model.predict(X_test), axis=-1) + plot_heat_map(y_test, y_pred) + + +if __name__ == '__main__': + os.environ["CUDA_VISIBLE_DEVICES"] = "-1" + main() diff --git a/Number-Of-CNN-Layers/_mian_tensorflow_twoLayerCNN.py b/Number-Of-CNN-Layers/_mian_tensorflow_twoLayerCNN.py index 63509ac..35106ae 100644 --- a/Number-Of-CNN-Layers/_mian_tensorflow_twoLayerCNN.py +++ b/Number-Of-CNN-Layers/_mian_tensorflow_twoLayerCNN.py @@ -25,47 +25,15 @@ NUM_EPOCHS = 30 def CNN_model_level_one(): leavlOneModel = tf.keras.models.Sequential([ - # #four CNN layers test - # tf.keras.layers.InputLayer(input_shape=(300,)), - # # reshape the tensor with shape (batch_size, 300) to (batch_size, 300, 1) - # tf.keras.layers.Reshape(target_shape=(300, 1)), - # # the first convolution layer, 4 21x1 convolution kernels, output shape (batch_size, 300, 4) - # tf.keras.layers.Conv1D(filters=4, kernel_size=21, strides=1, padding='SAME', activation='relu'), - # # the first pooling layer, max pooling, pooling size=3 , stride=2, output shape (batch_size, 150, 4) - # tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='SAME'), - # # the second convolution layer, 16 23x1 convolution kernels, output shape (batch_size, 150, 16) - # tf.keras.layers.Conv1D(filters=16, kernel_size=23, strides=1, padding='SAME', activation='relu'), - # # the second pooling layer, max pooling, pooling size=3, stride=2, output shape (batch_size, 75, 16) - # tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='SAME'), - # # the third convolution layer, 32 25x1 convolution kernels, output shape (batch_size, 75, 32) - # tf.keras.layers.Conv1D(filters=32, kernel_size=25, strides=1, padding='SAME', activation='relu'), - # # the third pooling layer, average pooling, pooling size=3, stride=2, output shape (batch_size, 38, 32) - # tf.keras.layers.AvgPool1D(pool_size=3, strides=2, padding='SAME'), - # # the fourth convolution layer, 64 27x1 convolution kernels, output shape (batch_size, 38, 64) - # tf.keras.layers.Conv1D(filters=64, kernel_size=27, strides=1, padding='SAME', activation='relu'), - # # flatten layer, for the next fully connected layer, output shape (batch_size, 38*64) - # tf.keras.layers.Flatten(), - # # fully connected layer, 128 nodes, output shape (batch_size, 128) - # tf.keras.layers.Dense(128, activation='relu'), - # # Dropout layer, dropout rate = 0.2 - # tf.keras.layers.Dropout(rate=0.2), - # # fully connected layer, 5 nodes (number of classes), output shape (batch_size, 5) - # tf.keras.layers.Dense(5, activation='softmax') - #take test for one CNN layers model + #take test for two CNN layers model tf.keras.layers.InputLayer(input_shape=(300, 1)), - # ECG data cant add 0 in edge, will broken data ,take false answer. So we need padding same data in edge. - - # take four 21*1 conv excitation function used RElu - tf.keras.layers.Conv1D(filters=4, kernel_size=21, strides=1, padding='same', activation='relu'), - # take four 3*1 pool,take strids 2. - - tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='same'), - - # tf.keras.layers.Conv1D(filters=4, kernel_size=21, strides=1, padding='same', activation='relu'), - # tf.keras.layers.MaxPool1D(pool_size=3, strides=2, padding='same'), + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), + tf.keras.layers.Conv1D(filters=1, kernel_size=3, strides=1, padding='same', activation='relu'), + tf.keras.layers.MaxPool1D(pool_size=1, strides=2, padding='same'), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), diff --git a/Number-Of-CNN-Layers/utils_threeLayerCNN.py b/Number-Of-CNN-Layers/utils_threeLayerCNN.py index d06c181..2d67e72 100644 --- a/Number-Of-CNN-Layers/utils_threeLayerCNN.py +++ b/Number-Of-CNN-Layers/utils_threeLayerCNN.py @@ -10,7 +10,7 @@ from sklearn.metrics import confusion_matrix from sklearn.model_selection import train_test_split # from _mian_tensorflow import Project_PATH -Project_PATH = '../Number-Of-CNN-Layers/Two/' +Project_PATH = '../Number-Of-CNN-Layers/Three/' PICTUREPATH = Project_PATH + 'picture/'