मैं टेंसरफ्लो tf.nn.embedding_lookup()
फ़ंक्शन के माध्यम से "स्क्रैच से" आईएमडीबी डेटासेट के शब्द का प्रतिनिधित्व सीखने की कोशिश कर रहा हूं। अगर मैं इसे सही ढंग से समझता हूं, तो मुझे दूसरी छिपी हुई परत से पहले एक एम्बेडिंग परत स्थापित करनी होगी, और फिर जब मैं ग्रेडियेंट वंश का प्रदर्शन करता हूं, तो परत इस परत के वजन में एक शब्द का प्रतिनिधित्व "सीख" लेगी। हालांकि, जब मैं ऐसा करने का प्रयास करता हूं, तो मुझे अपने एम्बेडिंग परत और मेरे नेटवर्क की पहली पूर्ण-कनेक्ट परत के बीच एक आकृति त्रुटि मिलती है।Tensorflow एम्बेडिंग_lookup
def multilayer_perceptron(_X, _weights, _biases):
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),name="W")
embedding_layer = tf.nn.embedding_lookup(W, _X)
layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(embedding_layer, _weights['h1']), _biases['b1']))
layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2']))
return tf.matmul(layer_2, weights['out']) + biases['out']
x = tf.placeholder(tf.int32, [None, n_input])
y = tf.placeholder(tf.float32, [None, n_classes])
pred = multilayer_perceptron(x, weights, biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred,y))
train_step = tf.train.GradientDescentOptimizer(0.3).minimize(cost)
init = tf.initialize_all_variables()
त्रुटि मैं मिलता है:
ValueError: Shapes TensorShape([Dimension(None), Dimension(300), Dimension(128)])
and TensorShape([Dimension(None), Dimension(None)]) must have the same rank
धन्यवाद! मुझे लगता है कि tf.nn.reduce_sum tf.reduce_sum होना चाहिए? जब आप एम्बेडिंग परत के आयाम को कम करना चुनते हैं, तो आपने "n_input = 300" और "embedding_size = 128" के बीच को कम करने के लिए कैसे चुना? – nicolasdavid
आप टाइपो के बारे में सही हैं - इसे ऊपर सही किया गया, धन्यवाद! मैंने 'n_input' आयाम के साथ कम करना चुना क्योंकि यह अधिक संभावना है कि इससे आपकी समस्या का सामना होगा, और मुझे लगता है कि (उदा।) इनपुट का क्रम महत्वपूर्ण नहीं था। बैग-ऑफ-शब्द प्रकार की समस्याओं के लिए ऐसा करना काफी आम है। आप * एम्बेडिंग_साइज 'के साथ कम कर सकते हैं लेकिन मुझे लगता है कि एम्बेडिंग से बहुत सारी जानकारी खो जाएगी, इसलिए शायद यह भी काम नहीं करेगा। – mrry