Ошибка имени: K не определен (даже если K уже определен и используется)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка имени: K не определен (даже если K уже определен и используется)

Сообщение Anonymous »

Я изучаю ML/DL и хочу создать сиамскую нейронную сеть (SNN) для распознавания лиц.
Вот как я импортирую в свой файл train.py:

Код: Выделить всё

import os
import numpy as np
import cv2
import tensorflow as tf
from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense, Lambda
from keras import backend as K
from keras.optimizers import Adam
from sklearn.model_selection import train_test_split
from utils import create_pairs, load_images_and_labels, save_embeddings
И файл train.py запускается, как и ожидалось.
Но когда я запускаю файл распознавания.py.

Код: Выделить всё

import cv2
import numpy as np
from keras.models import load_model
from utils import load_embeddings

# Load the trained model and embeddings
siamese_model = load_model('models/siamese_model.h5', compile=False)
registered_embeddings = load_embeddings('models/embeddings.pkl')
base_network = siamese_model.layers[2]  # Extract the base network

# Initialize the face detector
facedetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Function to recognize faces in real time
def recognize_face(frame, base_network, registered_embeddings, threshold=0.5):
faces = facedetect.detectMultiScale(frame, 1.3, 5)
for x, y, w, h in faces:
face = frame[y:y+h, x:x+w]
face = cv2.resize(face, (100, 100))
face = face.astype('float32') / 255.0
face = np.expand_dims(face, axis=0)

# Generate embedding for the detected face
face_embedding = base_network.predict(face)

# Compare with registered embeddings
min_dist = float('inf')
person_name = "Unknown"
for name, embedding in registered_embeddings.items():
dist = np.linalg.norm(face_embedding - embedding)
if dist < min_dist and dist < threshold:
min_dist = dist
person_name = name

# Draw bounding box and name
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(frame, person_name, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX,
0.9, (255, 255, 255), 2)

cv2.imshow("Face Recognition", frame)

# Real-time webcam feed
video = cv2.VideoCapture(0)
while True:
ret, frame = video.read()
recognize_face(frame, base_network, registered_embeddings)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

video.release()
cv2.destroyAllWindows()

Появляется эта ошибка:

Код: Выделить всё

Traceback (most recent call last):
File "/Users/mac/face_recognition_system/Face Recognition System/recognize.py", line 7, in 
siamese_model = load_model('models/siamese_model.h5', compile=False)
File "/Users/mac/face_recognition_system/Face Recognition System/face_recognition/lib/python3.9/site-packages/keras/utils/traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
File "/Users/mac/face_recognition_system/Face Recognition System/train.py", line 31, in euclidean_distance
sumSquared = K.sum(K.square(featsA - featsB), axis=1, keepdims=True)

**NameError: Exception encountered when calling layer "lambda" (type Lambda).
name 'K' is not defined**

Call arguments received by layer "lambda" (type Lambda):
• inputs=['tf.Tensor(shape=(None, 4096), dtype=float32)', 'tf.Tensor(shape=(None, 4096), dtype=float32)']
• mask=None
• training=None
*Примечание. Даже если tensorflow уже установлен, я не могу использовать tensorflow.keras.X (X — это что угодно), потому что он говорит, что невозможно разрешить.
Я использую код VS, если это имеет значение.

Подробнее здесь: https://stackoverflow.com/questions/790 ... d-and-used
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»