Keras로 기계 학습을 시작하려고합니다.Keras : 정확도가 0으로 유지됩니다.
저는 수학자가 아니며 신경망이 어떻게 작동하는지 (하하는 이해할 수있는 것)에 대해서만 기본적으로 이해하고 있으므로 쉽게 이해할 수 있습니다.
이 내 현재 코드입니다 :
이from keras.utils import plot_model
from keras.models import Sequential
from keras.layers import Dense
from keras import optimizers
import numpy
# fix random seed for reproducibility
numpy.random.seed(7)
# split into input (X) and output (Y) variables
X = []
Y = []
count = 0
while count < 10000:
count += 1
X += [count/10000]
numpy.random.seed(count)
#Y += [numpy.random.randint(1, 101)/100]
Y += [(count + 1)/100]
print(str(X) + ' ' + str(Y))
# create model
model = Sequential()
model.add(Dense(50, input_dim=1, kernel_initializer = 'uniform', activation='relu'))
model.add(Dense(50, kernel_initializer = 'uniform', activation='relu'))
model.add(Dense(1, kernel_initializer = 'uniform', activation='sigmoid'))
# Compile model
opt = optimizers.SGD(lr=0.01)
model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
# Fit the model
model.fit(X, Y, epochs=150, batch_size=100)
# evaluate the model
scores = model.evaluate(X, Y)
predictions = model.predict(X)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
print (str(predictions))
##plot_model(model, to_file='C:/Users/Markus/Desktop/model.png')
정확도는 제로 유지하고 예측이 하나의 배열입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
float 예측을하는 방법이 없습니까? –
가능합니다. 손실 함수를 평균 제곱 오차와 같은 것으로 변경해야합니다. 이것을 확인하십시오 : [] (https://keras.io/losses/). 또한 마지막 레이어에서 시그마 이드 활성화를 제거하려고합니다. –
그래, 작동하도록했습니다. 그러나 손실은 거의 없으며 작은 단계만으로 감소합니다. 어떤 매개 변수를 사용하면 어떤 종류의 네트워크를 추천합니까? –