Я столкнулся с такой же проблемой размера кучи java. У меня есть два решения, если вы используете java 5 (1.5).
1st: просто установите jdk1.6 и перейдите к настройкам eclipse и установите jre-путь jav1 1.6 по мере того, как вы установили
2nd: -Проверьте свой аргумент VM и пусть он будет тем, чем он является. просто добавьте одну строку ниже всех аргументов, присутствующих в аргументах VM, как -Xms512m -Xmx512m -XX: MaxPermSize = ... m (192m).
Я думаю, что это сработает ...
Нет никакой разницы в точности между a+b
и tf.add(a, b)
. Первый выводит на a.__add__(b)
, который отображается на tf.add
с помощью после строки в math_ops.py
_OverrideBinaryOperatorHelper(gen_math_ops.add, "add")
Единственная разница это имя узла в базовом графе add
вместо Add
. Вы можете вообще сравнивать вещи, глядя на базовое представление Графа, подобное этому
tf.reset_default_graph()
dtype = tf.int32
a = tf.placeholder(dtype)
b = tf.placeholder(dtype)
c = a+b
print(tf.get_default_graph().as_graph_def())
. Вы также можете увидеть это непосредственно, проверив метод __add__
. Существует дополнительный уровень косвенности, потому что это замыкание, но вы можете получить базовую функцию следующим образом:
real_function = tf.Tensor.__add__.im_func.func_closure[0].cell_contents
print(real_function.__module__ + "." + real_function.__name__)
print(tf.add.__module__ + "." + tf.add.__name__)
И вы увидите вывод ниже, что означает, что они называют одну и ту же базовую функцию
tensorflow.python.ops.gen_math_ops.add
tensorflow.python.ops.gen_math_ops.add
Вы можете видеть из tf.Tensor.OVERLOADABLE_OPERATORS
, что следующие специальные методы Python потенциально перегружены соответствующими версиями TensorFlow
{'__abs__',
'__add__',
'__and__',
'__div__',
'__floordiv__',
'__ge__',
'__getitem__',
'__gt__',
'__invert__',
'__le__',
'__lt__',
'__mod__',
'__mul__',
'__neg__',
'__or__',
'__pow__',
'__radd__',
'__rand__',
'__rdiv__',
'__rfloordiv__',
'__rmod__',
'__rmul__',
'__ror__',
'__rpow__',
'__rsub__',
'__rtruediv__',
'__rxor__',
'__sub__',
'__truediv__',
'__xor__'}
Эти методы описаны в ссылке Python 3.3.7 : эмуляция числовых типов. Обратите внимание, что модель данных Python не предоставляет способ перегрузить оператор присваивания =
, поэтому назначение всегда использует встроенную реализацию Python.