我有一个简单的前馈神经网络,代表一些输入和输出数据。我提取了权重和偏见。
现在,我想对保存的网络进行优化(作为一项功能),并找到将提供所需输出的输入。我的目标函数是所需输出与网络输出之间的差异。无论我尝试什么,都会遇到错误。我更改了初始猜测X0的类型,但没有任何效果。 我的代码如下设置-
with tf.Session() as sess:
# Extract data from Network
new_saver = tf.train.import_meta_graph('./Save_Network/my_model.meta')
new_saver.restore(sess, tf.train.latest_checkpoint('./Save_Network'))
weights_1 = tf.get_default_graph().get_tensor_by_name("weights_1:0")
biases_1 = tf.get_default_graph().get_tensor_by_name("biases_1:0")
weights_2 = tf.get_default_graph().get_tensor_by_name("weights_2:0")
biases_2 = tf.get_default_graph().get_tensor_by_name("biases_2:0")
weights_3 = tf.get_default_graph().get_tensor_by_name("weights_3:0")
biases_3 = tf.get_default_graph().get_tensor_by_name("biases_3:0")
def Objective1(c):
layer_1 = tf.nn.relu(tf.add(tf.matmul(c, weights_1), biases_1))
layer_2 = tf.nn.relu(tf.add(tf.matmul(layer_1, weights_2), biases_2))
out_layer = tf.add(tf.matmul(layer_2, weights_3), biases_3)
ObjFunc1 = tf.square(tf.subtract(OutputsNorm, out_layer))
return ObjFunc1
x0 = np.float32([-0.2, 0.02, -0.5])
x0 = np.reshape(x0, (1, 3))
res = minimize(Objective1, x0, method='nelder-mead', options={'xtol': 1e-8, 'disp': True})
我遇到错误
TypeError: Input 'b' of 'MatMul' Op has type float32_ref that does not match type float64 of argument 'a'.