Предполагая, что у меня очень простая нейронная сеть, такая как многослойный персептрон. Для каждого уровня функция активации является сигмоидной, и сеть полностью подключена.
В TensorFlow это может быть определено следующим образом:
sess = tf.InteractiveSession()
# Training Tensor
x = tf.placeholder(tf.float32, shape = [None, n_fft])
# Label Tensor
y_ = tf.placeholder(tf.float32, shape = [None, n_fft])
# Declaring variable buffer for weights W and bias b
# Layer structure [n_fft, n_fft, n_fft, n_fft]
# Input -> Layer 1
struct_w = [n_fft, n_fft]
struct_b = [n_fft]
W1 = weight_variable(struct_w, 'W1')
b1 = bias_variable(struct_b, 'b1')
h1 = tf.nn.sigmoid(tf.matmul(x, W1) + b1)
# Layer1 -> Layer 2
W2 = weight_variable(struct_w, 'W2')
b2 = bias_variable(struct_b, 'b2')
h2 = tf.nn.sigmoid(tf.matmul(h1, W2) + b2)
# Layer2 -> output
W3 = weight_variable(struct_w, 'W3')
b3 = bias_variable(struct_b, 'b3')
y = tf.nn.sigmoid(tf.matmul(h2, W3) + b3)
# Calculating difference between label and output using mean square error
mse = tf.reduce_mean(tf.square(y - y_))
# Train the Model
# Gradient Descent
train_step = tf.train.GradientDescentOptimizer(0.3).minimize(mse)
Цель проекта для этой модели состоит в том, чтобы отобразить a n_fft
points fft spectrogram на другую целевую спектрограмму n_fft
. Предположим, что данные обучения и целевые данные имеют размер [3000, n_fft]
. Они сохраняются в переменных spec_train
и spec_target
.
Теперь вот вопрос. Для TensorFlow существует ли разница между этими двумя тренировками?
Обучение 1:
for i in xrange(200):
train_step.run(feed_dict = {x: spec_train, y_: spec_target})
Обучение 2:
for i in xrange(200):
for j in xrange(3000):
train = spec_train[j, :].reshape(1, n_fft)
label = spec_target[j, :].reshape(1, n_fft)
train_step.run(feed_dict = {x: train, y_: label})
Большое спасибо!