Tôi có chức năng mất mát được thực hiện trong TensorFlow tính toán sai số trung bình bình phương. Tất cả các tensors được sử dụng để tính toán mục tiêu là kiểu float64 và do đó chức năng mất chính nó là của float64 dtype. Đặc biệt,lỗi giảm thiểu mất lưu lượng dòng chảy
print cost
==> Tensor("add_5:0", shape=TensorShape([]), dtype=float64)
Tuy nhiên, khi tôi cố gắng để hạn chế tối đa tôi có được một lỗi giá trị liên quan đến loại của tensor:
GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
==> ValueError: Invalid type <dtype: 'float64'> for add_5:0, expected: [tf.float32].
Tôi không hiểu tại sao các dtype dự kiến của tensor là một float chính xác duy nhất khi tất cả các biến dẫn đến tính toán là kiểu float64. Tôi đã xác nhận rằng khi tôi ép tất cả các biến là float32 thì việc tính toán sẽ thực hiện chính xác.
Có ai có bất kỳ thông tin chi tiết nào về lý do tại sao điều này có thể xảy ra không? Máy tính của tôi là một máy 64bit.
Dưới đây là một ví dụ mà tái tạo các hành vi
import tensorflow as tf
import numpy as np
# Make 100 phony data points in NumPy.
x_data = np.random.rand(2, 100) # Random input
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# Construct a linear model.
b = tf.Variable(tf.zeros([1], dtype=np.float64))
W = tf.Variable(tf.random_uniform([1, 2], minval=-1.0, maxval=1.0, dtype=np.float64))
y = tf.matmul(W, x_data) + b
# Minimize the squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# For initializing the variables.
init = tf.initialize_all_variables()
# Launch the graph
sess = tf.Session()
sess.run(init)
# Fit the plane.
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
Đã hiểu! Cảm ơn! – user1936768
Dường như dường như không hoạt động (tf v0.6). 'TypeError: Input 'alpha' của 'ApplyGradientDescent' Op có kiểu float32 không khớp với kiểu float64 của đối số 'var'.' – colinfang
Cảm ơn bạn đã chỉ ra điều đó. Tôi đã chỉnh sửa câu trả lời với bản sửa lỗi. – mrry