Ich versuche neuronale Netze mit zufälligen Gewichten in Keras zu erstellen. Ich verwende die Funktion set_weights() von Modellen, um zufällige Gewichte zuzuweisen. Model.predict() gibt jedoch die gleiche Ausgabe für eine bestimmte Eingabe unabhängig von den Gewichten. Die Ausgabe unterscheidet sich jedes Mal, wenn ich das Programm ausführe, aber es ist dasselbe, während ein Programm läuft. Hier ist der Code:Modell Gewichte nicht ändern Keras
ConnectFourAI.py:
from keras.models import Sequential
from keras.layers import Dense
from minimax2 import ConnectFour
import numpy as np
from time import sleep
import itertools
import random
import time
def get_model():
model = Sequential()
model.add(Dense(630, input_dim=84, kernel_initializer='uniform', activation='relu'))
model.add(Dense(630,kernel_initializer='normal', activation='relu'))
model.add(Dense(7, kernel_initializer='normal', activation='relu'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
map = {
'x':[1,0],
' ':[0,0],
'o':[0,1]
}
model = get_model()
def get_AI_move(grid):
global model
inp = np.array(list(itertools.chain.from_iterable([map[t] for t in np.array(grid).reshape(42)]))).reshape(1,84)
nnout = model.predict(inp)
# print(list(nnout[0]))
out = np.argmax(nnout)
while grid[0][out] != " ":
out = np.random.randint(7)
print("out = %d"%out)
return out
shapes = [(w.shape) for w in model.get_weights()]
print(list(model.get_weights()[0][0][0:5]))
def score_func(x, win):
if win == "x":
return 10000
elif win == " ":
return 2000
else:
return x**2
if __name__=="__main__":
for i in range(100):
weights = [np.random.randn(*s) for s in shapes]
# print(list(weights[0][0][0:5]))
model.set_weights(weights)
print(list(model.get_weights()[0][0][0:5]))
game = ConnectFour()
game.start_new()
rounds = game._round
win = game._winner
score = score_func(rounds, win)
print("%dth game scored %.3f"%(i+1,score))
seed = int(time.time()* 10**6)%(2**32)+1
np.random.seed(seed)
diesen Fehler zu erstellen, benötigen Sie eine zusätzliche Datei. In dieser Datei ist alles in Ordnung, aber der einzige Aufruf an den Zufallswert ergibt immer den gleichen Wert. Hier ist die file.
wo passen Sie das Modell mit Trainingsdaten an? –
Ich bin und werde nie das neuronale Netz mit irgendwelchen Daten passen. Ich möchte Gewichte nach evolutionärem Algorithmus entscheiden. Ich möchte 100 zufällige neuronale Netze erstellen, die besten auswählen, ihre Gewichte leicht ändern und wiederholen. –
@SagarRohankar Hast du eine Idee, warum passiert das? Können Sie zumindest versuchen, mein Problem neu zu erstellen? –