1
178 개 요소의 데이터 세트가 있고 각 요소에는 13 개의 기능과 1 개의 레이블이 있습니다. 레이블이 핫 배열로 저장됩니다. 내 훈련 데이터 세트는 158 가지 요소로 구성됩니다. 여기신경망 모델에 어떤 문제가 있습니까?
내 모델이 모습입니다 :
x = tf.placeholder(tf.float32, [None,training_data.shape[1]])
y_ = tf.placeholder(tf.float32, [None,training_data_labels.shape[1]])
node_1 = 300
node_2 = 300
node_3 = 300
out_n = 3
#1
W1 = tf.Variable(tf.random_normal([training_data.shape[1], node_1]))
B1 = tf.Variable(tf.random_normal([node_1]))
y1 = tf.add(tf.matmul(x,W1),B1)
y1 = tf.nn.relu(y1)
#2
W2 = tf.Variable(tf.random_normal([node_1, node_2]))
B2 = tf.Variable(tf.random_normal([node_2]))
y2 = tf.add(tf.matmul(y1,W2),B2)
y2 = tf.nn.relu(y2)
#3
W3 = tf.Variable(tf.random_normal([node_2, node_3]))
B3 = tf.Variable(tf.random_normal([node_3]))
y3 = tf.add(tf.matmul(y2,W3),B3)
y3 = tf.nn.relu(y3)
#output
W4 = tf.Variable(tf.random_normal([node_3, out_n]))
B4 = tf.Variable(tf.random_normal([out_n]))
y4 = tf.add(tf.matmul(y3,W4),B4)
y = tf.nn.softmax(y4)
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(200):
sess.run(optimizer,feed_dict={x:training_data, y_:training_data_labels})
correct = tf.equal(tf.argmax(y_, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
print('Accuracy:',accuracy.eval({x:eval_data, y_:eval_data_labels}))
하지만 정확도가 매우 낮은, 나는 약간 높은 숫자로 증가 범위 (200)를 시도했지만 여전히 낮은 남아있다.
결과를 개선하려면 어떻게해야합니까?
문제는 초기화와 관련이 있습니다. 이 재현을 위해 훈련 데이터를 제공하십시오 – Maxim
@Skam 숙제입니다 .. –
왜 argmax 메소드가 필요합니까? 나는 argmax 메소드를 모두 삭제해야한다고 생각한다. – eneski