Numpy 我需要帮助使我的神经网络变得更智能

Numpy 我需要帮助使我的神经网络变得更智能,numpy,tensorflow,machine-learning,Numpy,Tensorflow,Machine Learning,最近,我观看了一段来自NeuralNine频道的关于创建AI聊天机器人的视频,我观看了视频,模糊地理解了代码,我是一名编码新手,并不了解所有内容,但我成功地解决了我自己出现的多个问题,然而,训练代码并不能使机器人变得更智能,我本质上想要一种方法来加载之前的训练模型,然后再次运行代码并提高每次的准确性。然而,目前它似乎只是覆盖了以前的培训模型,而没有改进自身(我想如果我错了,请纠正我),我只是看不到任何代码正在覆盖并使模型“chatbotmodel.h5”更智能。 以下是“我的”(NeuralNi

最近,我观看了一段来自NeuralNine频道的关于创建AI聊天机器人的视频,我观看了视频,模糊地理解了代码,我是一名编码新手,并不了解所有内容,但我成功地解决了我自己出现的多个问题,然而,训练代码并不能使机器人变得更智能,我本质上想要一种方法来加载之前的训练模型,然后再次运行代码并提高每次的准确性。然而,目前它似乎只是覆盖了以前的培训模型,而没有改进自身(我想如果我错了,请纠正我),我只是看不到任何代码正在覆盖并使模型“chatbotmodel.h5”更智能。 以下是“我的”(NeuralNine's)代码:

|Training.py|

import random
import json
import pickle
import numpy as np


import nltk
from nltk.stem import WordNetLemmatizer

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Dropout
from tensorflow.keras.optimizers import SGD

lemmatizer = WordNetLemmatizer()

intents = json.loads(open('intents.json').read())

words = []
classes = []
documents = []
ignore_letters = ['?', ',', '.', '!', "'"]


for intent in intents['intents']:
    for pattern in intent['patterns']:
        word_list = nltk.word_tokenize(pattern)
        words.extend(word_list)
        documents.append((word_list, intent['tag']))
        if intent['tag'] not in classes:
            classes.append(intent['tag'])

words = [lemmatizer.lemmatize(word) for word in words if word not in ignore_letters]
words = sorted(set(words))

classes = sorted(set(classes))

pickle.dump(words, open('words.pkl', 'wb'))
pickle.dump(classes, open('classes.pkl', 'wb'))

training = []
output_empty = [0] * len(classes)

for document in documents:
    bag = []
    word_patterns = document[0]
    word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
    for word in words:
        bag.append(1) if word in word_patterns else bag.append(0)

        output_row = list(output_empty)
        output_row[classes.index(document[1])] = 1
        training.append([bag, output_row])

random.shuffle(training)
training = np.array(training)

train_x = list(training[:, 0])
train_y = list(training[:, 1])

model = Sequential()
model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(train_y[0]), activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics='accuracy')

hist = model.fit(np.array(train_x), np.array(train_y), epochs=300, batch_size=8, verbose=1)

model.save('chatbotmodel.h5', hist)
print("Done")

你的问题不在于代码。在机器学习中需要理解的一个基本原则是,对模型进行更多的训练并没有必要使其更有效

我建议你们看看过度装配的问题。数据分布也非常重要


此外,如果Neuralne没有对模型进行更多的培训,可能有一些原因。

感谢您提供的信息。请欣赏,我会查看:)