Я могу найти и изучить множество примеров для обучения по тензорному потоку, используя 1 или 2-мерный ввод и вывод. Но я понятия не имею, как обращаться с 3-мерными наборами данных ввода и вывода, и не могу найти подходящий пример или объяснение для этого.
Я не могу справиться с формой заполнителей, весом и уклоном. Все мои попытки получили ошибки, касающиеся несоответствия ранга или ошибки размера при выполнении 'matmul' в tenorflow.
import tensorflow as tf
import numpy as np
from tqdm import tqdm_notebook
import matplotlib.pyplot as plt
# Input data: 2 rows by 3 columns by 10 depths
# Output data: 1 row by 2 columns by 10 depths
Input =
[[[ 1.104, 0.359, -0.652], [1.421, 0.309, 1.612]],
[[1.421, 0.309, 1.612], [ 1.572, 0.672, -0.194]],
[[ 1.572, 0.672, -0.194], [ 1.651, 0.516, -0.935]],
[[ 1.651, 0.516, -0.935], [1.171, 0.368, 0.246]],
[[1.171, 0.368, 0.246], [ 1.301, 0.458, -0.29 ]],
[[ 1.301, 0.458, -0.29 ], [ 1.256, 0.109, -0.96 ]],
[[ 1.256, 0.109, -0.96 ], [ 1.632, 0.086, -0.129]],
[[ 1.632, 0.086, -0.129], [1.761, 0.22 , 1.34 ]],
[[1.761, 0.22 , 1.34 ], [ 1.464, 0.64 , -0.593]],
[[ 1.464, 0.64 , -0.593], [1.374, 0.501, 0.463]]]
Output =
[[[-0.652, 1.866]],
[[1.612, 2.003]],
[[-0.194, 2.179]],
[[-0.935, 2.321]],
[[0.246, 2.298]],
[[-0.29 , 2.168]],
[[-0.96, 2.08]],
[[-0.129, 2.503]],
[[1.34 , 2.531]],
[[-0.593, 3.017]]]
x_data = Input
y_data = Output
X = tf.placeholder(tf.float32, shape=([???]), name='x-input')
Y = tf.placeholder(tf.float32, shape=([???]), name='y-input')
with tf.name_scope("layer1") as scope:
W1 = tf.Variable(tf.random_normal([???]), name='weight1')
b1 = tf.Variable(tf.random_normal([???]), name='bias1')
hypothesis = tf.nn.relu(tf.matmul(X, W1) + b1)
cost = tf.reduce_mean(tf.squared_difference(hypothesis, Y))
train = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(cost)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for step in tqdm_notebook(range(1000)):
sess.run(train, feed_dict={X: x_data, Y: y_data})
cost_history.append(sess.run(cost, feed_dict={X: x_data, Y: y_data}))
plt.figure(figsize=[12,6])
plt.plot(cost_history)
Пожалуйста, дайте мне несколько советов по этой проблеме.