class ViT(keras.models.Model): """Input shape: (batch_size, heigth, width, 3)""" def init(self, input_shape, patches_size, num_transformers, num_mlp, drop_rate): super(ViT, self).init() self.input_shape = input_shape
self.num_transformers = num_transformers
# Define layers
image_size = tf.shape(input_shape)[1]
num_patches = int((image_size.numpy()**2)/(patches_size**2))
print("Num patches is", num_patches)
project_dim = 3 * (patches_size**2)
print("Num project dim is", project_dim)
self.mlp = MLP(num_mlp, drop_rate)
self.patches = Patches(patches_size)
self.encoder = PatchEncoder(num_patches=num_patches, projection_dim= project_dim)
def call(self, x): pass
bị lỗi Can't set the attribute "input_shape", likely because it conflicts with an existing read-only @property of the object. Please choose a different name. là sao, phải giải quyết thế nào
Lỗi này xảy ra vì bạn đang cố gắng đặt thuộc tính "input_shape" cho một đối tượng, làm xung đột với thuộc tính chỉ đọc input_shape
hiện có của Model Keras. Model Keras đã định nghĩa sẵn input_shape
dựa trên việc bạn cung cấp trong lớp Layer đầu tiên khi khởi tạo Model hoặc tùy chỉnh Layer.
Để giải quyết vấn đề này, bạn có thể đổi tên thuộc tính "input_shape" của bạn thành một cái tên khác. Dưới đây là một ví dụ về cách bạn có thể chỉnh sửa lớp ViT của mình:
class ViT(keras.models.Model):
"""Input shape: (batch_size, heigth, width, 3)"""
def __init__(self, my_input_shape, patches_size, num_transformers, num_mlp, drop_rate):
super(ViT, self).__init__()
self.my_input_shape = my_input_shape
...
Hoặc, nếu bạn cần sử dụng thuộc tính input_shape
từ Model Keras, bạn có thể truy cập nó thông qua lớp Layer đầu tiên của mô hình, sau khi đã thêm Layer vào Model.
Mặt khác, nếu bạn muốn tìm hiểu thêm về ViT được chúng tôi tài trợ nghiên cứu và xây dựng, hãy ghé thăm trituenhantao.io để không bỏ lỡ bất kỳ cập nhật nào!