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

android — Cách gán giá trị trong TensorFlow while_loop

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

Mục tiêu là triển khai chức năng lặp trong TensorFlow để lọc tín hiệu theo thời gian.

đầu vàosau đó được hiển thị dưới dạng[lô, in_deep, in_height, in_width, in_channels] Tenxơ 5 chiều có dạng. tôi muốn sử dụng tf.while_loop Lặp lạiin_deepvà gán lại các giá trị dựa trên các giá trị ở bước thời gian trước đó. Tuy nhiên, tôi không thể gán lại giá trị biến trong vòng lặp.

Để đơn giản hóa vấn đề, tôi đã tạo ra một phiên bản một chiều của vấn đề:

điều kiện def(i, tín hiệu):
trả về tf.less(i, signal.shape[0])

hoạt động def(i, tín hiệu):
tín hiệu = tf.get_variable("tín hiệu")
tín hiệu = tín hiệu[i].gán(tín hiệu[i-1]*2)
i = tf.add(i, 1)
trở lại (i, tín hiệu)

với tf.variable_scope("scope"):
i = tf.constant(1)
init = tf.constant_initializer(0)
signal = tf.get_variable("scope", [4], tf.float32, init, trainable = Sai)
tín hiệu = tf.sign(tín hiệu[0], 1.2)

với tf.variable_scope("scope", tái sử dụng = True):
loops_vars = [i, tín hiệu]
i, signal = tf.while_loop(điều kiện, thao tác, loop_vars, back_prop = Sai)

với tf.Session() là phiên:
session.run(tf.global_variables_initializer())
i, signal = session.run([i, signal])

tf.gán Trả về một thao tác phải được chạy trong một phiên để được đánh giá ( xem ở đây để biết thêm chi tiết ).

Tôi đã mong đợi rằng TensorFlow sẽ xâu chuỗi các hoạt động trong một vòng lặp, vì vậy khi tôi chạy phiên và yêu cầu tín hiệu Việc phân bổ sẽ được thực hiện. Nhưng khi tôi thực thi đoạn mã đã cho và in kết quả,tín hiệu包含[1.2, 0, 0, 0]TôiChứa (như mong đợi)4 .

Sự hiểu lầm của tôi là gì và làm cách nào để thay đổi mã để thực hiện tín hiệu Giá trị được gán lại?

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

Mặc dù các biến vòng lặp chỉ được cập nhật bằng giá trị trả về của hàm nội dung, nhưng bạn không nên sử dụng thao tác gán của riêng mình. Thay vào đó bạn cần trả lại hy vọng tín hiệu có giá trị sau vòng lặp, như Tôi Như nhau.

Ngoài ra, bạn không nên sử dụng trong nội dung văn bản hoặc câu điều kiện tf.get_variable, thay vào đó hãy sử dụng các tham số bạn nhận được.

# ...
hoạt động def(i, tín hiệu):
hình dạng = tín hiệu.shape
signal = tf.concat([signal[:i], [signal[i - 1] * 2], signal[i + 1:]], axis=0)
signal.set_shape(shape) # Hình dạng phải bất biến đối với vòng lặp
i = tf.add(i, 1)
trở lại (i, tín hiệu)

với tf.variable_scope("scope"):
i = tf.constant(1)
init = tf.constant_initializer(1.2) # tín hiệu init ở đây và tránh tf.sign
signal = tf.get_variable("scope", [4], tf.float32, init, trainable = Sai)
# tín hiệu = tf.sign(tín hiệu[0], 1.2)

# ...

Về python - cách gán giá trị trong TensorFlow while_loop, 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/45437680/

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