Bạn đang viết một chương trình học sâu và muốn lưu trữ một số tham số chính vào tệp cấu hình. Bạn muốn sử dụng các giá trị trong cấu hình làm giá trị tham số để đào tạo mô hình như đường dẫn tập dữ liệu, trình tối ưu hóa, tốc độ học tập, số lượng kỷ nguyên, v.v.
lớp configparser thực hiện cấu trúc cấu hình cơ bản có các phần chứa các cặp khóa-giá trị
Tệp cấu hình có thể được đọc cũng như các cài đặt cấu hình mới có thể được ghi hoặc cập nhật
Tạo tệp ini để lưu cài đặt cấu hình
Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào để tạo tệp ini. Tôi đã sử dụng một notepad
- Tệp cấu hình bao gồm [phần] theo sau là cặp khóa-giá trị. Các giá trị được phân tách khỏi các khóa bằng cách sử dụng “=” hoặc “. ”
- Tên phần phân biệt chữ hoa chữ thường nhưng các phím không phân biệt chữ hoa chữ thường
- Các khóa có thể chứa hoặc không chứa giá trị. Khi các giá trị không xuất hiện cho các khóa, hãy đảm bảo bao gồm “. ” hoặc “=” nếu không bạn sẽ gặp lỗi
- Các khóa và giá trị có thể có khoảng trắng trước và sau khi chúng bị xóa khi đọc tệp cấu hình
- Các giá trị cho khóa có thể được trải rộng trên nhiều dòng với thụt đầu dòng thích hợp. Nếu giá trị cho khóa trải rộng trên nhiều dòng không được thụt lề chính xác, thì chúng tôi sẽ gặp lỗi
Tệp ini mẫu
Đọc dữ liệu Cấu hình từ tệp ini
Để đọc tệp cấu hình, bạn cần nhập thư viện configparser. Mã bên dưới đọc tệp cấu hình, in tất cả các phần cùng với các cặp khóa-giá trị trong mỗi phần
import configparserfilename=r'test_config.ini'
config = configparser.ConfigParser[]
config.read[filename]for sect in config.sections[]:
print["\nSection: ",sect]
for k,v in config.items[sect]:
print["Key: ",k," Value: ",v]
Đọc một giá trị duy nhất cho một khóa từ tệp cấu hình
Khi bạn đang đào tạo mô hình của mình, bạn có thể cần trích xuất một giá trị khóa duy nhất từ tệp cấu hình hoặc trích xuất tất cả giá trị của các khóa trong một phần
Trích xuất giá trị cho khóa trình tối ưu hóa trong phần đào tạo
print[config['training']['optimizer']]
Trích xuất giá trị cho khóa epochs trong phần đào tạo và chuyển đổi nó thành int
print[int[config['training']['epochs']]]
Trích xuất tất cả các phần từ một tệp cấu hình
Các phần của tệp cấu hình sẽ được trả về dưới dạng danh sách
print[list[config.sections[]]]
Trích xuất tất cả các khóa từ một phần cụ thể của tệp cấu hình
Chúng tôi đang trích xuất tất cả các khóa trong phần đào tạo
print[list[config['training'].keys[]]]
Trích xuất tất cả các giá trị từ một phần cụ thể của tệp cấu hình
Chúng tôi đang trích xuất tất cả các giá trị cho tất cả các khóa trong phần đào tạo
print[list[config['training'].values[]]]
Cập nhật các giá trị cho các khóa trong một phần
Cập nhật các giá trị cho các khóa trong một phần hiện có cũng giống như ghi đè lên các giá trị
filename=r'test_config.ini'
config = configparser.ConfigParser[]
config.read[filename]# the section checkpoint uppdate the value for model_file_name
config['Trained Model Details']={'model_file_name' :'classfication_epoch100.h5'}
with open[filename, 'w'] as configfile:
config.write[configfile]
Phần ‘Trained Model Details’ được cập nhật với giá trị “classfication_epoch100. h5” và key cho “checkpoint” bị xóa
Viết các mục bổ sung vào tệp Cấu hình
Có hai cách khác nhau để ghi các mục cấu hình vào tệp
- Tạo một từ điển các cặp khóa-giá trị với tên phần
#Adding additional entries into Config file
# creating the dictionary for section and key-value pairs
config['Layer 1']={
'no of hidden units':8,
'kernel_size':3,
'stride':2,
'activation':'relu'
}# writing to configuration file
with open[filename, 'w'] as configfile:
config.write[configfile]
Mã này sẽ nối vào tệp cấu hình hiện có như hình bên dưới
Nếu bạn tạo một phiên bản của configparser, thì nó sẽ ghi đè lên các mục nhập hiện tại, như minh họa bên dưới
________số 8Một phương pháp khác là sử dụng read_dict[], nó có cài đặt cấu hình trong một đối tượng từ điển trong đó khóa là tên phần và các cặp khóa-giá trị khác nhau là các giá trị của từ điển
config.read_dict[{'data':{'train_dir' : r'c:\dataset\train',
'test_dir': r'c:\dataset\test',
'val_dir': r'c:\dataset\val'
}
}]
with open[filename, 'w'] as configfile:
config.write[configfile]
Đoạn mã trên chưa thêm phần khác vào tệp cấu hình của chúng tôi
Nội suy cơ bản của các giá trị
Nội suy là khi giá trị cho các khóa trong tệp cấu hình được xử lý trước khi trả lại chúng
Cú pháp nội suy cơ bản. %[key_name]
Đoạn mã dưới đây tạo phần cấu hình “Đường dẫn” chứa hai khóa “home_dir” và “model_dir”. Giá trị cho khóa “model_dir” sẽ được tạo bằng cách thay thế “home_dir” bằng phép nội suy
print[config['training']['optimizer']]
0giá trị cho model_dir sau khi nội suy
Nội suy mở rộng
Nội suy mở rộng là tiền xử lý và thay thế các giá trị cho một khóa từ một phần khác của tệp cấu hình trước khi trả lại chúng
Cú pháp nội suy mở rộng. ${phần. Chìa khóa}
Mã bên dưới sử dụng phép nội suy mở rộng từ khóa “home_dir” của phần “Đường dẫn“
print[config['training']['optimizer']]
1Để đọc nội suy mở rộng, chúng ta cần đặt nội suy của tệp cấu hình thành ExtendedInterpolation[] để thay thế động
print[config['training']['optimizer']]
2Phần kết luận
Thư viện configparser cung cấp một cách dễ dàng để quản lý cài đặt cấu hình bằng các cặp khóa-giá trị trong một phần