我可以在构造函数中指定 pandas DataFrame 索引名称吗?
换句话说,我想做以下事情:
df = pd.DataFrame({"a":[1,2],"b":[3,4]})
df.rename_axis(index='myindex', inplace=True)
Run Code Online (Sandbox Code Playgroud)
使用一行代码(仅调用构造函数)
这是代码:
from enum import Enum
class EFoo(str, Enum):
A = 'e1'
B = 'e2'
print(EFoo.A)
d = {
EFoo.A : 'eA',
EFoo.B : 'eB'
}
first_key = list(d.keys())[0]
first_key_type = type(first_key)
print("Keys: " + str(d.keys()))
print("Type of first key: " + str(first_key_type))
print("d[EFoo.A] = '" + d[EFoo.A] + "'")
print("d['e1'] = '" + d['e1'] + "'")
Run Code Online (Sandbox Code Playgroud)
这是输出(Python 3.5)
EFoo.A
Keys: dict_keys([<EFoo.A: 'e1'>, <EFoo.B: 'e2'>])
Type of first key: <enum 'EFoo'>
d[EFoo.A] = 'eA'
d['e1'] = 'eA'
Run Code Online (Sandbox Code Playgroud)
现在字典键的类型是<enum 'EFoo'>. …
我正在学习 TensorFlow 的图像分割教程。其中有以下几行:
train_dataset = train.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
train_dataset = train_dataset.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
Run Code Online (Sandbox Code Playgroud)
cache()作用?官方文档相当晦涩且自引用:缓存此数据集中的元素。
prefetch()作用?官方文档又相当晦涩难懂:创建一个从该数据集中预取元素的数据集。
conda 文档说当你使用
conda create --name myenv
Run Code Online (Sandbox Code Playgroud)
新环境
使用与您当前使用的 Python 版本相同的版本,因为您没有指定版本。
然而,对我来说情况并非如此。我有 Windows 10 和 Anaconda。我进入了默认创建的“基础”环境。
如果我跑
conda create --name testenv
Run Code Online (Sandbox Code Playgroud)
然后当我激活环境时
conda activate testenv
Run Code Online (Sandbox Code Playgroud)
没有Python。如果我写
python
Run Code Online (Sandbox Code Playgroud)
到控制台,Microsoft Store 已打开。
为了拥有 Python 解释器,我需要手动指定它
conda create --name testenv2 python=3.8
Run Code Online (Sandbox Code Playgroud) tf.compat 模块的目的是什么?看起来这个模块中只是复制了整个 Tensorflow API。该文件指出
用于 Python 2 与 3 兼容性的函数。
那么为什么会有一个“v1”和一个“v2”子模块呢?tf.compat 具体解决了哪些兼容性问题?
我有一个图像分割问题,我必须在 TensorFlow 2 中解决。
特别是我有一个由航拍图像与各自的面具配对组成的训练集。在面具中,地形为黑色,建筑物为白色。目的是预测测试集中图像的掩码。
我使用带有最终 Conv2DTranspose 的 UNet,带有 1 个过滤器和一个 sigmoid 激活函数。对最终 sigmoid 层的输出按以下方式进行预测:如果 y_pred>0.5,则为建筑物,否则为背景。
我想实现一个骰子的损失,所以我写了下面的函数
def dice_loss(y_true, y_pred):
print("[dice_loss] y_pred=",y_pred,"y_true=",y_true)
y_pred = tf.cast(y_pred > 0.5, tf.float32)
y_true = tf.cast(y_true, tf.float32)
numerator = 2 * tf.reduce_sum(y_true * y_pred)
denominator = tf.reduce_sum(y_true + y_pred)
return 1 - numerator / denominator
Run Code Online (Sandbox Code Playgroud)
我通过以下方式传递给 TensorFlow:
loss = dice_loss
optimizer = tf.keras.optimizers.Adam(learning_rate=config.learning_rate)
metrics = [my_IoU, 'acc']
model.compile(optimizer=optimizer, loss=loss, metrics=metrics)
Run Code Online (Sandbox Code Playgroud)
但在训练时 TensorFlow 抛出以下错误:
ValueError:没有为任何变量提供梯度:
python image-segmentation tensorflow loss-function tensorflow2.0
为什么math.nan不同于numpy.nan?
>>> import math
>>> import numpy as np
>>> math.nan is math.nan
True
>>> np.nan is np.nan
True
>>> np.nan is math.nan
False
Run Code Online (Sandbox Code Playgroud)
有两个不同的 NaN 有什么意义?
考虑这个例子:
library(dplyr)
df <- data.frame(a=1:5,b=6:10)
> df
a b
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
Run Code Online (Sandbox Code Playgroud)
colname <- "a"
df |> filter(!!as.symbol(colname)<3)
a b
1 1 6
2 2 7
Run Code Online (Sandbox Code Playgroud)
df |> filter(!!colname<3)
[1] a b
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
!!应用于字符串而不是符号会实现什么效果,为什么它会返回空数据帧而不是错误?
Anaconda对于支持和不支持 GPU 的 Tensorflow 有不同的软件包。
特别是,要安装带有 GPU 的 Tensorflow,您应该运行:
conda install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)
对于非 GPU 版本,您应该安装:
conda install tensorflow
Run Code Online (Sandbox Code Playgroud)
通过检查安装包的版本,conda安装Tensorflow版本2.1。
但截至今天,Tensorflow 的最新版本是 2.3。此外,正如Tensorflow 官方文档中所示,可以使用以下命令安装最新版本
pip install tensorflow
Run Code Online (Sandbox Code Playgroud)
文档中称该软件包适用于 Tensorflow 的 CPU 和 GPU 版本。此外,文档指出“对于 1.15 及更早版本”,CPU 和 GPU 的软件包是不同的。
鉴于 1.15 以上的任何版本的包都应该相同,为什么 Anaconda 在两个不同的包中提供 2.1?
我应该安装哪一个,pip 版本还是 conda 版本?Anaconda博客中的一篇文章指定conda提供的版本更快,但该文章是旧的(2018)并且引用了旧版本的Tensorflow(1.10)
我想用&in\&替换R&D。
我该怎么做?
stringr::str_replace("R&D","&","\\&")仍然给出R&D而不是R\&D,我不知道为什么。