def main(_): BSN=7 learn_rate = 0.005 batchsize = 1024 epoch = 1000 opt = Adam(lr=learn_rate)#, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False opt1 = SGD(lr=learn_rate)#,decay=learn_rate / epoch) opt2=RMSprop(lr=learn_rate, rho=0.9, epsilon=None, decay=0.0) opt3=Adadelta(lr=learn_rate, rho=0.95, epsilon=None, decay=0.0) opt4=Nadam(lr=learn_rate, beta_1=0.9, beta_2=0.999, epsilon=None, schedule_decay=0.00004) trainX,trainY = init_data.load_data() print(np.shape(trainX)) input = Input(shape=(14,30,1)) #input = Input(shape=(6,5,60,1)) predict = model_art.pred_step1(input) model = Model(inputs=input, outputs=predict) model.compile(optimizer=opt, loss=mse1, metrics=['accuracy',accuracy1]) #model.load_weights('savemodel/64train1+1000.hdf5') model.summary() checkpoint = ModelCheckpoint('savemodel/step1+{epoch:02d}.hdf5',monitor='val_loss',verbose=1, save_weights_only=True, save_best_only=False, period=200) # checkpoint = ModelCheckpoint('savemodel/cnnt+{epoch:02d}.hdf5',monitor='val_loss',verbose=1, # save_weights_only=True, save_best_only=False, period=10) earlystop = EarlyStopping(patience=10, verbose=1) tensorboard = TensorBoard(write_graph=True) res = model.fit(trainX, trainY, steps_per_epoch=80000//5*4 //batchsize,epochs =epoch,callbacks=[checkpoint],validation_split=0.2,validation_steps=80000//5 //batchsize) loss_h=res.history['loss'] np_loss=np.array(loss_h) np.savetxt('txt220.txt',np_loss)
def train(): log_dir = "logs\\fit\\" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1) vocab, labels, training, output = init_data.load_data() len_x = math.floor(len(training) * 0.8) len_y = math.floor(len(output) * 0.8) print(len_x) print(len_y) x_train, y_train = training[:len_x], output[:len_y] x_test, y_test = training[len_x:], output[len_y:] print(training[0]) print(output[0]) # Create model - 3 layers. First layer 128 neurons, second layer 64 neurons and 3rd output layer contains number of neurons # equal to number of intents to predict output intent with softmax model = tf.keras.models.Sequential() model.add( tf.keras.layers.Dense(128, input_shape=(len(training[0]), ), activation='relu')) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(64, activation='relu')) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(len(output[0]), activation='softmax')) sgd = tf.keras.optimizers.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(x_train), np.array(y_train), epochs=1000, batch_size=8, verbose=1, validation_data=(np.array(x_test), np.array(y_test)), callbacks=[tensorboard_callback], ) print("Average test loss: ", np.average(hist.history['loss'])) model.save("chatbot_model.h5", hist)
def data_split(): """ data_split函数的主要作用是将原始数据分为训练数据和测试数据,其中训练数据和测试数据的比例为2:1 """ x_data,y_data = load_data() x_training = [] x_test= [] y_training = [] y_test = [] for i in range(len(x_data)): if random.random() > 0.67: x_training.append(x_data[i]) y_training.append(y_data[i]) else: x_test.append(x_data[i]) y_test.append(y_data[i]) x_training = np.array(x_training) y_training = np.array(y_training) x_test = np.array(x_test) y_test = np.array(y_test) return (x_training,x_test,y_training,y_test)
from nltk.tokenize import word_tokenize import json import random from keras.models import Sequential, load_model from keras.layers import Dense, Activation, Dropout from keras.optimizers import SGD import tensorflow as tf import numpy as np import nltk from nltk.stem import LancasterStemmer import os import argparse import chatbot_train stemmer = LancasterStemmer() vocab, labels, training, output = init_data.load_data() def bag_of_words(sentence, vocab): bag = [0 for _ in range(len(vocab))] s_words = nltk.word_tokenize(sentence) s_words = [stemmer.stem(word.lower()) for word in s_words] for se in s_words: for i, w in enumerate(vocab): if w == se: bag[i] = 1 # print(bag) return np.array(bag) # picks the highest probability and returns the index.
#!/usr/bin/env python #_*_ coding:utf-8 _*_ #通过sklearn库中所提供的关于k-近邻算法相关的包来实现对鸢尾花数据集的建模与预测 from init_data import load_data import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.cross_validation import train_test_split x_data, y_data = load_data() #获取数据 x_training, x_test, y_training, y_test = train_test_split( x_data, y_data, random_state=10) #将数据分为训练集和测试集 estimotor = KNeighborsClassifier() #构造k-近邻分类器 estimotor.fit(x_training, y_training) #训练模型 y_predicted = estimotor.predict(x_test) #用训练的模型进行预测 accuracy = np.mean(y_test == y_predicted) * 100 #计算预测结果的准确率 print('The accuracy is {0:1f}%'.format(accuracy))