import tensorflow as tf
import os
import sklearn.preprocessing
import pandas as pd
import numpy as np
print(os.getcwd())
os.chdir("C:/Users/jbnu/Documents/양지성/Scholar/정규학기/3-2/데이터마이닝실습/프로젝트/현행/bank-additional/bank-additional")
Importieren und Verwalten von DatensätzenSie müssen einen Wert für Platzhalter Tensor 'Platzhalter' füttern mit dtype Schwimmer (Tensorflow)
bank = pd.read_csv("bank4.csv", index_col=False)
tf.reset_default_graph()
keep_prob = tf.placeholder(tf.float32)
learning_rate = 0.003
x_data = bank.ix[:,0:9]; print(x_data)
y_data = bank.ix[:, [-1]]; print(y_data)
x_data = sklearn.preprocessing.scale(x_data).astype(np.float32); print(x_data)
y_data = y_data.astype(np.float32)
Einstellung Platzhalter und Gewichte mit 3 Schichten.
X = tf.placeholder(tf.float32, [None, 9]); print(X)
Y = tf.placeholder(tf.float32, [None, 1])
# Layer 1
W1 = tf.get_variable("weight1", shape=[9,15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
b1 = tf.get_variable("bias1", shape=[15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
layer1 = tf.nn.relu(tf.matmul(X, W1) + b1)
layer1 = tf.nn.dropout(layer1, keep_prob=keep_prob)
# Layer 2
W2 = tf.get_variable("weight2", shape=[15,15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
b2 = tf.get_variable("bias2", shape=[15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
layer2 = tf.nn.relu(tf.matmul(layer1, W2) + b2)
layer2 = tf.nn.dropout(layer2, keep_prob=keep_prob)
# Layer 3
W3 = tf.get_variable("weight3", shape=[15,15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
b3 = tf.get_variable("bias3", shape=[15], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
layer3 = tf.nn.relu(tf.matmul(layer2, W3) + b3)
layer3 = tf.nn.dropout(layer3, keep_prob=keep_prob)
# Output Layer
W4 = tf.get_variable("weight4", shape=[15,1], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
b4 = tf.get_variable("bias4", shape=[1], dtype = tf.float32,
initializer=tf.contrib.layers.xavier_initializer())
hypothesis = tf.sigmoid(tf.matmul(layer3, W4) + b4)
hypothesis = tf.nn.dropout(hypothesis, keep_prob=keep_prob)
definieren Kostenfunktion und Optimierer.
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y) * tf.log(1 - hypothesis))
train = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
predicted = tf.cast(hypothesis > 0.5, dtype=tf.float32)
accuracy = tf.reduce_mean(tf.cast(tf.equal(predicted, Y), dtype=tf.float32))
Ausbildung und Genauigkeitstest
# Launch graph
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for step in range(10001):
sess.run(train, feed_dict={X: x_data, Y: y_data})
if step % 1000 == 0:
print("step: ", step, sess.run(cost, feed_dict={X: x_data, Y: y_data}), sep="\n")
# Accuracy report
h, c, a = sess.run([hypothesis, predicted, accuracy],
feed_dict={X: x_data, Y: y_data})
print("\nHypothesis: ", h, "\nCorrect: ", c, "\nAccuracy: ", a)
Ich habe keine Ahnung, warum meine NN nicht funktioniert.
Ich bekomme ständig eine Nachricht "Sie müssen einen Wert für Platzhalter Tensor 'Platzhalter' mit Dtype Float" füttern, obwohl alle von ihnen Float32 sind.
Auch meine Dropout-Rate findet feed_dict Fehler. Bitte führen Sie den Code und sagen Sie mir, was los ist.