【问题标题】:Keras vs. TensorFlow code comparison sourcesKeras vs. TensorFlow 代码对比源码
【发布时间】:2019-07-30 23:32:06
【问题描述】:

这实际上不是一个特定于代码的问题,但我无法找到任何答案或资源。

我目前正在尝试自学一些“纯”TensorFlow,而不仅仅是使用 Keras,而且我觉得如果有一些来源包含 TensorFlow 代码和等效的 Keras 代码,那将非常有帮助-比较的一面。

不幸的是,我在互联网上找到的大多数结果都在谈论性能方面的差异或有非常简单的比较示例(例如“这就是 Keras 更易于使用的原因”)。我对这些细节的兴趣不如对代码本身的兴趣。

有人知道是否有任何资源可以帮助解决这个问题吗?

【问题讨论】:

  • Keras API 比原来的 TensorFlow API 更好,这就是为什么在 TensorFlow 2.0 中,他们使用 Keras API。所以继续学习 Keras 并在 TensorFlow 中使用它。欲了解更多信息,请参阅:medium.com/tensorflow/…

标签: tensorflow keras


【解决方案1】:

这里有两个模型,TensorflowKeras,它们是对应的:

import tensorflow as tf
import numpy as np
import pandas as pd
from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

张量流

X = tf.placeholder(dtype=tf.float64)
Y = tf.placeholder(dtype=tf.float64)
num_hidden=128

# Build a hidden layer
W_hidden = tf.Variable(np.random.randn(784, num_hidden))
b_hidden = tf.Variable(np.random.randn(num_hidden))
p_hidden = tf.nn.sigmoid( tf.add(tf.matmul(X, W_hidden), b_hidden) )

# Build another hidden layer
W_hidden2 = tf.Variable(np.random.randn(num_hidden, num_hidden))
b_hidden2 = tf.Variable(np.random.randn(num_hidden))
p_hidden2 = tf.nn.sigmoid( tf.add(tf.matmul(p_hidden, W_hidden2), b_hidden2) )

# Build the output layer
W_output = tf.Variable(np.random.randn(num_hidden, 10))
b_output = tf.Variable(np.random.randn(10))
p_output = tf.nn.softmax( tf.add(tf.matmul(p_hidden2, W_output), b_output) )

loss = tf.reduce_mean(tf.losses.mean_squared_error(
        labels=Y,predictions=p_output))
accuracy=1-tf.sqrt(loss)
minimization_op = tf.train.AdamOptimizer(learning_rate=0.01).minimize(loss)

feed_dict = {
    X: x_train.reshape(-1,784),
    Y: pd.get_dummies(y_train)
}
with tf.Session() as session:
    session.run(tf.global_variables_initializer())

    for step in range(10000):
        J_value = session.run(loss, feed_dict)
        acc = session.run(accuracy, feed_dict)
        if step % 100 == 0:
            print("Step:", step, " Loss:", J_value," Accuracy:", acc)

            session.run(minimization_op, feed_dict)
    pred00 = session.run([p_output], feed_dict={X: x_test.reshape(-1,784)})

Keras

import tensorflow as tf
from tensorflow.keras.layers import Input, Dense
from keras.models import Model

l = tf.keras.layers

model = tf.keras.Sequential([
    l.Flatten(input_shape=(784,)),
    l.Dense(128, activation='relu'),
    l.Dense(128, activation='relu'),
    l.Dense(10, activation='softmax')
])

model.compile(loss='categorical_crossentropy', optimizer='adam',metrics = ['accuracy'])

model.summary()

model.fit(x_train.reshape(-1,784),pd.get_dummies(y_train),nb_epoch=15,batch_size=128,verbose=1)

【讨论】:

    【解决方案2】:

    你可以看一下this toy example,但它可能太简单了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2017-01-10
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多