回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是深入学习的初学者,并坚持这个问题。在</p>
<pre><code>import tensorflow as tf
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
#define the one hot encode function
def one_hot_encode(labels):
n_labels = len(labels)
n_unique_labels = len(np.unique(labels))
one_hot_encode = np.zeros((n_labels,n_unique_labels))
one_hot_encode[np.arange(n_labels), labels] = 1
return one_hot_encode
#Read the sonar <a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a>
df = pd.read_csv('sonar.csv')
print(len(df.columns))
X = df[df.columns[0:60]].values
y=df[df.columns[60]]
#encode the dependent variable containing categorical values
encoder = LabelEncoder()
encoder.fit(y)
y = encoder.transform(y)
Y = one_hot_encode(y)
#Transform the data in training and testing
X,Y = shuffle(X,Y,random_state=1)
train_x,test_x,train_y,test_y = train_test_split(X,Y,test_size=0.20, random_state=42)
#define and initialize the variables to work with the tensors
learning_rate = 0.1
training_epochs = 1000
#Array to store cost obtained in each epoch
cost_history = np.empty(shape=[1],dtype=float)
n_dim = X.shape[1]
n_class = 2
x = tf.placeholder(tf.float32,[None,n_dim])
W = tf.Variable(tf.zeros([n_dim,n_class]))
b = tf.Variable(tf.zeros([n_class]))
#initialize all variables.
#define the cost function
y_ = tf.placeholder(tf.float32,[None,n_class])
y = tf.matmul(x, W)+ b
init = tf.global_variables_initializer()#wrong position
cost_function = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y,labels=y_))
training_step = tf.train.AdamOptimizer(learning_rate).minimize(cost_function)
init = tf.global_variables_initializer()#correct position
#initialize the session
sess = tf.Session()
sess.run(init)
mse_history = []
#calculate the cost for each epoch
for epoch in range(training_epochs):
sess.run(training_step,feed_dict={x:train_x,y_:train_y})
cost = sess.run(cost_function,feed_dict={x: train_x,y_: train_y})
cost_history = np.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(cost_history,cost)
print('epoch : ', epoch, ' - ', 'cost: ', cost)
pred_y = sess.run(y, feed_dict={x: test_x})
print(pred_y)
#Calculate Accuracy
correct_prediction = tf.equal(tf.argmax(pred_y,1), tf.argmax(test_y,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy))
sess.close()
</code></pre>
<p>如果我在上面的代码中使用init=tf.global_variables_初始值设定项()
上面<strong>AdamOptimizer</strong>那么它会给出错误,但是如果我在之后使用它的话
<strong>AdamOptimizer</strong>那么它工作正常。原因是什么?
尽管在这两个位置都使用<strong>GradientDescentOptimizer</strong>,它都能很好地工作。在</p>