यह मेरा पहली बार Tensorflow का उपयोग कर रहा है और मेरे पास यह कोड है:

import tensorflow as tf
# Task: predict whether each sentence is a question or not.
sentences = tf.constant(
    ['What makes you think she is a witch?',
     'She turned me into a newt.',
     'A newt?',
     'Well, I got better.'])
is_question = tf.constant([True, False, True, False])

# Build the Keras model.
keras_model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=[None], ragged=True),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10)
])

keras_model.compile(loss='mse', optimizer='rmsprop',metrics=['accuracy'])
keras_model.fit(sentences, is_question, epochs=5)
test_loss, test_acc = keras_model.evaluate(sentences,  is_question)

print('\nTest accuracy:', test_acc)

लेकिन जब मैं इसका उपयोग करने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है:

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
0
Anatole Sot 3 फरवरी 2021, 10:47

2 जवाब

सबसे बढ़िया उत्तर

कोड के साथ कुछ समस्याएं हैं:

  1. आपको इनपुट परत के आकार को निर्दिष्ट करने की आवश्यकता है।
  2. आप कच्चे पाठ को एक गहरे मॉडल में नहीं खिला सकते। आपको इसे पूर्णांक में टोकन करने की आवश्यकता है।
  3. (वह जो वास्तव में उल्लिखित त्रुटि उठाता है :) आप उस मॉडल को इनपुट नहीं खिला सकते हैं जिसने पिछले आयाम को रैग किया है। निरंतर अनुक्रम लंबाई तक पहुंचने के लिए आपको शून्य के साथ इनपुट को पैड करने की आवश्यकता है।

टोकनिंग और पैडिंग के लिए आप निम्न कोड का उपयोग कर सकते हैं:

from keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer(num_words=my_max)
tokenizer.fit_on_texts(text) 
sequences = tokenizer.texts_to_sequences(text)   
sequences_matrix = sequence.pad_sequences(sequences, maxlen=max_sequence_length,
                                           truncating='post', padding='post')
2
Marzi Heidari 3 फरवरी 2021, 11:19

आप रैग्ड अंतिम आयाम (जहां वाक्यों की लंबाई अलग-अलग हैं) के साथ टेंसर के साथ अपने मॉडल का उपयोग नहीं कर सकते।

1
Andrey 3 फरवरी 2021, 11:08