Tensorflow 和 Keras 之间 Adam 的不同学习曲线

2024-02-25

我目前正在将代码从 Keras 更改为 Tensorflow,以便使用 Tensorflow 1.10.0 中量化训练的新功能。然而,我发现使用 Adam 优化器时,Keras 和 Tensorflow 中的训练过程显示出非常大的差异。

下面是练习使用的代码,其目的相同,以 Tensorflow 和 Keras 方式训练“sin(10x)”函数。

from keras.layers import Input, Dense, BatchNormalization
from keras.models import Model
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import keras.backend as K

KERAS = 'keras'
TENSORFLOW = 'tensorflow'


def create_model():
    ipt = Input([1])
    m = Dense(1000, activation='relu')(ipt)
    m = BatchNormalization()(m)
    m = Dense(1000, activation='relu')(m)
    m = BatchNormalization()(m)
    m = Dense(1)(m)
    return Model(ipt, m)


valX = np.expand_dims(np.linspace(-1, 1, 10000), 1)
valY = np.sin(valX * 10)
valY_ = {}

for phase in (KERAS, TENSORFLOW):
    sess = tf.Session()
    sess.as_default()
    K.set_session(sess)

    model = create_model()

    if phase is KERAS:
        model.compile('adam', 'mean_squared_error')
    else:
        tensor_y_gt = tf.placeholder(dtype=tf.float32, shape=model.output.get_shape().as_list())
        mse = tf.losses.mean_squared_error(model.output, tensor_y_gt)
        training_steps = tf.train.AdamOptimizer().minimize(mse)
        sess.run(tf.global_variables_initializer())

    for step in range(2000):
        X = np.random.uniform(-1, 1, [256, 1])
        Y = np.sin(X * 10)

        if phase is KERAS:
            loss = model.train_on_batch(X, Y)
        else:
            loss, _ = sess.run([mse, training_steps], feed_dict={model.input: X, tensor_y_gt: Y})

        if step % 100 == 0:
            print('%s, step#%d, loss=%.5f' % (phase, step, loss))

    valY_[phase] = model.predict(valX)[:, 0]

    sess.close()

valX = valX[:, 0]
valY = valY[:, 0]

plt.plot(valX, valY, 'r--', label='sin(10x)')
plt.plot(valX, valY_[KERAS], 'g-', label=KERAS)
plt.plot(valX, valY_[TENSORFLOW], 'b-', label=TENSORFLOW)
plt.legend(loc='best', ncol=1)
plt.show()

您可以看到两者之间的区别: 正弦图 (10x)

环境:

  • 张量流GPU 1.10.0
  • 喀拉斯2.2.2

有人知道吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow 和 Keras 之间 Adam 的不同学习曲线 的相关文章

  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • python中函数变量的作用域

    假设我们有两个函数 def ftpConnect ftp FTP server ftp login ftp cwd path def getFileList ftpConnect files ftp nlst print files 如果我
  • 如何使用机器学习从数据序列计算状态图?

    通用配方 我有一个由一系列点组成的数据集 每个点有 12 个特征 我有兴趣检测此数据中的事件 在训练数据中我知道事件发生的时刻 当事件发生时 我可以在事件发生之前的点序列中看到可观察到的模式 该形态由大约 300 个连续点形成 我感兴趣的是
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 行为:如何从另一个文件导入步骤?

    我刚刚开始使用behave http pythonhosted org behave 一个Pythonic BDD框架 使用小黄瓜语法 http docs behat org guides 1 gherkin html 行为需要一个特征 例
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • Python While 循环,and (&) 运算符不起作用

    我正在努力寻找最大公因数 我写了一个糟糕的 运算密集型 算法 它将较低的值减一 使用 检查它是否均匀地划分了分子和分母 如果是 则退出程序 但是 我的 while 循环没有使用 and 运算符 因此一旦分子可整除 它就会停止 即使它不是正确
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • 在 Windows 上,运行“导入张量流”会生成“没有名为“_pywrap_tensorflow”的模块”错误

    在 Windows 上 TensorFlow 在执行后报告以下一个或两个错误import tensorflow陈述 No module named pywrap tensorflow DLL load failed 对我来说问题是 cuDN
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30

随机推荐