Как заменить входные данные на матрицу, содержащую данные обучения - PullRequest
1 голос
/ 11 ноября 2019

У меня есть глубокая нейронная сеть, где она выполняет обучение следующим образом:

# Training and testing phases
with tf.Session() as sess:
    # Training
    sess.run(init)
    for epoch in range(1001):
        avg_cost = 0.
        for index_m in range(20):
            input_samples = []
            input_labels = []
            for index_k in range(0, 1000):
                bits = np.random.binomial(n=1, p=0.5, size=(10,))
                input_data = input_funct(bits, SNR)
                input_labels.append(input_data)
                input_samples.append(input)

            batch_x = np.asarray(input_samples)
            batch_y = np.asarray(input_labels)

            _, cs = sess.run([optimizer, cost], feed_dict={X: batch_x,
                                                           Y: batch_y,
                                                           learning_rate: l_rate})

Мой вопрос об этих сгенерированных данных input_data = input_funct(bits, SNR),: сколько раз они будут сгенерированы? как я вижу, он будет сгенерирован после трех for loops как: 1001 * 20 * 1000 = 20000000 раз, верно? при условии размера столбцов = 10;Теперь, если у меня есть данные в виде матрицы того же размера, которые уже сгенерированы и импортированы как файл размером (20000000,10), мне нужно поместить их вместо input_data и разместить их столбец за столбцом для обработки обучения. Как мне это сделать? Конечно, команда bits = np.random.binomial(n=1, p=0.5, size=(10,)) будет импортирована аналогичным образом, а не сгенерирована здесь случайным образом.

Обычно я предполагаю добавить новый for loop для всех столбцов, но я не знаю, где и как, так как я новичок в программировании на Python.

спасибо

РЕДАКТИРОВАТЬ:

Как насчет этого пути, где я добавил еще один цикл общего размера, а затем добавил другие циклы внутри него.

# Training and testing phases
#label is the imported matrix of size(10 x 20000000)
#data is the imported matrix of size(10 x 20000000)
with tf.Session() as sess:
    # Training
sess.run(init)
for j in range(1001*20*1000)
    for epoch in range(1001):
        avg_cost = 0.
        for index_m in range(20):
            input_samples = []
            input_labels = []
            for index_k in range(0, 1000):
                bits = label(:,j)
                input_data = data(:,j)
                input_labels.append(input_data)
                input_samples.append(input)

            batch_x = np.asarray(input_samples)
            batch_y = np.asarray(input_labels)

            _, cs = sess.run([optimizer, cost], feed_dict={X: batch_x,
                                                           Y: batch_y,
                                                           learning_rate: l_rate})

1 Ответ

1 голос
/ 11 ноября 2019
TWENTY_MILLION_TIMES_TEN_ARRAY = open('hi.txt','r').read()
np.reshape(TWENTY_MILLION_TIMES_TEN_ARRAY,(1001,20,1000))
# Training and testing phases
j = 0 # example
with tf.Session() as sess:
    # Training
    sess.run(init)
    for epoch in list(TWENTY_MILLION_TIMES_TEN_ARRAY):
        avg_cost = 0.
        for index_m in list(epoch):
            input_samples = []
            input_labels = []
            for index_k in list(index_m):
                '''whatever you do with that data and label'''
                # input[j] blah blah....
                j += 1

            batch_x = np.asarray(input_samples)
            batch_y = np.asarray(input_labels)

            _, cs = sess.run([optimizer, cost], feed_dict={X: batch_x,
                                                           Y: batch_y,
                                                           learning_rate: l_rate})

это то, что я бы сделал, изменил массив и просто передал его.

вы также можете сгенерировать данные в формате, чтобы вам даже не пришлось менять формуэто.

надеюсь, это поможет:)

...