Gọi một tập lệnh Python từ một tập lệnh khác bằng các đối số

Chạy tập lệnh Python của bạn là một bước quan trọng trong quy trình phát triển vì theo cách này, bạn sẽ tìm hiểu xem mã của mình có hoạt động như bạn dự định không. Ngoài ra, thường xảy ra trường hợp chúng ta cần chuyển thông tin tới tập lệnh Python để nó hoạt động

Trong hướng dẫn này, bạn sẽ khám phá nhiều cách khác nhau để chạy và truyền thông tin tới tập lệnh Python

Sau khi hoàn thành hướng dẫn này, bạn sẽ biết

  • Cách chạy tập lệnh Python bằng giao diện dòng lệnh, Jupyter Notebook hoặc Môi trường phát triển tích hợp [IDE]  
  • Cách chuyển thông tin tới tập lệnh Python bằng cách sử dụng  sys. argv   bằng cách mã hóa cứng các biến đầu vào trong Jupyter Notebook hoặc thông qua việc sử dụng tương tác đầu vào . . . . []  function. 

Bắt đầu dự án của bạn với cuốn sách mới Python for Machine Learning của tôi, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

Chạy và truyền thông tin tới tập lệnh Python
Ảnh của Andrea Leopardi, bảo lưu một số quyền.

Hướng dẫn tổng quan

Hướng dẫn này được chia thành hai phần;

  • Chạy tập lệnh Python
    • Sử dụng giao diện dòng lệnh
    • Sử dụng Máy tính xách tay Jupyter
    • Sử dụng Môi trường phát triển tích hợp [IDE]
  • Đầu vào Python

Chạy tập lệnh Python

Sử dụng giao diện dòng lệnh

Giao diện dòng lệnh được sử dụng rộng rãi để chạy mã Python.  

Hãy kiểm tra một vài lệnh bằng cách mở cửa sổ Dấu nhắc Lệnh hoặc Cửa sổ đầu cuối, tùy thuộc vào hệ điều hành mà bạn đang làm việc.  

Nhập lệnh  python trong giao diện dòng lệnh của bạn sẽ bắt đầu phiên tương tác Python. Bạn sẽ thấy một thông báo xuất hiện cho bạn biết phiên bản Python mà bạn đang sử dụng.  

con trăn

1

2

3

Trăn 3. 7. 4 [mặc định, ngày 13 tháng 8 năm 2019, 15. 17. 50]

[tiếng 4. 0. 1 [thẻ/RELEASE_401/cuối cùng]]. Anaconda, Inc. trên darwin

Nhập "trợ giúp", "bản quyền", "tín dụng" hoặc "giấy phép" để biết thêm thông tin

Mọi câu lệnh bạn viết trong giao diện dòng lệnh trong phiên tương tác sẽ được thực thi ngay lập tức. Ví dụ: gõ 2 + 3 trả về giá trị 5

con trăn

1

2 + 3

con trăn

1

5

Sử dụng phiên tương tác theo cách này có những ưu điểm vì bạn có thể kiểm tra các dòng mã Python một cách dễ dàng và nhanh chóng. Tuy nhiên, nó không phải là lựa chọn lý tưởng nếu chúng ta quan tâm nhiều hơn đến việc viết các chương trình dài hơn, như trường hợp chúng ta đang phát triển một thuật toán máy học. Mã cũng biến mất sau khi phiên tương tác kết thúc.  

Một tùy chọn khác là chạy tập lệnh Python. Hãy bắt đầu với một ví dụ đơn giản trước.  

Trong trình soạn thảo văn bản [chẳng hạn như Notepad++, Visual Studio Code hoặc Sublime Text], hãy nhập câu lệnh  in["Hello World!"]   và lưu tệp vào test_script. py hoặc bất kỳ tên nào khác mà bạn chọn miễn là bạn bao gồm một. phần mở rộng py.  

Bây giờ, hãy quay lại giao diện dòng lệnh của bạn và nhập lệnh python , sau đó nhập tên tệp tập lệnh của bạn. Trước khi làm như vậy, bạn có thể cần thay đổi đường dẫn để trỏ đến thư mục chứa tệp script. Chạy tệp script sau đó sẽ tạo ra đầu ra sau.

con trăn

1

python test_script. py

con trăn

1

Chào thế giới

Bây giờ, hãy viết một tệp tập lệnh tải mô hình Keras được đào tạo trước và đưa ra dự đoán cho hình ảnh con chó này. Thông thường, chúng ta cũng cần chuyển thông tin tới tập lệnh Python dưới dạng đối số dòng lệnh. Vì mục đích này, chúng tôi sẽ sử dụng  sys. argv   lệnh để chuyển cho tập lệnh đường dẫn hình ảnh và số lượng dự đoán hàng đầu sẽ trả về. Chúng tôi có thể có nhiều đối số đầu vào như mã yêu cầu, trong trường hợp đó, chúng tôi sẽ tiếp tục đọc các đầu vào từ danh sách đối số.  

Tệp script mà chúng tôi sẽ chạy bây giờ chứa đoạn mã sau

con trăn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

nhập sys

nhập numpy as np

từ tensorflow. máy ảnh. ứng dụng nhập vgg16

từ tensorflow. máy ảnh. ứng dụng. vgg16 nhập preprocess_input, decode_predictions

từ tensorflow. máy ảnh. tiền xử lý nhập hình ảnh

 

# Tải mô hình VGG16 được đào tạo trước trên bộ dữ liệu ImageNet

vgg16_model = vgg16. VGG16[trọng số=']

 

# Đọc đối số dòng lệnh được chuyển đến trình thông dịch khi gọi tập lệnh

image_path = sys. argv[1]

top_guesses = sys. argv[2]

 

# Tải hình ảnh, thay đổi kích thước theo kích thước mục tiêu của mô hình

img_resized = hình ảnh. load_img[image_path, target_size=[224, 224]]

 

# Chuyển đổi hình ảnh thành một mảng

img = hình ảnh. img_to_array[img_resized]

 

# Thêm vào một thứ nguyên

img = np. expand_dims[img, axis=0]

 

# Chia tỷ lệ các giá trị cường độ pixel

img = preprocess_input[img]

 

# Tạo dự đoán cho hình ảnh thử nghiệm

pred_vgg = vgg16_model. dự đoán[img]

 

# Giải mã và in 3 dự đoán hàng đầu

in['Dự đoán. ', decode_predictions[pred_vgg, top=int[top_guesses]]]

Trong đoạn mã trên, chúng tôi đọc các đối số dòng lệnh bằng cách sử dụng sys.argv[1]sys.argv[2] cho hai đối số đầu tiên. Chúng tôi có thể chạy tập lệnh bằng cách sử dụng lệnh python theo sau là tên của tệp tập lệnh và tiếp tục chuyển nó làm đối số cho đường dẫn hình ảnh [sau khi hình ảnh đã được lưu vào đĩa] và số lần đoán hàng đầu mà chúng tôi sẽ

con trăn

1

python pretraining_model. py chó. jpg 3

Đây, pretraining_model. py là tên của tệp script và con chó. jpg đã được lưu vào cùng thư mục chứa tập lệnh Python.  

Ba dự đoán hàng đầu được tạo như sau

con trăn

1

Sự dự đoán. [[['n02088364', 'beagle', 0. 6751468], ['n02089867', 'Walker_hound', 0. 1394801], ['n02089973', 'English_foxhound', 0. 057901423]]]

Nhưng có thể có nhiều hơn trong dòng lệnh. Ví dụ: dòng lệnh sau sẽ chạy tập lệnh ở chế độ “được tối ưu hóa”, trong đó biến gỡ lỗi __debug__ được đặt thành False, và các câu lệnh assert bị bỏ qua

con trăn

1

python -O test_script. py

Và sau đây là khởi chạy tập lệnh với mô-đun Python, chẳng hạn như trình gỡ lỗi

con trăn

1

python -m pdb test_script.py

Chúng tôi sẽ có một bài viết khác về việc sử dụng trình gỡ lỗi và trình lược tả

Sử dụng Máy tính xách tay Jupyter

Chạy tập lệnh Python từ giao diện dòng lệnh là một tùy chọn đơn giản nếu mã của bạn tạo đầu ra chuỗi và không nhiều thứ khác.  

Tuy nhiên, khi chúng ta làm việc với hình ảnh, chúng ta thường mong muốn tạo ra kết quả trực quan. Chúng tôi có thể đang kiểm tra tính chính xác của bất kỳ quá trình tiền xử lý nào được áp dụng cho hình ảnh đầu vào trước khi đưa nó vào mạng thần kinh hoặc trực quan hóa kết quả mà mạng thần kinh tạo ra. Jupyter Notebook cung cấp một môi trường điện toán tương tác có thể giúp chúng tôi đạt được điều này

Một cách để chạy tập lệnh Python thông qua giao diện Jupyter Notebook là chỉ cần thêm mã vào một “ô” trong sổ ghi chép. Nhưng điều này có nghĩa là mã của bạn nằm trong sổ ghi chép Jupyter và không thể truy cập được ở nơi khác, chẳng hạn như sử dụng dòng lệnh như trên. Một cách khác là sử dụng lệnh ma thuật run , bắt đầu bằng  % . Hãy thử nhập đoạn mã sau vào một ô trong Jupyter Notebook.

con trăn

1

%chạy pretraining_model. py chó. jpg 3

Ở đây, một lần nữa chúng ta chỉ định tên của tệp tập lệnh Python là pretraining_model. py, theo sau là đường dẫn hình ảnh và số lượng dự đoán hàng đầu làm đối số đầu vào. Bạn sẽ thấy rằng ba dự đoán hàng đầu được in bên dưới ô tạo ra kết quả này.  

Bây giờ, giả sử rằng chúng tôi muốn hiển thị hình ảnh đầu vào để kiểm tra xem nó đã được tải theo kích thước mục tiêu của mô hình chưa. Với mục đích này, chúng tôi sẽ sửa đổi mã một chút như sau và lưu nó vào tập lệnh Python mới, pretraining_model_image. py

con trăn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

nhập sys

nhập numpy as np

nhập matplotlib. pyplot as plt

từ tensorflow. máy ảnh. ứng dụng nhập vgg16

từ tensorflow. máy ảnh. ứng dụng. vgg16 nhập preprocess_input, decode_predictions

từ tensorflow. máy ảnh. tiền xử lý nhập hình ảnh

 

# Tải mô hình VGG16 được đào tạo trước trên bộ dữ liệu ImageNet

vgg16_model = vgg16. VGG16[trọng số=']

 

# Đọc các đối số được truyền cho trình thông dịch khi gọi tập lệnh

image_path = sys. argv[1]

top_guesses = sys. argv[2]

 

# Tải hình ảnh, thay đổi kích thước theo kích thước mục tiêu của mô hình

img_resized = hình ảnh. load_img[image_path, target_size=[224, 224]]

 

# Chuyển đổi hình ảnh thành một mảng

img = hình ảnh. img_to_array[img_resized]

 

# Hiển thị hình ảnh để kiểm tra xem nó đã được thay đổi kích thước chính xác chưa

plt. imshow[img. astype[np. uint8]]

 

# Thêm vào một thứ nguyên

img = np. expand_dims[img, axis=0]

 

# Chia tỷ lệ các giá trị cường độ pixel

img = preprocess_input[img]

 

# Tạo dự đoán cho hình ảnh thử nghiệm

pred_vgg = vgg16_model. dự đoán[img]

 

# Giải mã và in 3 dự đoán hàng đầu

in['Dự đoán. ', decode_predictions[pred_vgg, top=int[top_guesses]]]

Việc chạy tập lệnh Python mới được lưu thông qua giao diện Jupyter Notebook hiện hiển thị hình ảnh pixel $224 \times 224$ đã thay đổi kích thước, ngoài việc in ba dự đoán hàng đầu

con trăn

1

%chạy pretraining_model_image. py chó. jpg 3

Chạy tập lệnh Python trong Jupyter Notebook

Ngoài ra, chúng ta có thể cắt mã thành đoạn mã sau [và lưu mã đó vào một tập lệnh Python khác, pretraining_model_inputs. py]

con trăn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# Tải mô hình VGG16 được đào tạo trước trên bộ dữ liệu ImageNet

vgg16_model = vgg16. VGG16[trọng số=']

 

# Tải hình ảnh, thay đổi kích thước theo kích thước mục tiêu của mô hình

img_resized = hình ảnh. load_img[image_path, target_size=[224, 224]]

 

# Chuyển đổi hình ảnh thành một mảng

img = hình ảnh. img_to_array[img_resized]

 

# Hiển thị hình ảnh để kiểm tra xem nó đã được thay đổi kích thước chính xác chưa

plt. imshow[img. astype[np. uint8]]

 

# Thêm vào một thứ nguyên

img = np. expand_dims[img, axis=0]

 

# Chia tỷ lệ các giá trị cường độ pixel

img = preprocess_input[img]

 

# Tạo dự đoán cho hình ảnh thử nghiệm

pred_vgg = vgg16_model. dự đoán[img]

 

# Giải mã và in 3 dự đoán hàng đầu

in['Dự đoán. ', decode_predictions[pred_vgg, top=top_guesses]]

Và xác định các biến đầu vào trong một trong các ô của chính Jupyter Notebook. Chạy tập lệnh Python theo cách này sẽ yêu cầu chúng tôi cũng sử dụng tùy chọn  -i   sau  %run  magic:

con trăn

1

%chạy -i pretraining_model_inputs.py

Chạy tập lệnh Python trong Jupyter Notebook

Ưu điểm của việc này là có thể truy cập dễ dàng hơn vào các biến bên trong tập lệnh Python có thể được định nghĩa một cách tương tác.  

Khi mã của bạn phát triển, việc kết hợp việc sử dụng trình soạn thảo văn bản với Jupyter Notebook có thể mang lại một hướng đi thuận tiện. trình soạn thảo văn bản có thể được sử dụng để tạo tập lệnh Python, lưu trữ mã có thể được sử dụng lại, trong khi Jupyter Notebook cung cấp môi trường điện toán tương tác để khám phá dữ liệu dễ dàng hơn.  

Bạn muốn bắt đầu với Python cho Machine Learning?

Tham gia khóa học xử lý sự cố email miễn phí trong 7 ngày của tôi ngay bây giờ [có mã mẫu]

Nhấp để đăng ký và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học

Tải xuống khóa học nhỏ MIỄN PHÍ của bạn

Sử dụng Môi trường phát triển tích hợp [IDE]

Một tùy chọn khác là chạy tập lệnh Python từ IDE. Điều này yêu cầu dự án phải được tạo trước và tập lệnh Python có. phần mở rộng py được thêm vào nó.  

Nếu chúng tôi phải coi PyCharm hoặc Visual Studio Code là IDE được lựa chọn, điều này sẽ yêu cầu chúng tôi tạo một dự án mới và sau đó chọn phiên bản trình thông dịch Python mà chúng tôi muốn làm việc với. Sau khi thêm tập lệnh Python vào dự án mới tạo, tập lệnh này có thể được chạy để tạo đầu ra. Sau đây là ảnh chụp màn hình chạy Visual Studio Code trên macOS. Tùy thuộc vào IDE, sẽ có một tùy chọn để chạy mã có hoặc không có trình gỡ lỗi

Chủ Đề