Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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_Tensorflow_Dropout - Fatal编程技术网

Python 如何用tensorflow实现辍学

Python 如何用tensorflow实现辍学,python,tensorflow,dropout,Python,Tensorflow,Dropout,我在tensorflow 3-knn实现中应用了辍学。 但是由于占位符的变量keep_prob,我得到了一个错误 TypeError:无法将feed_dict键解释为张量:无法将int转换为张量 我编写了两个函数:前向传播(实现前向传播)和模型(训练模型上的参数)。以下是两个功能的简短实现: 为了训练模型,我如何影响keep_prob值从“model”函数到“forward_propagation”函数 def正向传播(X,参数,保持概率): #从字典“参数”中检索参数 W1=参数['W1']

我在tensorflow 3-knn实现中应用了辍学。 但是由于占位符的变量keep_prob,我得到了一个错误

TypeError:无法将feed_dict键解释为张量:无法将int转换为张量

我编写了两个函数:前向传播(实现前向传播)和模型(训练模型上的参数)。以下是两个功能的简短实现:

为了训练模型,我如何影响keep_prob值从“model”函数到“forward_propagation”函数


def正向传播(X,参数,保持概率):
#从字典“参数”中检索参数
W1=参数['W1']
b1=参数['b1']
W2=参数['W2']
b2=参数['b2']
W3=参数['W3']
b3=参数['b3']
#keep_prob=tf.placeholder(dtype=tf.float64)
###保持下降
Z1=tf.add(tf.matmul(W1,X),b1)#Z1=np.dot(W1,X)+b1
A1=tf.nn.relu(Z1)#A1=relu(Z1)
A1=tf.nn.辍学(A1,保持概率)
Z2=tf.add(tf.matmul(W2,A1),b2)#Z2=np.dot(W2,A1)+b2
A2=tf.nn.relu(Z2)#A2=relu(Z2)
A2=tf.nn.辍学(A2,保持概率)
Z3=tf.add(tf.matmul(W3,A2),b3)#Z3=np.dot(W3,A2)+b3
###保持下降
返回Z3
def模型(X_序列、Y_序列、X_测试、Y_测试、学习率=0.0001、次数=1500、小批量大小=32、保持概率=1、种子=0):
ops.reset_default_graph()
tf.设置随机种子(种子)
种子
(n_x,m)=x_列车形状
n_y=y_列。形状[0]\n_y:输出大小
成本=[]以跟踪成本
#创建形状的占位符(n_x,n_y)
###开始代码在这里####(1行)
十、 Y=创建\u占位符(n\u X,n\u Y)
keep_prob=tf.constant(keep_prob,dtype=tf.float32,name=“keep_prob”)
###结束代码在这里###
#初始化参数
参数=初始化_参数()
#正向传播:在tensorflow图中构建正向传播
Z3=正向传播(X,参数,保持概率)
#成本=损失函数:将成本函数添加到tensorflow图
成本=计算成本(Z3=Z3,Y=Y)
#反向传播:定义tensorflow优化器。使用AdamOptimizer。
优化器=tf.train.GradientDescentOptimizer(学习率=学习率)。最小化(成本)
#初始化所有变量
init=tf.global_variables_initializer()
#启动会话以计算tensorflow图
使用tf.Session()作为sess:
#运行初始化
sess.run(初始化)
#进行训练循环
对于范围内的历元(num_历元):
时代成本=0定义与历元相关的成本
num_minibacks=int(m/miniback_size)#列车组中miniback_size的minibacks数量
种子=种子+1
小批量=fct\U utils.随机小批量(X\U系列、Y\U系列、,
小批量(种子大小)
对于小批量中的小批量:
#选择一个小批量
(小批量X,小批量Y)=小批量
#重要提示:在小批量上运行图形的线。
#运行会话以执行“优化器”和“成本”,feedict应包含(X,Y)的小批量。
_,minibatch_cost=sess.run([optimizer,cost],
feed_dict={Y:minibatch_Y,
X:小批量,
keep_prob:keep_prob})
历元成本+=小批量成本/num小批量
#打印每个时代的成本
如果打印成本==真且历元%100==0:
打印(“历元%i之后的成本:%f”%(历元,历元成本))
如果打印成本==真,且纪元%5==0:
成本。追加(历元成本)
#让我们将参数保存在变量中
参数=sess.run(参数)
打印(“参数已培训!”)

应交换
keep_prob
keep_prob
的位置。在代码中,
keep\u prob
是一个int类型,
keep\u prob\u
是一个张量,应该是
feed\u dict
中的键

feed_dict={Y:minibatch_Y,X:minibatch_,keep_prob_:keep_prob}