diff --git a/jupyterhub/base/Dockerfile b/jupyterhub/base/Dockerfile
index d913ef363f9ff9f5f5f2f956dc3772452915794a..3155711472a0a78d6a41573995a544e6303bb4f2 100755
--- a/jupyterhub/base/Dockerfile
+++ b/jupyterhub/base/Dockerfile
@@ -85,7 +85,42 @@ RUN mkdir -p /usr/local/venv && \
         neo \
         'mxnet-cu101>=1.6.0,<1.7.0' \
         && \
-    ipython kernel install --name=default
+    ipython kernel install --name=default --display-name "Python (Default)"
+
+RUN mkdir -p /usr/local/venv && \
+    python${PYTHON_VERSION} -m venv /usr/local/venv/tf2 && \
+    . /usr/local/venv/tf2/bin/activate && \
+    python${PYTHON_VERSION} -m pip install --upgrade \
+        pip==${PYTHON_PIP_VERSION} \
+        setuptools==${PYTHON_SETUPTOOLS_VERSION} && \
+    pip install tensorflow==2.3.1 && \
+    pip install \
+        wheel \
+        black \
+        isort \
+        pandas \
+        scipy \
+        pingouin \
+        statsmodels \
+        matplotlib \
+        seaborn \
+        brokenaxes \
+        tables \
+        xlrd \
+        hsluv \
+        ipympl \
+        ipywebrtc \
+        ipyvolume \
+        JPype1 \
+        PySide2 \
+        ipykernel \
+        tqdm \
+        sklearn \
+        ffmpeg-python \
+        neo \
+        'mxnet-cu101>=1.6.0,<1.7.0' \
+        && \
+    ipython kernel install --name=tf2 --display-name "Python (TensorFlow 2)"
 
 RUN apt-get update && \
     apt-get install -y \