Vì tôi hiện đang thử nghiệm với API tf.estimator, tôi cũng muốn thêm những phát hiện khó hiểu của mình ở đây. Tôi vẫn chưa biết liệu việc sử dụng các thông số bước và kỷ nguyên có nhất quán trong suốt TensorFlow hay không và do đó tôi chỉ liên quan đến tf.estimator (cụ thể là tf.estimator.LinearRegressor).
Các bước đào tạo được xác định bởi num_epochs: stepskhông được xác định rõ ràng
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input)
Nhận xét: Tôi đã đặt num_epochs=1cho đầu vào đào tạo và mục nhập doc cho numpy_input_fntôi biết "num_epochs: Số nguyên, số kỷ nguyên để lặp qua dữ liệu. NếuNone sẽ chạy mãi mãi." . Với num_epochs=1ví dụ trên, quá trình đào tạo chạy chính xác x_train.size / batch_size lần / bước (trong trường hợp của tôi, đây là 175000 bước so với x_trainkích thước 700000 và batch_sizelà 4).
Các bước đào tạo được xác định bởi num_epochs : stepsđược xác định rõ ràng cao hơn số bước được xác định ngầm bởinum_epochs=1
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input, steps=200000)
Nhận xét: num_epochs=1trong trường hợp của tôi có nghĩa là 175000 bước ( x_train.size / batch_size với x_train.size = 700.000 và batch_size = 4 ) và đây chính xác là số bước estimator.trainmặc dù thông số bước được đặt thành 200.000 estimator.train(input_fn=train_input, steps=200000).
Các bước đào tạo được xác định bởi steps
estimator = tf.estimator.LinearRegressor(feature_columns=ft_cols)
train_input = tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True)
estimator.train(input_fn=train_input, steps=1000)
Nhận xét: Mặc dù tôi đã thiết lập num_epochs=1khi gọi numpy_input_fnviệc đào tạo dừng sau 1000 bước. Đây là bởi vìsteps=1000 trong estimator.train(input_fn=train_input, steps=1000)ghi đè các num_epochs=1trong tf.estimator.inputs.numpy_input_fn({'x':x_train},y_train,batch_size=4,num_epochs=1,shuffle=True).
Kết luận : Bất kể các tham số num_epochsfor tf.estimator.inputs.numpy_input_fnvà stepsfor estimator.traindefine, giới hạn dưới sẽ xác định số bước sẽ được chạy qua.