paypal plugin

This blog are helpful for you???? So please Donate! :)





domingo, 26 de novembro de 2017

keras lab

# Create first network with Keras
import os
os.environ['KERAS_BACKEND'] = 'theano'
os.environ['TENSORFLOW_FLAGS'] = "device=opencl,floatX=float32"
os.environ['THEANO_FLAGS'] = "device=cpu,floatX=float32"
from sklearn import preprocessing
from keras.models import Sequential, Model
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D,LSTM
from keras.utils import np_utils
from keras.optimizers import SGD,Adamax
import keras.backend as K


from keras.models import Sequential
from keras.layers import Dense
import numpy

numpy.set_printoptions(precision=2, suppress=True)
numpy.random.seed(7)


dataset = numpy.loadtxt("lotofacil_t.csv", delimiter=",",)#usecols=(0,1,2,3,4,5,6,7))
X = dataset[:,0:5]
Y = dataset[:,5]


#normalizar os X -> melhora a escala dos dados de input
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X)

#parametros
###grid search-> combinações de parametros -> hiperparamitrizacao
batch_size = 1000
nb_epoch = 250000 # Numero de épocas
learning_rate = 0.5

model = Sequential()

model.add(Dense(1000, input_dim=5))
model.add(Activation('relu'))
model.add(Dense(200))
model.add(Activation('relu'))
# saida da zero ou 1
model.add(Dense(1))
model.add(Activation('sigmoid'))



print("[INFO] compiling model...")

opt = Adamax()#lr=0.001,)


model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"])


model.fit(X_train_minmax, Y, epochs=nb_epoch, batch_size=batch_size,verbose=1)

scores = model.evaluate(X_train_minmax, Y)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))

print("testando a rede")

dataset2 = numpy.loadtxt("test.csv", delimiter=",",)
XX = dataset2[:,0:5]
xx = min_max_scaler.fit_transform(XX)
model.predict(xx)

model.save_weights("gustavo_model.h5")
model.save("gustavo_pesos.h5")

#### melhorias
#1 . usa standard scale do scikit learn  => http://scikit-learn.org/stable/modules/preprocessing.html
#2 . numero de epocas -> ++++
#2.1 função de ativação nas camadas intermediarias
#3 . callback e fazer criterio de parada usando paciance
#4 . diminuir o batch_size 200 e aumentar o numero de epocas
#5 . mexer na função de perda
#6 . mexer no learning rate na função de perda

#98 . dropout ->
#98.1 aumentar agressividade do dropout
#99 . mexer na arquitetura ====>>> mais camadas mais neuronios
##99.1 mais camadas com mesmo numero de neuronios de camadas intermediarias
##99.2 aumentar numero de neuronios em cada camada gradativamente.
##99.3 deixa o droupout extremamente agressivo



#model.predict para testar
#model.evaluate para ver % de acerto



# quanto mais o loss tiver perto de 0, melhor...ignorar acuracia
import os os.environ['KERAS_BACKEND'] = 'theano' os.environ['TENSORFLOW_FLAGS'] = "device=opencl,floatX=float32" os.environ['THEANO_FLAGS'] = "device=cpu,floatX=float32" from sklearn import preprocessing from keras.models import Sequential, Model from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D,LSTM from keras.utils import np_utils from keras.optimizers import SGD,Adamax import keras.backend as K from keras.models import Sequential from keras.layers import Dense import numpy numpy.set_printoptions(precision=2, suppress=True) numpy.random.seed(7) #dataset = numpy.loadtxt("quadrantes_lotofacil2.csv", delimiter=",",)#usecols=(0,1,2,3,4,5,6,7)) dataset = numpy.loadtxt("lotofacil_t3.csv", delimiter=",",) X = dataset[:,0:5] Y = dataset[:,5] #normalizar os X -> melhora a escala dos dados de input #min_max_scaler = preprocessing.MinMaxScaler() #X_train_minmax = min_max_scaler.fit_transform(X) X_train_minmax = X #parametros ###grid search-> combinações de parametros -> hiperparamitrizacao batch_size = 1000 nb_epoch = 2500 # Numero de épocas learning_rate = 0.5 model = Sequential() model.add(Dense(1000, input_dim=5)) model.add(Activation('relu')) model.add(Dense(200)) model.add(Activation('relu')) # saida da zero ou 1 model.add(Dense(1)) model.add(Activation('sigmoid')) print("[INFO] compiling model...") opt = Adamax()#lr=0.001,) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) model.fit(X_train_minmax, Y, epochs=nb_epoch, batch_size=batch_size,verbose=1) scores = model.evaluate(X_train_minmax, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) print("testando a rede") dataset2 = numpy.loadtxt("test.csv", delimiter=",",) XX = dataset2[:,0:5] xx = min_max_scaler.fit_transform(XX) model.predict(xx)

# Create first network with Keras import os os.environ['KERAS_BACKEND'] = 'theano' os.environ['TENSORFLOW_FLAGS'] = "device=opencl,floatX=float32" os.environ['THEANO_FLAGS'] = "device=cpu,floatX=float32" from sklearn import preprocessing from keras.models import Sequential, Model from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D,LSTM from keras.utils import np_utils from keras.optimizers import SGD,Adamax import keras.backend as K from keras.models import Sequential from keras.layers import Dense import numpy numpy.set_printoptions(precision=2, suppress=True) numpy.random.seed(7) dataset = numpy.loadtxt("lotofacil_t2.csv", delimiter=",",)#usecols=(0,1,2,3,4,5,6,7)) X = dataset[:,0:5] Y = dataset[:,5] #normalizar os X -> melhora a escala dos dados de input min_max_scaler = preprocessing.MinMaxScaler() #min_max_scaler = preprocessing.MaxAbsScaler() X_train_minmax = min_max_scaler.fit_transform(X) #X_train_minmax = preprocessing.normalize(X, norm='l2') #X_train_minmax=X #parametros ###grid search-> combinações de parametros -> hiperparamitrizacao batch_size = 150 nb_epoch = 1000000 # Numero de épocas learning_rate = 0.1 model = Sequential() model.add(Dense(5, input_dim=5)) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('relu')) # saida da zero ou 1 model.add(Dense(1)) model.add(Activation('sigmoid')) print("[INFO] compiling model...") opt = Adamax()#lr=0.001,) #opt = SGD(lr= 0.5, decay=0.000001, momentum=0., nesterov=False) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) model.fit(X_train_minmax, Y, epochs=nb_epoch, batch_size=batch_size,verbose=1) scores = model.evaluate(X_train_minmax, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) #model.load_weights("gustavo_pesos.h5") print("testando a rede") dataset2 = numpy.loadtxt("test.csv", delimiter=",",) XX = dataset2[:,0:5] xx = min_max_scaler.fit_transform(XX) resp = model.predict(xx) print(XX,resp) model.save_weights("gustavo_model2.h5") model.save("gustavo_pesos2.h5") #### melhorias #1 . usa standard scale do scikit learn => http://scikit-learn.org/stable/modules/preprocessing.html #2 . numero de epocas -> ++++ #2.1 função de ativação nas camadas intermediarias #3 . callback e fazer criterio de parada usando paciance #4 . diminuir o batch_size 200 e aumentar o numero de epocas #5 . mexer na função de perda #6 . mexer no learning rate na função de perda #98 . dropout -> #98.1 aumentar agressividade do dropout #99 . mexer na arquitetura ====>>> mais camadas mais neuronios ##99.1 mais camadas com mesmo numero de neuronios de camadas intermediarias ##99.2 aumentar numero de neuronios em cada camada gradativamente. ##99.3 deixa o droupout extremamente agressivo #model.predict para testar #model.evaluate para ver % de acerto # quanto mais o loss tiver perto de 0, melhor...ignorar acuracia

Nenhum comentário:

Postar um comentário