from tensorflow.examples
.tutorials
.mnist import input_data
mnist = input_data.read_data_sets("g:/tensorflow/data", one_hot=true)
import tensorflow as tf
learning_rate = 0.001
train_epochs = 20
batch_size = 64
要使用tensorflow, 首先要引入它,然後應該初始化乙個圖,但是tensorflow中會預設乙個圖graph,所以可以跳過。此處設定學習速率為0.001,即模型優化時,採用的梯度下降方法,以0.001的學習速率向最優點逼近。train_epochs是指訓練的輪數,每次訓練選取batch_size組資料,每輪可以訓練 mnist.train.num_examples / batch_size次。所以這是乙個隨機梯度下降(sgd)。
n_input = 784
n_hidden1 = 100
n_hidden2 = 100
n_classes = 10
n_input為輸入向量的維度,由於手寫數字是28*28的(展開即784),故輸入向量維度都是784,此處神經網路為2個隱藏層,1個輸出層,隱藏層均為100個神經元。
x = tf.placeholder(tf.float32, shape=[none, n_input])
y = tf.placeholder(tf.float32, shape=[none, n_classes])
設定兩個佔位符,x為輸入,shape中第乙個值為none代表行為不確定維度,第二個值表示有n_input列,同理得到y的設定。
weights =
biases =
def
inference
(input_x):
layer_1 = tf.nn.relu(tf.matmul(x, weights['h1']) + biases['b1'])
layer_2 = tf.nn.relu(tf.matmul(layer_1, weights['h2']) + biases['b2'])
out_layer = tf.matmul(layer_2, weights['out']) + biases['out']
return out_layer
綜上,這部分**是定義了乙個函式,輸入向量,返回通過3層神經網路之後的輸出向量。
logits = inference(x)
prediction = tf.nn.softmax(logits)
loss = tf.reduce_mean(tf.nn
.softmax_cross_entropy_with_logits(logits=logits, labels=y))
optimizer = tf.train
.adamoptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(loss)
pre_correct = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1))
accuracy = tf.reduce_mean(tf.cast(pre_correct, tf.float32))
init =tf.global_variables_initializer()
tensorflow中宣告一張圖及其內部張量節點之後,要先初始化。
with tf.session() as sess:
sess.run(init)
total_batch = int(mnist.train.num_examples / batch_size)
for epoch in range(train_epochs):
for batch in range(total_batch):
batch_x, batch_y = mnist.train.next_batch(batch_size)
sess.run(train_op, feed_dict=)
if epoch % 10 == 0:
loss_, acc = sess.run([loss, accuracy], feed_dict=)
print("epoch {}, loss , acc ".format(epoch, loss_, acc))
print("optimizer finished!")
#計算測試集的準確度
test_acc = sess.run(accuracy, feed_dict=)
print('test accuracy', test_acc)
tensorflow中,要實現計算,都是在session中進行的,且應用with結構,無需手動關閉會話。
20輪訓練完成後,計算測試集的準確率,本方法輸出結果為0.9312.
DNN語音增強實現
獲取乾淨語音及雜訊語音資料,可以使用 sou ndfi le soundfile soundf ile 中的 rea dread read 函式 處理語音資料,主要是因為雜訊和乾淨語音的長度不一致,而對乾淨語音加噪時,需要保證雜訊和乾淨語音的長度一致,以防資料處理時,陣列不一致,因此需要選取與乾淨語...
反卷積實現 tensorflow 實現
deconv解卷積,實際是叫做conv transpose,conv transpose實際是卷積的乙個逆向過程,tf中,編寫conv transpose 的時候,心中想著乙個正向的卷積過程會很有幫助。想象一下我們有乙個正向卷積 input shape 1,5,5,3 kernel shape 2,...
Tensorflow實現嶺回歸
嶺回歸可以看作是線性回歸的一種增強版,實現的時候無非就是加入乙個二範數正則化項,但是應當注意,這裡只對於權重進行懲罰,偏置項是不加入正則化的,具體理論可以參見相關的 和blog,在此不贅述。這裡還是使用tf實現了嶺回歸演算法,並實際應用在了乙個真實資料集而非人工資料集上,資料及規模相比於之前的資料也...