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

TensorFlow while_loop chuyển đổi biến thành hằng số?

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

Tôi đang cố gắng cập nhật lồng nhau while_loop() Một tensor hai chiều trong . Tuy nhiên, khi chuyển biến sang vòng lặp thứ hai, tôi không thể sử dụng tf.sign() Cập nhật nó khi nó đưa ra lỗi này:

ValueError: Phép gán cắt lát chỉ được hỗ trợ cho các biến

Nếu tôi tạo biến bên ngoài while_loop và chỉ sử dụng nó trong vòng lặp đầu tiên thì bằng cách nào đó nó vẫn hoạt động tốt.

Làm cách nào tôi có thể sửa đổi biến tf 2D của mình trong vòng lặp while thứ hai?
(Tôi đang sử dụng python 2.7 và TensorFlow 1.2)

Mã của tôi:

nhập tensorflow astf
nhập numpy dưới dạng np

tf.reset_default_graph()

BATCH_SIZE = 10
LENGTH_MAX_OUTPUT = 31

it_batch_nr = tf.constant(0)
it_row_nr = tf.Variable(0, dtype=tf.int32)
it_col_nr = tf.constant(0)
chi phí = tf.constant(0)

it_batch_end = lambda it_batch_nr, giá: tf.less(it_batch_nr, BATCH_SIZE)
it_row_end = lambda it_row_nr, cost_matrix: tf.less(it_row_nr, LENGTH_MAX_OUTPUT+1)

def iterate_batch(it_batch_nr, cost):
cost_matrix = tf.Variable(np.ones((LENGTH_MAX_OUTPUT+1, LENGTH_MAX_OUTPUT+1)), dtype=tf.float32)
it_rows, cost_matrix = tf.while_loop(it_row_end, iterate_row, [it_row_nr, cost_matrix])
cost = cost_matrix[0,0] # IS 1.0, NÊN LÀ 100.0
trả về tf.add(it_batch_nr,1), chi phí

def iterate_row(it_row_nr, cost_matrix):
# ĐIỀU NÀY LẠI LỖI:
cost_matrix[0,0].sign(100.0)
trả về tf.add(it_row_nr,1), cost_matrix

it_batch = tf.while_loop(it_batch_end, iterate_batch, [it_batch_nr, cost])

sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
out = sess.run(it_batch)
in (ra)

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

tf.Biến Các đối tượng không thể được sử dụng làm biến vòng lặp trong vòng lặp while vì các biến vòng lặp được triển khai khác nhau.

Vì vậy, hãy tạo biến bên ngoài vòng lặp và tự cập nhật biến đó bằng cách sử dụng tf.task trên mỗi lần lặp hoặc theo dõi các cập nhật theo cách thủ công như bạn đã làm với các biến vòng lặp (bằng cách trả về các giá trị đã cập nhật của chúng từ vòng lặp lambda, trong trường hợp của bạn là sử dụng hàm giá trị vòng lặp bên trong làm giá trị mới của vòng lặp bên ngoài).

Giới thiệu về python - TensorFlow while_loop chuyển đổi biến thành hằng số? , 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/44912041/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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