cuốn sách gpt4 ai đã làm

Máy phát điện trăn Singleton? Hoặc, chọn một trình tạo python?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 11:36:11 28 4
mua khóa gpt4 Nike

Tôi sử dụng đoạn mã sau với các trình tạo lồng nhau để lặp lại tài liệu văn bản và sử dụng get_train_minibatch() Trả về các ví dụ huấn luyện. Tôi muốn bảo toàn (dưa chua) trình tạo để tôi có thể quay lại vị trí tương tự trong tài liệu văn bản. Tuy nhiên, bạn không thể chọn máy phát điện.

  • Có cách giải quyết dễ dàng nào để tôi có thể lưu vị trí của mình và bắt đầu lại từ nơi tôi đã dừng lại không? có lẽ tôi có thể để get_train_example() Hãy là người độc thân để tôi không có nhiều máy phát điện. Sau đó tôi có thể tạo một biến toàn cục trong mô-đun này để theo dõi get_train_example() khoảng cách.

  • Bạn có gợi ý nào tốt hơn (rõ ràng hơn) về cách tôi có thể giữ lại máy phát điện này không?

[EDIT: Hai suy nghĩ nữa:

  • Tôi có thể thêm biến/phương thức thành viên vào trình tạo để tôi có thể gọi Generator.tell() và tìm vị trí tệp không? Bởi vì bằng cách đó, lần sau khi tôi tạo trình tạo, tôi có thể yêu cầu nó tìm vị trí đó. Ý tưởng này nghe có vẻ đơn giản nhất.

  • Tôi có thể tạo một lớp và đặt vị trí tệp làm biến thành viên, sau đó tạo trình tạo trong lớp và cập nhật biến thành viên vị trí tệp trên mỗi bản dựng không? Bởi vì sau đó tôi có thể biết nó nằm trong tập tin bao xa.

]

Mã này như sau:

chắc chắn get_train_example():
cho l đang mở(HYPERPARAMETERS["TRAIN_SENTENCES"]):
lời nói trước = []
cho w trong string.split(l):
w = string.strip(w)
id=Không có
prevwords.append(wordmap.id(w))
if len(prevwords) >= HYPERPARAMETERS["WINDOW_SIZE"]:
mang lại các từ trước[-HYPERPARAMETERS["WINDOW_SIZE"]:]

chắc chắn get_train_minibatch():
lô nhỏ = []
cho e trong get_train_example():
minibatch.append(e)
nếu len(minibatch) >= HYPERPARAMETERS["MINBATCH SIZE"]:
khẳng định len(minibatch) == HYPERPARAMETERS["MINBATCH SIZE"]
sản lượng nhỏ
lô nhỏ = []

câu trả lời hay nhất

Mã bên dưới sẽ thực hiện ít nhiều những gì bạn muốn. Lớp đầu tiên định nghĩa một cái gì đó tương tự như một tệp nhưng có thể được chọn lọc. (Khi bạn giải nén nó, nó sẽ mở lại tệp và tìm xem nó ở đâu khi bạn chọn nó). Lớp thứ hai là một trình vòng lặp tạo ra các cửa sổ từ.

lớp PickleableFile(đối tượng):
def __init__(self, filename, mode='rb'):
self.filename = tên tệp
self.mode = chế độ
self.file = open(tên file, chế độ)
chắc chắn __getstate__(tự):
state = dict(filename=self.filename, mode=self.mode,
đã đóng=self.file.closed)
nếu không self.file.closed:
state['filepos'] = self.file.tell()
trạng thái trả về
def __setstate__(tự, trạng thái):
self.filename = state['filename']
self.mode = trạng thái['mode']
self.file = open(self.filename, self.mode)
nếu trạng thái ['đóng']: self.file.close()
khác: self.file.seek(state['filepos'])
def __getattr__(self, attr):
trả về getattr(self.file, attr)

lớp WordWindowReader:
def __init__(self, filenames, window_size):
self.filenames = tên tập tin
self.window_size = window_size
self.filenum = 0
self.stream = Không
self.filepos = 0
self.prevwords = []
self.current_line = []

chắc chắn __iter__(tự):
tự trở về

def tiếp theo (tự):
# Đọc qua các tập tin cho đến khi chúng ta có dòng hiện tại không trống.
trong khi không phải self.current_line:
nếu self.stream là Không:
if self.filenum >= len(self.filenames):
tăng StopIteration
khác:
self.stream = PickleableFile(self.filenames[self.filenum])
self.stream.seek(self.filepos)
self.prevwords = []
dòng = self.stream.readline()
self.filepos = self.stream.tell()
nếu dòng == '':
# Kết thúc tập tin.
self.stream = Không
self.filenum += 1
self.filepos = 0
khác:
# Đảo ngược dòng để chúng ta có thể bật ra các từ.
self.current_line = line.split()[::-1]

# Lấy từ đầu tiên của dòng hiện tại và thêm nó vào
# prevwords Cắt bớt các prevwords khi cần thiết.
từ = self.current_line.pop()
self.prevwords.append(word)
if len(self.prevwords) > self.window_size:
self.prevwords = self.prevwords[-self.window_size:]

# Nếu đủ từ thì trả về một cửa sổ từ;
# nếu không thì chuyển sang từ tiếp theo.
if len(self.prevwords) == self.window_size:
trả về self.prevwords
khác:
trả về self.next()

Giới thiệu về python - trình tạo python đơn? Hoặc, chọn một trình tạo python? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1939015/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress