मेरे पास टेंसरफ्लो में लागू एक हानि फ़ंक्शन है जो औसत वर्ग त्रुटि की गणना करता है। उद्देश्य का गणना करने के लिए उपयोग किए जाने वाले सभी टेंसर फ्लोट 64 के प्रकार हैं और इसलिए हानि फ़ंक्शन स्वयं dtype float64 का है। विशेष रूप से,tensorflow हानि न्यूनीकरण प्रकार त्रुटि
print cost
==> Tensor("add_5:0", shape=TensorShape([]), dtype=float64)
हालांकि, जब मैं कम करने का प्रयास मैं एक मूल्य त्रुटि सम्मान के साथ टेन्सर के प्रकार के प्राप्त:
GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
==> ValueError: Invalid type <dtype: 'float64'> for add_5:0, expected: [tf.float32].
मुझे समझ नहीं आता क्यों टेन्सर की उम्मीद dtype है एक सटीक फ्लोट जब गणना के लिए अग्रणी सभी चर प्रकार float64 प्रकार हैं। मैंने पुष्टि की है कि जब मैं फ्लोट 32 होने के लिए सभी चरों को मजबूर करता हूं तो गणना सही ढंग से निष्पादित होती है।
क्या किसी के पास कोई अंतर्दृष्टि है कि यह क्यों हो रहा है? मेरा कंप्यूटर एक 64 बिट मशीन है।
यहाँ एक उदाहरण है कि व्यवहार
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)
समझा! धन्यवाद! – user1936768
अब काम नहीं कर रहा है (टीएफ v0.6)। 'TypeError:' ApplyGradientDescent 'ओप के इनपुट' अल्फा 'में फ़्लोट 32 टाइप किया गया है जो तर्क' var 'के प्रकार float64 से मेल नहीं खाता है। – colinfang
यह इंगित करने के लिए धन्यवाद। मैंने एक फिक्स के साथ जवाब संपादित किया। – mrry