देता है जब मैं tf.reshape()
का उपयोग कर एक घुमाव के उत्पादन में नयी आकृति प्रदान करने की कोशिश, मैं एक लेखन त्रुटि मिलTensorflow घुमाव के उत्पादन पर नयी आकृति प्रदान लेखन त्रुटि
TypeError: Expected binary or unicode string, got -1
मॉडल मैं लिखा है है:
with tf.name_scope('conv1'):
filter = tf.Variable(tf.truncated_normal([5, 5, 1, self.num_hidden/2], mean=0.0,
stddev=0.02, dtype=tf.float32),
name='filter')
b = tf.Variable(tf.zeros([self.num_hidden/2], dtype=tf.float32),
name='b')
h1 = tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(inp, filter,
[1, 2, 2, 1], padding='SAME'), b))
with tf.name_scope('conv2'):
filter = tf.Variable(tf.truncated_normal([5, 5, self.num_hidden/2, self.num_hidden], mean=0.0,
stddev=0.02, dtype=tf.float32),
name='filter')
b = tf.Variable(tf.zeros([self.num_hidden], dtype=tf.float32),
name='b')
h2 = tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(h1, filter,
[1, 2, 2, 1], padding='SAME'), b))
# h2 -> [-1, 7, 7, 32]
# num_units -> [-1, 1568]
shape = h2.get_shape()
num_units = shape[1]*shape[2]*shape[3]
with tf.name_scope('reshape'):
h2_flattened = tf.reshape(h2, [-1, num_units])
h2_flattened = tf.nn.dropout(h2_flattened, keep_prob=0.9)
with tf.name_scope('prediction'):
W = tf.Variable(tf.truncated_normal([num_units, 1], mean=0.0, stddev=0.01,
dtype=tf.float32), name='W')
b = tf.Variable(tf.zeros([1], dtype=tf.float32), name='b')
self.pred = tf.matmul(h2_flattened, W) + b
और मुझे प्राप्त होने वाली सटीक त्रुटि है:
Traceback (most recent call last):
File "single_model_conv.py", line 108, in <module>
gan = GAN(num_latent, 28, 'single')
File "single_model_conv.py", line 23, in __init__
self.adversary(self.gen_image)
File "single_model_conv.py", line 93, in adversary
h2_flattened = tf.reshape(h2, [-1, num_units])
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1977, in reshape
name=name)
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 490, in apply_op
preferred_dtype=default_dtype)
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 657, in convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 180, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/constant_op.py", line 163, in constant
tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 422, in make_tensor_proto
tensor_proto.string_val.extend([compat.as_bytes(x) for x in proto_values])
File "/nfs/nemo/u3/idurugkar/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/util/compat.py", line 64, in as_bytes
(bytes_or_text,))
TypeError: Expected binary or unicode string, got -1
मुझे समझ में नहीं आ रहा है कि यह क्यों हो रहा है। ऐसा लगता है कि आकृति सरणी को एक टेंसर में परिवर्तित करने में कुछ त्रुटि है, लेकिन जब मैं एक मनमानी सरणी को टेंसर करने की कोशिश करता हूं और परिवर्तित करता हूं तो यह काम करता है। मैंने सभी आयामों को वास्तविक मानों में बदलने की कोशिश की (-1 के बजाय बैच_साइज), और यह भी काम नहीं करता है।
मेरा टेन्सफोर्लो संस्करण 0.11 है और मैं इसे जीपीयू समर्थन के साथ एक लिनक्स मशीन पर चला रहा हूं।
यह रूप में अच्छी तरह से मेरे (समान) समस्या हल हो जाती है, धन्यवाद! कुछ पता है कि ऐसा क्यों हो रहा है? – agrinh
मुझे विश्वास है कि .get_shape() टाइप टेंसर का रिटर्न देता है जबकि आप वास्तव में जो चाहते हैं वह या तो एक numpy सरणी या सादे पायथन सूची के साथ काम करने के लिए है। दस्तावेज़ीकरण और कार्यक्षमता बहुत अच्छी उम्मीद नहीं है कि यह बेहतर हो जाएगा या इसके का कांटा यह और अधिक स्पष्ट करेगा कि क्या हो रहा है। – Steven