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
: steps
khô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=1
cho đầu vào đào tạo và mục nhập doc cho numpy_input_fn
tô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=1
ví 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_train
kích thước 700000 và batch_size
là 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=1
trong 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.train
mặ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=1
khi gọi numpy_input_fn
việ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=1
trong 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_epochs
for tf.estimator.inputs.numpy_input_fn
và steps
for estimator.train
define, giới hạn dưới sẽ xác định số bước sẽ được chạy qua.