所以我直接从sympy文档中尝试了一个例子,我收到了一个奇怪的错误.我正在使用python 3.2和sympy 0.7.3.我一直在ipython笔记本上工作,虽然我不认为这应该有所作为.错误是每当我创建一个"x"符号并尝试集成math.cos(x)时,我得到一个错误,说"无法将表达式转换为浮点数".
这是一个代码示例.这是从sympy文档中获取的.
import sympy
import math
x = sympy.Symbol('x')
sympy.integrate(x**2 * math.exp(x) * math.cos(x), x)
Run Code Online (Sandbox Code Playgroud)
结果的错误消息是:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-123-84e55454fb60> in <module>()
----> 1 sympy.integrate(x**2 * math.exp(x) * math.cos(x), x)
/usr/local/lib/python3.2/dist-packages/sympy/core/expr.py in __float__(self)
242 if result.is_number and result.as_real_imag()[1]:
243 raise TypeError("can't convert complex to float")
--> 244 raise TypeError("can't convert expression to float")
245
246 def __complex__(self):
TypeError: can't convert expression to float
Run Code Online (Sandbox Code Playgroud)
任何建议,将不胜感激.
我对 Google Earth Engine 还比较陌生,但有一个关于获取图像集合中每个图像的下载 URL 的问题。问题正是如此,鉴于我已将每个图像削减到合理的大小,如何获取图像集合中每个图像的下载 url 集。
请注意,我确实浏览了 Stackoverflow,发现了一个有关将单个图像下载到 google Drive 的现有问题,但该问题没有提供有关图像集合的任何信息。
如何使用Google Earth引擎的Python API下载图像
以下代码将生成 Landsat 8 图像的一些小图像块。每个补丁的大小只有少数 kb。
import ee
ee.Initialize()
col = ee.ImageCollection('LANDSAT/LC08/C01/T1').select('B8')
col.filterDate('1/1/2015', '1/30/2015')
boundary_region = ee.Geometry.Point([-2.40986111110000012, 26.76033333330000019]).buffer(300)
col.filterBounds(boundary_region)
def clipper(image):
return image.clip(region)
col.map(clipper)
Run Code Online (Sandbox Code Playgroud)
现在我想下载集合中的每张图像col
。
Earth Engine 提供了几种迭代图像集合的方法:map()
和iterate()
函数,但显然这两个函数都不适用于下载函数。
现在看来我可以使用以下函数生成单个图像的 url:
boundary_geojson = ee.Geometry.Polygon(boundary_region.bounds().getInfo().coordinates[0]).toGeoJSONString()
def downloader(image):
url = ee.data.makeDownloadUrl(
ee.data.getDownloadId({
'image': image.serialize(),
'scale': 30,
'filePerBand': 'false',
'name': 'test',
'region': boundary_geojson,
}))
return url
Run Code Online (Sandbox Code Playgroud)
请注意,由于某种原因,我似乎无法让变量boundary_geojson
正常工作。
现在这组 url 应该是一个简单的调用 …
我正在研究有关绘制动画的博客文章中的matplotlib.
一个示例,其中一个示例涉及等高线图——代码如下。但是,当我运行此代码时,我得到一个UserWarning
UserWarning: No contour levels were found within the data range.
warnings.warn("No contour levels were found")
Run Code Online (Sandbox Code Playgroud)
该图的代码如下。
x = np.linspace(-3,3,91)
t = np.linspace(0,25,30)
y = np.linspace(-3,3,91)
X3, Y3, T3 = np.meshgrid(x,y, t)
sinT3 = np.sin(2*np.pi*T3/T3.max(axis=2)[...,np.newaxis])
G = (X3**2 + Y3**2)*sinT3
contour_opts = {'levels': np.linspace(-9, 9, 10),
'cmap':'RdBu', 'linewidths': 2}
cax = ax.contour(x, y, G[..., 0], **contour_opts)
def animate(i):
ax.collections = []
ax.contour(x, y, G[..., i], **contour_opts)
anim = FuncAnimation(fig, animate, interval=100, frames = len(t)-1)
HTML(anim.to_html5_video())
Run Code Online (Sandbox Code Playgroud)
情节仍然有效,但我不断收到用户警告。 …
我正在尝试协调来自 TF“Graphs and Sessions”指南和 TF“Keras”指南和 TF Estimators 指南的信息。现在在前者中它说 tf.Session 使计算图可以访问物理硬件以执行图并训练模型。就像学习 TF 的初始教程要求您使用 Session 来运行任何东西:变量指南、张量指南等。但是,在 TF Keras 指南中,示例似乎在没有任何显式调用tf.Session
或通常with tf.Session() as sess:
的情况下运行Keras 模型也没有使用 Eager Execution。Estimators API 也是如此。
我有几个代码示例。其中一些使用对会话的调用,而另一些则不使用。我希望有人能澄清使用tf.Session
Keras 层或估算器的要求规则是什么。我的意思是,您似乎可以run_configs
为 keras 估算器或标准 TF.estimator 进行设置,并为多 GPU 等进行设置。
以下是功能 API 的 TF Keras 指南中的示例。请注意,没有调用会话:
inputs = tf.keras.Input(shape=(32,)) # Returns a placeholder tensor
# A layer instance is callable on a tensor, and returns a tensor.
x = layers.Dense(64, activation='relu')(inputs)
x = layers.Dense(64, activation='relu')(x)
predictions = layers.Dense(10, activation='softmax')(x) …
Run Code Online (Sandbox Code Playgroud) 我使用 Tensorflow 进行深度学习工作,但我对 Julia for ML 的一些功能很感兴趣。现在在 Tensorflow 中,协议缓冲区有一个明确的标准——这意味着 TFRecords 格式是将大量数据集加载到 GPU 以进行模型训练的最佳方式。我一直在阅读 Flux、KNET、文档以及其他论坛帖子,看看是否有关于最有效数据格式的任何特别建议。但我还没有找到。
我的问题是,是否有推荐的 Julia ML 库数据格式来促进训练?换句话说,是否有任何明确的数据集格式由于性能不佳而应该避免?
现在,我知道有一个Protobuf.jl
库,因此用户仍然可以使用协议缓冲区。我现在计划使用协议缓冲区,因为我可以为 Tensorflow 和 Julia 使用相同的数据格式。然而,我也发现了这篇有趣的 Reddit 帖子,内容是关于用户如何不使用协议缓冲区而只使用直接的 Julia Vectors。
https://www.reddit.com/r/MachineLearning/comments/994dl7/d_hows_julia_language_mit_for_ml/
我知道 Julia ML 库可能与数据存储格式无关。这意味着无论数据以何种格式存储,数据都会被解码为某种向量或矩阵格式。所以在这种情况下,我可以使用任何格式。但只是想确保我没有遗漏文档中的任何内容,或者由于使用错误的数据存储格式而导致的问题或性能下降。
有没有办法在文件创建时将数据集元数据保存在 Tensorflow TFRecords 文件中?
我一直在看新Tensorflow Datasets
包装,它真的很不错。他们做了很多很好的工作来简化将标准数据集放入 tensorflow 训练管道的过程。
这个工具的一个很好的特性是它保存了关于数据集的元数据,例如数据集中的示例数量,或训练和测试拆分中的样本等。该DatasetInfo()
对象将在内存中保存数据集的元数据。这是从该包的 github 存储库中获取的示例:
tfds.core.DatasetInfo(
name='mnist',
version=1.0.0,
description='The MNIST database of handwritten digits.',
urls=[u'http://yann.lecun.com/exdb/mnist/'],
features=FeaturesDict({
'image': Image(shape=(28, 28, 1), dtype=tf.uint8),
'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=10)
},
total_num_examples=70000,
splits={
u'test': <tfds.core.SplitInfo num_examples=10000>,
u'train': <tfds.core.SplitInfo num_examples=60000>
},
supervised_keys=(u'image', u'label'),
citation='"""
@article{lecun2010mnist,
title={MNIST handwritten digit database},
author={LeCun, Yann and Cortes, Corinna and Burges, CJ},
journal={ATT Labs [Online]. Available: http://yann. lecun. com/exdb/mnist},
volume={2},
year={2010}
}
"""',
)
Run Code Online (Sandbox Code Playgroud)
现在,如果您查看此对象,您会发现它包含 aFeaturesDict
和其他对象,当将 TFRecords 文件摄取到 Tensorflow …
我正在尝试使用scikit-learn
IterativeImputer()
. 问题是输入器会将pandas
数据帧作为输入,但会返回一个numpy
数组而不是原始数据帧。这是取自这篇文章的一个简单示例。
# Create an empty dataset
df = pd.DataFrame()
# Create two variables called x0 and x1. Make the first value of x1 a missing value
df['x0'] = [0.3051,0.4949,0.6974,0.3769,0.2231,0.341,0.4436,0.5897,0.6308,0.5]
df['x1'] = [np.nan,0.2654,0.2615,0.5846,0.4615,0.8308,0.4962,0.3269,0.5346,0.6731]
imputer = IterativeImputer(max_iter=10, random_state=42)
imputer.fit(df)
imputed_df = imputer.transform(df)
imputed_df
Run Code Online (Sandbox Code Playgroud)
问题是当numpy
数组返回时,列名和其他元数据被删除。我当然可以从原始数据框中手动提取该元数据,然后重新应用它,但这似乎有点麻烦。Pandas
有自己的输入法,Dataframe.fillna()
但算法并不像scikit
那些算法那么复杂。
那么有没有办法将输入器拟合到数据帧并从结果返回数据帧。
我需要使用 Tensorflow 2.0 设置一个 AWS EC2 GPU 实例。我看到的所有文档都表明,当前的 AWS AMI 映像仅支持 Tensorflow 1.14 或 1.15,而不支持 Tensorflow 2.0。因此,我想知道在 AWS 实例上获得 Tensorflow-gpu 2.0 的最佳方法是什么。
我可以创建一个 EC2 GPU 实例,安装 Nvidia 驱动程序,然后使用nvidia-docker
和安装一个 docker 实例,Tensorflow 2.0.
或者使用 Tensorflow 1.14 安装 AWS AMI 映像然后升级到 Tensorflow 2.0 是否更容易?目前尚不清楚哪种方法更有意义。
欢迎大家提出意见。
我是 Pytorch 的新手,但它看起来很不错。我唯一的问题是什么时候使用tensor.to(device)
or Module.nn.to(device)
。
我正在阅读有关此主题的文档,它表明此方法会将张量或模型移动到指定的设备。但是我不清楚这需要哪些操作,如果我不使用.to()
正确的时间会出现什么样的错误?
例如,如果我只是创建一个张量,我想象张量存储在 CPU 可访问的内存中,直到我将张量移动到 GPU。一旦张量在 GPU 上,GPU 就会对该张量执行任何数学运算。
但是,我是否必须担心不小心将数据张量传输到 GPU 而没有将模型传输到 GPU?这只会给我带来直接的错误,还是会在幕后进行大量昂贵的数据传输。这个例子对我来说很容易测试,但我只是想知道它可能不那么明显的其他情况。
任何指导都会有所帮助。
我正在尝试使用链式方法更新 Rust 结构。我找到了一种方法来做到这一点,但我不确定我下面的代码是否是惯用的 Rust,而不仅仅是一种解决方法。
特别是,我.to_owned()
在链式方法的末尾使用了返回借用的结构体。代码编译并运行得很好。这是最小的例子。
//struct.rs
#[derive(Debug, Default, Clone, PartialEq)]
pub struct ModelDataCapture {
run: i32,
year: i32,
}
impl ModelDataCapture {
pub fn new() -> Self {
ModelDataCapture::default()
}
pub fn set_run(&mut self, run: i32) -> &mut ModelDataCapture {
self.run = run;
self
}
pub fn set_year(&mut self, year: i32) -> &mut ModelDataCapture {
self.year = year;
self
}
}
//main.rs
let data_capture = ModelDataCapture::new()
.set_run(0)
.set_year(1)
.to_owned(); // <<< QUESTION
println!("here is the data capture {:?}", …
Run Code Online (Sandbox Code Playgroud) python ×8
tensorflow ×3
amazon-ec2 ×1
contour ×1
dataframe ×1
flux.jl ×1
gpu ×1
image ×1
julia ×1
keras ×1
math ×1
matplotlib ×1
numpy ×1
pandas ×1
plot ×1
python-3.x ×1
pytorch ×1
rust ×1
scikit-learn ×1
struct ×1
sympy ×1
tensor ×1