def L_layer_model(X, Y, layers_dims, learning_rate=0.5, num_iterations=10000, print_cost=False): #lr was 0.009 np.random.seed(1) costs = [] parameters = functions.initialize_parameters_deep(layers_dims) for i in range(0, num_iterations): AL, caches = functions.L_model_forward(X, parameters) cost = functions.compute_cost(AL, Y) grads = functions.L_model_backward(AL, Y, caches) parameters = functions.update_parameters(parameters, grads, learning_rate) if print_cost and i % 100 == 0: print("Cost after iteration %i: %f" % (i, cost)) if print_cost and i % 100 == 0: costs.append(cost) #plt.ylabel('cost') #plt.xlabel('iterations (per tens)') #plt.title("Learning rate =" + str(learning_rate)) #plt.show() return parameters
def L_layer_model( X, y, layers_dims, learning_rate=0.01, num_iterations=3000, print_cost=True, hidden_layers_activation_fn="relu"): random.seed(version =2) np.random.seed(random.randint(0,1000)) parameters = fn.initialize_parameters(layers_dims) for i in range(num_iterations): AL, caches = fn.L_model_forward( X, parameters, hidden_layers_activation_fn) cost = fn.compute_cost(AL, y) grads = fn.L_model_backward(AL, y, caches, hidden_layers_activation_fn) parameters = fn.update_parameters(parameters, grads, learning_rate) if (i + 1) % 100 == 0 and print_cost: print(f"The cost after {i + 1} iterations is: {cost:.4f}") return parameters
def accuracy(X, parameters, y, activation_fn="relu"): probs, caches = fn.L_model_forward(X, parameters, activation_fn) probs = probs.T for i in range(np.shape(probs)[0]): flag = True li = np.asarray(probs[i]) Max = max(li) for j in range(np.shape(probs)[1]): if probs[i][j]==Max and flag: probs[i][j] = 1 flag = False else: probs[i][j] = 0 y = y.T count = 0 acc = {} for i in range(10): acc[i] = 0 for i in range(np.shape(probs)[0]): flag = True for j in range(np.shape(probs)[1]): if probs[i][j] != y[i][j]: flag = False break elif probs[i][j] == 1: acc[j] +=1 break if flag: count +=1 for i in range(10): acc[i] *= 100/(np.shape(probs)[0]/np.shape(probs)[1]) accuracy = count * 100/(np.shape(probs)[0]) print(acc) print() return f"The accuracy rate is: {accuracy:.2f}%."
print() #Подсчёт ответа на конкретном файле print("Доступные файлы:") showFiles() print() path = input("Введите название файла в папке working, включая расширение, введите \"exit\" для завершения : ") print() dirName = os.path.join(os.path.realpath(r"..\..\..\ "),"samples","working") while(str(path)!="exit"): path = os.path.join(dirName,path) try: X_test = generateTrain(1,path) if mode == "0": probs, caches = fn.L_model_forward(X_test, fn.outputWB(layers_dims,"best"), "relu") else: probs, caches = fn.L_model_forward(X_test, fn.outputWB(layers_dims), "relu") print("answer:") ans = np.asarray(probs.T[0]) Max = max(ans) for i in range(len(ans)): if np.all(ans[i] == Max): print(i) break; except IOError: print("Can't open image") print() print("Доступные файлы:") showFiles() print()