嘿,我是这个社区的新人。我开始使用tensorflow编程,我尝试从前馈神经网络计算预测y
的Hesse矩阵和权重矩阵w
。我的问题是由于渐变功能,我无法对权重矩阵进行整形。我总是这样:
TypeError:Fetch参数None具有无效类型。
如果没有整形,我无法计算y
,w
的Hesse矩阵。
有人知道如何解决这个问题。
def neural_network_model(data,layer,nodes,dim,nclasses):
hidden_layer = []
for i in range(layer):
if(i == 0):
hidden_layer.append({'weights':tf.Variable(tf.random_normal([dim, nodes[i]])),
'biases':tf.Variable(tf.random_normal([nodes[i]]))})
else:
hidden_layer.append({'weights':tf.Variable(tf.random_normal([nodes[i-1], nodes[i]])),
'biases':tf.Variable(tf.random_normal([nodes[i]]))})
output_layer = {'weights':tf.Variable(tf.random_normal([nodes[layer-1], nclasses])),
'biases':tf.Variable(tf.random_normal([nclasses])),}
l = []
for i in range(layer):
if(i == 0):
l.append(tf.add(tf.matmul(data,hidden_layer[i]['weights']), hidden_layer[i]['biases']))
l[i] = tf.nn.relu(l[i],'sigmoid')
else:
l.append(tf.add(tf.matmul(l[i-1],hidden_layer[i]['weights']), hidden_layer[i]['biases']))
l[i] = tf.nn.relu(l[i],'sigmoid')
output = tf.matmul(l[layer-1],output_layer['weights']) + output_layer['biases']
weights = []
for i in range(layer):
weights.append(tf.reshape(hidden_layer[i]['weights'],[-1]))
weights.append(tf.reshape(output_layer['weights'],[-1]))
def train_neural_network(data,layer,nodes,dim,nclasses,n,n2):
gr = []
prediction,weights2= neural_network_model(data,layer,nodes,dim,nclasses)
cost = tf.square(prediction-y)
optimizer = tf.train.AdamOptimizer().minimize(cost)
gradient = tf.gradients(prediction,weights2)
hes = tf.hessians(prediction,weights2[0])
train = func(n,n2)
hm_epochs = 10