这可能对你的课程来说有点晚了,但希望它能帮到某些人。
如果你的目标只是输出一个len(input)xlen(input)
数组,你可以将一个1xlen(input)
张量与扩展其维度为len(input)x1
的输入数组进行矩阵乘法:
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)
return tf.matmul(x,tfvar)
这个函数应该适用于任何一维的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})
请注意,如果您想要一个更强大的培训课程,请添加偏置、非线性和更多层。