Tensorflow 搭建自己的神經網路 四

2022-09-22 23:55:45 字數 3502 閱讀 6487

n_hidden表示神經元的個數,

forget_bias就是lstm們的忘記係數,如果等於1,就是不會忘記任何資訊。如果等於0,就都忘記。

state_is_tuple預設就是true,官方建議用true,就是表示返回的狀態用一個元祖表示。

這個裡面存在一個狀態初始化函式,就是zero_state(batch_size,dtype)兩個引數。batch_size就是輸入樣本批次的數目,dtype就是資料型別。

tf.nn.dynamic_rnn的作用:

對於單個 rnncell ,使用call 函式進行運算時,只在序列時間上前進了一步 ,如使用 x1、 ho 得到此h1,通過 x2 、h1 得到 h2 等 。

如果序列長度為n,要呼叫n次call函式,比較麻煩。對此提供了一個tf.nn.dynamic_mn函式,使用該函式相當於呼叫了n次call函式。通過 直接得到 。

具體來說,設輸入資料inputs格式為(batch_size, time_steps, input_size),其中batch_size表示batch的大小。time_steps序列長度,input_size輸入資料單個序列單個時間維度上固有的長度。

得到的outputs是time_steps步裡所有的輸出。它的形狀為(batch_size, time_steps, cell.output_size)。state 是最後一步的隱狀態,形狀為(batch_size, cell . state_size) 。

rnn_classification

#

!/usr/bin/env python2

#-*- coding: utf-8 -*-

"""created on tue apr 9 20:36:38 2019

@author: xiexj

"""import

tensorflow as tf

from tensorflow.examples.tutorials.mnist import

input_data

mnist = input_data.read_data_sets('

mnist_data

', one_hot=true)

tf.reset_default_graph()

#hyperparameters

lr = 0.001training_iters = 100000batch_size = 128n_inputs = 28n_steps = 28n_hidden_units = 128n_classes = 10

#tf graph input

x =tf.placeholder(tf.float32, [none, n_steps, n_inputs])

y =tf.placeholder(tf.float32, [none, n_classes])

#define weights

weights =

biases =

defrnn(x, weights, biases):

#hidden layer for input to cell

x = tf.reshape(x, [-1,n_inputs])

x_in = tf.matmul(x, weights['

in'])+biases['in'

] x_in = tf.reshape(x_in, [-1, n_steps, n_hidden_units])

#cell

lstm = tf.contrib.rnn.basiclstmcell(n_hidden_units, forget_bias=1.0, state_is_tuple=true)

init_state = lstm.zero_state(batch_size, dtype=tf.float32)

outputs, final_state = tf.nn.dynamic_rnn(lstm, x_in, initial_state=init_state, time_major=false)

#hidden layer for outputs and final results

results = tf.matmul(final_state[1],weights['

out']) + biases['

out']#

## outputs = tf.unstack(tf.transpose(outputs, [1,0,2]))

### results = tf.matmul(outputs[-1], weights['out']) + biases['out'] # shape = (128, 10)

#t_o = tf.convert_to_tensor(outputs,tf.float32) #128 28 128

#t_f = tf.convert_to_tensor(final_state,tf.float32) #2 128 128

#print(t_o[-1].get_shape().as_list(),t_f[0].get_shape().as_list(),t_f[1].get_shape().as_list())

return

results

pred =rnn(x, weights, biases)

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))

train_op =tf.train.adamoptimizer(lr).minimize(cost)

correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))

accuracy =tf.reduce_mean(tf.cast(correct_pred, tf.float32))

init =tf.global_variables_initializer()

with tf.session() as sess:

sess.run(init)

step =0

while step*batch_size

batch_xs, batch_ys =mnist.train.next_batch(batch_size)

batch_xs =batch_xs.reshape([batch_size, n_steps, n_inputs])

sess.run(train_op, feed_dict =)

if step%20 ==0:

print(sess.run(accuracy, feed_dict=))

step+=1

搭建自己的部落格(四) 優化首頁和詳情頁

1 優化首頁和詳情頁 en 釋出日期 分類 blog detail html en 暫無部落格,敬請期待 一共有 篇部落格 blog list html 2 新增通過標籤篩選文章 在templates下新建blog with type html檔案 en 暫無部落格,敬請期待 一共有 篇部落格 blog w...