title: TypeError: Dimension value must be integer or None or have an __index__ method, got TensorShape([None, 1])
body: <p>I am trying to convert a bot tutorial I found that uses tflearn to use keras. Right now the output should be data for the models prediction. However, I get the error:</p>
  
  <p>TypeError: Dimension value must be integer or None or have an __index__ method, got TensorShape([None, 1])</p>
  
  <p>my code:</p>
  
  <pre><code>with open("intents.json") as file:
      data = json.load(file)
  try:
      with open("data.pickle", "rb") as f:
          words, lables, training, output = pickle.load(f)
  
  except:
      words = []
      labels = []
      docs_x = []
      docs_y = []
  
      for intent in data["intents"]:
          for pattern in intent["patterns"]:
              wrds = nltk.word_tokenize(pattern)
              words.extend(wrds)
              docs_x.append(wrds)
              docs_y.append(intent["tag"])
  
          if intent["tag"] not in labels:
              labels.append(intent["tag"])
  
      words = [stemmer.stem(w.lower()) for w in words if w != "?"]
      words = sorted(list(set(words)))
  
      labels = sorted(labels)
  
      training = []
      output = []
  
      out_empty = [0 for _ in range(len(labels))]
  
      for x, doc in enumerate(docs_x):
          bag = []
  
          wrds = [stemmer.stem(w) for w in doc]
  
          # marks if a word is present in the input (1=yes, 0=no)
          for w in words:
              if w in wrds:
                  bag.append(1)
              else:
                  bag.append(0)
  
          output_row = out_empty[:]
          output_row[labels.index(docs_y[x])] = 1
  
          training.append(bag)
          output.append(output_row)
  
      training = numpy.array(training)
      output = numpy.array(output)
  
      with open("data.pickle", "wb") as f:
          pickle.dump((words, labels, training, output), f)
  
  tf.keras.backend.clear_session()
  
  model = tf.keras.Sequential()
  
  model.add(keras.layers.Dense(len(training[0])))
  model.add(keras.layers.Dense(8))
  model.add(keras.layers.Dense(8))
  model.add(keras.layers.Dense(len(output[0]), activation="softmax"))
  
  try:
      keras.models.load_model("model.tflearn")
  except:
      model.compile(optimizer="adam", loss="categorical_crossentropy", metrics="accuracy")
      model.fit(training, output, epochs=1000, batch_size=8)
      model.save("model.tflearn")
  
  def bag_of_words(s, words):
      bag = [0 for _ in range(len(words))]
  
      s_words = nltk.word_tokenize(s)
      s_words = [stemmer.stem(word.lower()) for word in s_words]
  
      for se in s_words:
          for i, w in enumerate(words):
              if w == se:
                  bag[i] = 1
      return numpy.array(bag)
  
  def chat():
      print("Ready to chat! (type quit to stop)")
      while True:
          inp = input("You: ")
          if inp.lower() == "quit":
              break
  
          results = model.predict([bag_of_words(inp, words)])
          print(results)
  
  chat()
  </code></pre>
  
  <p>When using the debugging mode it tells me the error is the line(inside of chat()):</p>
  
  <p>results = model.predict([bag_of_words(inp, words)])</p>