-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcnn.py
More file actions
56 lines (43 loc) · 1.83 KB
/
cnn.py
File metadata and controls
56 lines (43 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 19 13:12:58 2022
@author: MaxRo
"""
import numpy
import scipy
import sklearn
from sklearn import model_selection,preprocessing
import numpy as np
import pandas as pd
import os
import tensorflow
from tensorflow import keras,math
from tensorflow.keras import datasets, layers, models
from tensorflow.keras.layers import Conv1D, Flatten, Dropout, Dense, MaxPooling2D, Conv2D, Average
from datetime import datetime
datadir= "C:/Users\MaxRo\OneDrive\Desktop\junioryear\ece485/xdata2.npy"
labeldir = "C:/Users\MaxRo\OneDrive\Desktop\junioryear\ece485/labeldata2.npy"
imwidth = 1025
imheight = 129
xdata = numpy.load(datadir)
labels = numpy.load(labeldir)
x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(xdata, labels, test_size=0.2)
x_train = x_train.reshape(x_train.shape[0], imheight, imwidth, 1)
x_test = x_test.reshape(x_test.shape[0], imheight, imwidth, 1)
input_shape = (imheight, imwidth, 1)
model = tensorflow.keras.models.Sequential()
model.add(Conv2D(filters=64, kernel_size=(3,3), activation='relu', input_shape=(imheight,imwidth,1),strides=1))
model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu',strides=1))
model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu',strides=1))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(24, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=100, batch_size=4, verbose=1)
# evaluate model
accuracy = model.evaluate(x_test, y_test, batch_size=4, verbose=1)
predictions = model.predict(x_test)
predicted_classes = numpy.argmax(predictions, axis=1)
confusion = tensorflow.math.confusion_matrix(y_test,predictions,num_classes=24)