2017-10-03 7 views
0

私はこの非常に基本的なニューラルネットをhttps://machinelearningmastery.com/tutorial-first-neural-network-python-keras/から見ています。私は使用されたデータを数字とランダムなラベルのランダムな配列で置き換えました。基本ニューラルネットの予測?

入力がランダムなので、予測は約0.50、プラスまたはマイナスの値にする必要があります。私はこれを行うときしかし、私の周り0.50である

[0.49525392, 0.49652839, 0.49729034, 0.49670222, 0.49342978, 0.49490061, 0.49570397, 0.4962129, 0.49774086, 0.49475089, 0.4958384, 0.49506786, 0.49696651, 0.49869373, 0.49537542, 0.49613148, 0.49636957, 0.49723724] 

を得るが、オーバー行くことはありません。それは、私が使用するランダムな種子のためにそれを行います。したがって、それは単に偶然ではありません。この動作の説明はありますか?

# Create first network with Keras 
from keras.models import Sequential 
from keras.layers import Dense 
import numpy as np 

np.random.seed(90) 

X_train = np.random.rand(18,61250) 
X_test = np.random.rand(18,61250) 
Y_train = np.array([0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 
    0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,]) 
Y_test = np.array([1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 
    1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0,]) 

_, input_size = X_train.shape 

# create model 
model = Sequential() 
model.add(Dense(12, input_dim=input_size, init='uniform', activation='relu')) 
model.add(Dense(8, init='uniform', activation='relu')) 
model.add(Dense(1, init='uniform', activation='sigmoid')) 

# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

# calculate predictions 
predictions = model.predict(X_test) 
preds = [x[0] for x in predictions] 
print(preds) 

# Fit the model 
model.fit(X_train, Y_train, epochs=100, batch_size=10, verbose=2, validation_data=(X_test,Y_test)) 

答えて

2

これは正確にあなたの質問に答える場合、私は知らないが、私はあなたのコードの周り 遊んでいたし、何かをしようとすることを決めました。あなたのXのデータが0 と1との間に発生するので、私はこれが 結果の予測のサンプルで0と10との間に、それを生成しようとした:

[0.53419214, 0.55088341, 0.53190422, 0.52382213, 0.53469753, 0.53098464, 
0.51968938, 0.53249627, 0.52852863, 0.52497149, 0.52816379, 0.5457474, 
0.52565753, 0.5276686, 0.52042121, 0.52128422, 0.52535951, 0.52730507] 

あなたが見ることができるように、それは今0.5を超える結果を生成します。トレーニングが行われる前に の出力が予測されるため、予測は のランダムな重みで行われます。ネットワークがまだ入力ベクトルの 分布に調整されていない可能性はありますか?

これら

は、トレーニング後に予測されている:

[0.43440229, 0.48104468, 0.49194154, 0.4766106, 0.50065982, 0.47388917, 
0.51052755, 0.50618082, 0.48478326, 0.4846094, 0.50018799, 0.4800632, 
0.4181695, 0.48307362, 0.5063237, 0.50420266, 0.39, 0.44235682] 

予測は今多かれ少なかれバランスしています。両方の入力分布でこの種の 出力が得られます。私はランダムに初期化されたネットワーク の問題は、あなたの入力データ の分布に非常に依存していると思う。トレーニングの後、それは正常化する。

+0

ありがとうございます!ネットが50%を超えることがあることに気がついたが、私はそれを片面にするために何かをやっていると思った。トレーニング後に予測を行うことは意味があります。 – quil

関連する問題