Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 Keras不合理地比TensorFlow慢_Python_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python Keras不合理地比TensorFlow慢

Python Keras不合理地比TensorFlow慢,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我正在尝试实现的神经网络,但使用的是Keras 您将在文章的底部找到这两种实现的代码 我的问题是,TensorFlow的代码大约需要1m30分钟,Keras的代码需要18分钟 我的问题是: 我在将TensorFlow代码翻译成Keras代码时犯了新手错误吗 还是凯拉斯的速度太慢了?如果是的话,可以修复吗 Tensorflow代码: 来自tensorflow.examples.tutorials.mnist导入输入数据 mnist=输入数据。读取数据集('mnist\U数据',one\U h

我正在尝试实现的神经网络,但使用的是Keras

您将在文章的底部找到这两种实现的代码

我的问题是,TensorFlow的代码大约需要1m30分钟,Keras的代码需要18分钟

我的问题是:

  • 我在将TensorFlow代码翻译成Keras代码时犯了新手错误吗
  • 还是凯拉斯的速度太慢了?如果是的话,可以修复吗

Tensorflow代码:

来自tensorflow.examples.tutorials.mnist导入输入数据
mnist=输入数据。读取数据集('mnist\U数据',one\U hot=真)
导入tensorflow作为tf
def重量_变量(形状):
初始值=tf.截断的_法线(形状,标准差=0.1)
返回tf.变量(初始值)
def偏差_变量(形状):
初始=tf.常数(0.1,形状=形状)
返回tf.变量(初始值)
def conv2d(x,W):
返回tf.nn.conv2d(x,W,步长=[1,1,1,1],padding='SAME')
def max_pool_2x2(x):
返回tf.nn.max_pool(x,ksize=[1,2,2,1],
步幅=[1,2,2,1],填充='SAME')
x=tf.placeholder(tf.float32,[None,784])
x_image=tf.重塑(x,[-1,28,28,1])
y=tf.占位符(tf.float32,[None,10])
神经元\u nb\u层\u 1=32
神经元\u nb\u层\u 2=64
神经元\u nb\u层\u 3=1024
W_conv1=权重_变量([5,5,1,神经元\u nb\u层\u 1])
b_conv1=偏差变量([神经元\u nb\u层\u 1])
h_conv1=tf.nn.relu(conv2d(x_图像,W_conv1)+b_conv1)
h_池1=最大池2(h_池1)
W_conv2=权重_变量([5,5,神经元_nb_层_1,神经元_nb_层_2])
b_conv2=偏差变量([神经元\u nb\u层\u 2])
h_conv2=tf.nn.relu(conv2d(h_pool1,W_conv2)+b_conv2)
h_池2=最大池2×2(h_池2)
W_fc1=权重变量([7*7*神经元\u nb\u层\u 2,神经元\u nb\u层\u 3])
b_fc1=偏差变量([神经元\u nb\u层\u 3])
h_pool2_flat=tf.重塑(h_pool2,[-1,7*7*神经元\u nb\u层\u 2])
h_fc1=tf.nn.relu(tf.matmul(h_pool2_flat,W_fc1)+b_fc1)
keep_prob=tf.placeholder(tf.float32)
h_fc1_drop=tf.nn.drop(h_fc1,keep_prob)
W_fc2=权重变量([neurons_nb_layer_3,10])
b_fc2=偏差_变量([10])
y_conv=tf.matmul(h_fc1_drop,W_fc2)+b_fc2
交叉熵=tf.reduce\u平均值(
tf.nn.softmax_cross_entropy_与_logits(labels=y,logits=y\u conv))
列车步长=tf.列车AdamOptimizer(1e-4).最小化(交叉熵)
正确的预测=tf.equal(tf.argmax(y_conv,1),tf.argmax(y_,1))
准确度=tf.reduce_平均值(tf.cast(正确的预测,tf.float32))
导入日期时间
start=datetime.datetime.now()
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
对于范围(600)内的i:
批次=列表列下一批(50)
如果i%100==0:
列精度=精度。评估(进给量)={
x:batch[0],y:batch[1],keep_prob:1.0})
打印('步骤%d,训练精度%g'(i,训练精度))
train_step.run(feed_dict={x:batch[0],y_:batch[1],keep_prob:0.5})
打印('测试精度%g''精度.评估(进纸指令={
x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})
end=datetime.datetime.now()
时间=(结束-开始)。秒
打印(时间//60,“分钟”,时间%60,“秒”)

Keras代码:

来自tensorflow.examples.tutorials.mnist导入输入数据
mnist=输入数据。读取数据集('mnist\U数据',one\U hot=真)
进口干酪
从keras.models导入顺序
模型=顺序()
偏差\初始值设定项=keras.初始值设定项.常数(值=0.1)
神经元\u nb\u层\u 1=32
神经元\u nb\u层\u 2=64
神经元\u nb\u层\u 3=1024
从keras.layers导入重塑、Conv2D、MaxPoolig2D、衰减、展平、密集
添加(重塑((28,28,1),输入_形状=(784,))
添加(Conv2D(过滤器=神经元\u nb\u层\u 1,内核大小=5*5,填充='same',activation=“relu”,bias\u初始值设定项=bias\u初始值设定项))
model.add(MaxPooling2D(padding='same'))
添加(Conv2D(过滤器=神经元\u nb\u层\u 2,内核大小=5*5,填充='same',activation=“relu”,bias\u初始值设定项=bias\u初始值设定项))
model.add(MaxPooling2D(padding='same'))
添加模型(重塑((1,7*7*neurons\u nb\u layer\u 2)))
添加(密集(单位=神经元\u nb\u层\u 3,激活=“relu”,偏差\u初始值设定项=偏差\u初始值设定项))
模型添加(辍学率=0.5))
model.add(展平())
添加(密集(单位=10,激活=“relu”))
model.summary()
model.compile(loss=keras.loss.categorical_交叉熵,
优化器='adam',
指标=['准确度']
)
导入日期时间
start2=datetime.datetime.now()
对于范围(600)内的i:
批次=列表列下一批(50)
如果i%100==0:
列车精度=模型评估(批次[0],批次[1])
打印(“步骤”,i,:”,序列号精度)
型号.批次上的序列号(批次[0],批次[1])
end2=datetime.datetime.now()
time2=(end2-start2)。秒
打印(时间2//60,“分钟”,时间2%60,“秒”)
根据
内核\u size=5*5
是一个
25x25
卷积内核,而不是像您的tensorflow示例那样的
5x5

您可能想使用
kernel\u size=(5,5)
kernel\u size=5

可能不相关,但您应该将最后一个Keras层中的激活更改为
softmax
。此外,为了进行比较,Keras own可能有用您的装备是什么?CPU/GPU,内存可用吗?您是否在同一个python执行中按顺序运行这两个代码?确实,这可能是问题所在!当我在家里用电脑时,我会试试,并会让你知道的。谢谢