Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用TensorFlow编写函数_Python_Python 3.x_Tensorflow - Fatal编程技术网

Python 使用TensorFlow编写函数

Python 使用TensorFlow编写函数,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,所以我对TensorFlow很陌生,所以我的问题可能有点愚蠢或明显。所以我使用函数在TensorFlow中编写了一个小而简单的代码。基本上,我读取1000个参数,并将其存储在一个numpy数组中,然后将其通过一个带有2个隐藏层的NN。这是我的密码: 将tensorflow导入为tf 将numpy作为np导入 随机输入 pc=open(“../data/pcNum.txt”,“r”) npc=open(“../data/npcNum.txt”,“r”) lines1=pc.readlines()

所以我对TensorFlow很陌生,所以我的问题可能有点愚蠢或明显。所以我使用函数在TensorFlow中编写了一个小而简单的代码。基本上,我读取1000个参数,并将其存储在一个numpy数组中,然后将其通过一个带有2个隐藏层的NN。这是我的密码:

将tensorflow导入为tf
将numpy作为np导入
随机输入
pc=open(“../data/pcNum.txt”,“r”)
npc=open(“../data/npcNum.txt”,“r”)
lines1=pc.readlines()
lines2=npc.readlines()
尺寸=200
学习率=0.01
纪元=200
trainDataset=np.array([])
labels=np.array([])
列车列表=[]
def阵列Y(顺序):
seq=np.数组([])
对于范围(0,len(序列))中的i:
seq=np.append(seq,int(序列[i]))
返回顺序
对于范围内的i(0,大小):
序列=lines1[i].strip()
列车列表追加((顺序,1))
序列=lines2[i].strip()
列车列表追加((序列,0))
随机。随机(列车列表)
对于列车列表中的i:
seq=arrayfy(i[0])
trainDataset=np.append(trainDataset,seq)
如果(i[1]==0):
label=np.array([0,1])
其他:
label=np.array([1,0])
labels=np.append(标签,标签)
trainDataset=trainDataset.重塑((2*大小,1000))
trainDataset=trainDataset.T
labels=np.transpose(labels.reformate(-1,2)))
dataset=np.asarray(trainDataset,np.float32)
labels=np.asarray(labels,np.float32)
dataset=tf.convert_to_tensor(dataset,tf.float32)
#labels=tf.convert_to_tensor(labels,tf.float32)
#TensorFlow代码的开始
l1_节点=100
l2_节点=100
out_节点=2
权重(l1=tf.get)变量(“权重(l1)”,数据类型=tf.float32,初始值设定项=tf.random\u normal((1000,l1节点),平均值=0.0,stddev=1.0))
权重(l2=tf.get_变量('weights_l2',dtype=tf.float32,initializer=tf.random_normal((l1_节点,l2_节点),mean=0.0,stddev=1.0))
weights\u out=tf.get\u变量('weights\u out',dtype=tf.float32,initializer=tf.random\u normal((l2\u节点,2),mean=0.0,stddev=1.0))
bias_l1=tf.get_变量('bias_l1',dtype=tf.float32,初始值设定项=tf.constant(0.0))
bias_l2=tf.get_变量('bias_l2',dtype=tf.float32,初始值设定项=tf.constant(0.0))
bias\u out=tf.get\u变量('bias\u out',dtype=tf.float32,初始值设定项=tf.constant(0.0))
“”“a1=tf.placeholder(dtype=tf.float32,name='a1')
a2=tf.placeholder(dtype=tf.float32,name='a2')
z_out=tf.placeholder(dtype=tf.float32,name='z_out')
假设=tf.placeholder(dtype=tf.float32,name=‘假设’)“”“
def正向传播(数据集、权重_l1、偏差_l1、权重_l2、偏差_l2、权重_out、偏差_out):
a1=tf.sigmoid(tf.tensordot(tf.transpose(weights_l1),数据集,轴=1)+偏差_l1)
a2=tf.sigmoid(tf.tensordot(tf.transpose(weights_l2),a1,axes=1)+bias_l2)
z_out=tf.tensordot(tf.transpose(weights_out),a2,axes=1)+bias_out
返回z_out
熵=tf.nn.softmax_交叉熵_与_logits_v2(logits=z\u out,labels=labels,name='cross\u entropy'))
损失=tf.减少平均值(熵,名称=‘损失’)
优化器=tf.train.AdamOptimizer(学习率)。最小化(损失)
假设=tf.nn.softmax(z_out)
正确的_preds=tf.equal(tf.argmax(假设,0),tf.argmax(标签,0))
准确度=tf.减少总和(tf.cast(正确的preds,tf.float32))
writer=tf.summary.FileWriter('./graphs/logreg',tf.get\u default\u graph())
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
对于范围内的i(0,历元):
z_out=sess.run(正向传播(数据集、权重_l1、偏差_l1、权重_l2、偏差_l2、权重_out、偏差_out))
_,l=sess.run([optimizer,loss])#,feed_dict={z_out:z_out,labels:labels})
sess.run(假设)
sess.run(正确的preds)
acc=系统运行(精度)
打印(“历元:,i+1,”,损耗:,l,”,精度:,acc)

writer.close()
在初始化变量之前,尝试使用
z_out
作为参数,将调用熵计算。在第一个代码中,下面一行为
z_out
赋值,但您已经注释掉了代码

z_out = tf.placeholder(dtype = tf.float32, name = 'z_out')
接下来,您将使用函数
forwardPropagation
,该函数返回
z_out
的值,但直到代码的最后,您才调用
forwardPropagation
函数。然后在下一行中,您尝试使用尚未初始化的
z_out
变量计算
熵,这就是为什么会出现错误


第二组代码之所以有效,是因为在计算
熵之前,您正在执行
z_out
计算。要使第一组代码正常工作,您必须在计算
熵之前调用
forwardPropagation
来定义
z_out

谢谢…我有一个问题..如果我没有注释掉它,它会工作吗?显然,它是说没有提供梯度…即使我在运行optimizer?之前调用函数,在您的如果您在计算
熵之前调用
forwardPropagation()
,则代码的第一部分应该与第二组代码相同。嗯……我算出了,但显然我的输出标签都是0,但仍然显示出很高的准确性