这对你的课程来说可能有点晚了,但希望它会对某人有所帮助。
如果您的目标是简单地输出一个len(input)xlen(input) 数组,您可以在将其维度扩展到len(input)x1 后,将一个1xlen(input) 张量与您的输入数组矩阵相乘:
input_ = tf.placeholder(tf.float32, [len(input)])
input_shape = input_.get_shape().as_list()
tfvar = tf.Variable(tf.random_normal([1,input_shape[0]], mean=0.0,
stddev=.01, dtype=tf.float32))
def function(input_):
x = tf.expand_dims(input_, axis=1) # dims = len(input)x1
return tf.matmul(x,tfvar) # mtrx multiplication produces 3x3 mtrx
这个函数应该泛化到任何一维input_张量并产生一个正方形len(input_)xlen(input_)张量。
如果您的目标是训练 tensorflow 变量以准确生成所提供的输出,那么您可以使用损失函数和优化器训练 tfvar:
desired_output = tf.constant([[0.09003057, 0.24472847, 0.66524096],
[0.26894142, 0.73105858, 0.0 ],
[1.0, 0.0, 0.0 ]],
dtype=tf.float32)
actual_output = function(input_)
loss = tf.reduce_mean(tf.square(actual_output-desired_output))
optimizer = tf.train.AdamOptimizer().minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
cost, opt = sess.run([loss, optimizer], feed_dict={input_:input})
请注意,如果您想要更稳健的训练课程,请添加偏差、非线性和更多层。