lilililizhan 2019-05-09 00:15 采纳率: 0%
浏览 2805
已结题

tensorflow中相同的代码,运行多次每次的结果都不相同?

本人渣渣一枚,最近在tensorflow中遇到以下问题:
先上一下代码,
图片说明

图片1,加载文件中的参数,并将其值赋给常量(避免后期值被改变,渣渣只会这种操作,哭)
图片说明

图片2,加载训练数据集

图片说明

图片3,也就是有问题的地方。
具体问题如下:当我执行完图片3的代码后,再执行一次,结果就和第一次不一样,必须要在执行图片3之前再执行一次图片1才能使结果一致,见下图:
图片说明

图片说明
求指导,感谢!!!!!

附上全部代码:

coding: utf-8

In[1]:

import tensorflow as tf
import matplotlib.pyplot as plt

In[2]:

import Ipynb_importer

In[3]:

from core3 import *

In[5]:

with tf.Session() as sess:
ww,bb=load_weights('e:/python/savedata/','keep4',3)
w00=ww[0]
w01=ww[1]
w02=ww[2]
w03=ww[3]

b00=bb[0]
b01=bb[1]
b02=bb[2]
b03=bb[3]
sess.run(tf.global_variables_initializer())
w10=w00.eval()
w11=w01.eval()
w12=w02.eval()
w13=w03.eval()
b10=b00.eval()
b11=b01.eval()
b12=b02.eval()
b13=b03.eval()

w0=tf.constant(w10)
w1=tf.constant(w11)
w2=tf.constant(w12)
w3=tf.constant(w13)
b0=tf.constant(b10)
b1=tf.constant(b11)
b2=tf.constant(b12)
b3=tf.constant(b13)

In[8]:

X_train, y_train, X_test, y_test, train_x_mean, train_x_std,train_y_mean0,train_y_std=get_data('e:/Python/jupyter/fuxian/data/2_layer_tio2',percentTest=.2,random_state=42)
print(y_train)
print(X_train)

In[ ]:

with tf.Session() as sess:

x0=tf.convert_to_tensor(X_train)
x1=tf.cast(x0,tf.float32)
a1 = tf.sigmoid(tf.add(tf.matmul(x1, w0),b0))
b1 = tf.sigmoid(tf.add(tf.matmul(a1, w1),b1))
c1 = tf.sigmoid(tf.add(tf.matmul(b1, w2),b2))
y1p = tf.add(tf.matmul(c1, w3),b3)
y1=y1p.eval()
m=tf.reduce_mean(np.abs((y1-y_train)/y_train))*100
print(sess.run(m))

补充:

图片说明

之后又尝试通过上图的代码一步一步找问题,在第一次执行和第二次执行的结果中,a1的值相同,b1的值不相同,但w0,w1的值是相同的,这又是为什么?求指导!!感谢!!

  • 写回答

2条回答

  • threenewbee 2019-05-09 09:04
    关注

    global_variables_initializer() 这个会将权重设置成随机值,你后面又没有再训练,所以结果就是随机的了。

    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试