社长为你推荐来自 AI 研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。
话不多说,直接上题
@lke 说:
你好,我运行了这段代码,我想得到的是一个三维矩阵,可是输出的结果却是矩阵里面还包含了一个数组。我的思路是将t1与t2连接起来,然后循环赋值给input数组,请问有什么问题吗?
输出结果:
input [[array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6])], [array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6])], [array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6])], [array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6])], [array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6]), array([1, 2, 3, 4, 5, 6])]]
代码:import tensorflow as tf
import numpy as np
from numpy import *
with tf.Session() as sess:
input = [[[0]*6]*5]*5
#input = list()
for i in range(5):
for j in range(5):
t1 = [1,2,3]
t2 = [4,5,6]
test = tf.concat([t1,t2],0)
print("test",sess.run(test))
input[i][j]=test
input[i][j] = input[i][j]
#input = input.append(test)
print(sess.run(input[i][j]))
print("input",sess.run(input))
# input = np.array(input)
# print("input",sess.run(input))
print(np.shape(input))
来自社友的回答
▼▼▼
@吴楚人生苦短,快用pytorch
@行者小林
这里面存在几个问题,你的目的是要使用特定的数字填充矩阵,你想使用tensoflow进行练习,但是练习过程中
1、你使用了很多种数据类型,一开始input为列表, 而后使用张量为列表子元素赋值,列表将子元素视为张量。
2、对于这种纯粹的矩阵赋值运算使用numpy即可input = [[[0]*6]*5]*5
for i in range(5):
for j in range(5):
t1 = [1,2,3]
t2 = [4,5,6]
test = np.concatenate((t1,t2),0)
# print("test",test)
input[i][j]=test
np.shape(input)
3、tensorflow支持矩阵运算,但张量不支持直接赋值,计算图的搭建通常是在会话(session)之前搭建好,你这里计算图其实是在会话里面进行搭建的