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



最近,我从NeuralNine的一个频道观看了一段关于创建AI聊天机器人的视频,我观看了视频,对代码有点理解,我是一个编程初学者,并没有完全理解,但我自己解决了出现的多个问题,然而,训练代码并没有让机器人变得更聪明,我本质上想要一种方法来加载以前的训练模型,然后再次运行代码,每次都提高准确性。然而,目前它似乎只是覆盖了以前的训练模型,而没有改进自己(我想如果我错了,请纠正我(,我只是看不到任何代码正在覆盖并使模型";聊天机器人模型h5"更聪明";。这是";我的";(NeuralNine(代码:

|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")

问题不在于代码。机器学习中需要理解的一个基本原则是,对模型进行更多的训练并不一定会提高效率。

我建议你们考虑一下过拟合的问题。数据分布也非常重要。

此外,如果NeuralNine没有对模型进行更多的训练,也许有一些原因。

最新更新