タイタニックの生存率をtensorflowのディープラーニングで予測しようとして、その前に学習させようとしたら、コストがnanになってしまいます。
出力は、生存、非生存の2つなので2クラスにしています。
プレディクションはsoftmax、コストはクロスエントロピーです。
その部分のプログラムは、次のとおりです。
def multilayer_perceptron(x, weights, biases):
layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
layer_1 = tf.nn.relu(layer_1)
layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])
layer_2 = tf.nn.relu(layer_2)
out_layer = tf.matmul(layer_2, weights['out']) + biases['out']
return out_layer
weights = {
'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),
'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))
}
biases = {
'b1': tf.Variable(tf.random_normal([n_hidden_1])),
'b2': tf.Variable(tf.random_normal([n_hidden_2])),
'out': tf.Variable(tf.random_normal([n_classes]))
}
pred = tf.nn.softmax(out_layer)
cost = -tf.reduce_sum(y * tf.log(pred))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
やはり、生存・非生存は1クラスにすべきでしょうか。
それとも別の問題があるのでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー